Последние комментарии
Avatar User
Написал Andruxa в 16:29
Avatar User
Написал Mishin в 14:21
Avatar User
Написал cssomsk в 11:06


Image News

Описание:
Как создавать читы(Урок по созданию,сделать) Уроки по созданию читов для онлайн игр.

В этой статье я расскажу тебе, как делаются читы для игр. На самом деле создавать их очень просто! В kernel.dll есть функции для дебага, которыми мы будем пользоваться. С их помощью можно читать и изменять значения в памяти гамы! Вот это нам и надо!.

Для создания читов тебе понадобятся 3 вещи:

1. Delphi какой-нибудь последней версии.
2. GameHack (или что-нибудь вроде этого). Но лучше GameTrainer (потому что халявный).
3. Прямые руки!

Для начала ты должен разузнать кое-что о гаме.

1. Название окна. Ну, название окна каждый ламер находить умеет, тут уметь-то ничего не надо.

2. Адрес в памяти. Чтобы нам что-то изменить в памяти, нам нужно нужно конкретно знать где и че изменять. Поэтому мы сначала найдем адрес в памяти, а потом уже все хакнем. Его ты найдешь с помощью специальной проги - GameTrainer (можно также GameHack или что-то такое).

Зайди в гейм. Запомни значение денег/жизней/фрагов или чего захочешь. Теперь в GameTrainer'е в первом поле выбери процесс, а во второе пиши то значение, которое ты только что запомнил (хотя ты уже, наверное, забыл). Сейчас GameTrainer выдаст тебе большое количество адресов, но нам они все нафиг не нужны! Поэтому измени это значение как-нибудь(потрать несколько пуль, купи че-нибудь, убей кого-нибудь и т.д.). Теперь снова вводи это значение в GameTrainer, только в этот раз нажимать надо не Find, а Seive! И так пока останется минимальное количество адресов.

3. Тип данных. Тип данных играет немаловажную роль! Основываясь на нем, ты будешь делать чит, а также определять максимальное значение Вот примеры:

byte: 256; 1 байт;
word: 65536; 2 байта;
dword: 4294967296; 4 байта;

HACKING

Здесь я приведу пример создания чита для Counter-Strike'a v1.3, т.к. по-моему это самая популярная игра. Чит нам будет жизней до фига делать! Единственное, что плохо - он будет работать только если ты создал сервак и если у тебя Software Video Mode. Можно сделать и под OpenGl, но там адреса другие, потому что эти режимы занимают разное количество памяти.

Мы будем использовать вот эти API функции (почитай о них в справке):

FindWindow
GetWindowThreadProcessId
OpenProcess
ReadProcessMemory
WriteProcessMemory
CloseHandle

Сначало обЪяви вот это дерьмо:

const
WindowTitle = 'Half-Life';// названия окна
Addr_Health1 = $00137A54;
Addr_Health2 = $00138938;
Addr_Health3 = $01CBA38C;
// адреса в памяти

var
Wnd : THandle;// хэндл окна
ProcessId : integer;// пид (не п*д*р)
pokevalue : single;
// само значение (про типы данных помнишь?)
ProcHandle : integer;// хэндл процесса
NumberOfBytes: byte;// кол-во байтов
rw : cardinal;// чтение/запись

Теперь добавь на форму Edit и Button, а по нажатию button'а напиши следующее:

begin
Wnd := FindWindow(nil,WindowTitle); // получаем хэндл окна
if Wnd = 0 then // если гама не запущена, то обламываем лама
begin
MessageBox(0,'Запусти КС, козел','Ошибка в ДНК!',MB_OK + MB_ICONERROR);
exit;
end;

try
pokevalue := StrToInt(Edit1.Text); // получаем кол-во хп, введенное в Edit
except
MessageBox(0,'Введи хп, козел','Ошибка в ДНК!',MB_OK + MB_ICONERROR);
exit;
end;

GetWindowThreadProcessId(Wnd, @ProcessId); // получаем PID
ProcHandle := OpenProcess(PROCESS_ALL_ACCESS,false,ProcessId);
// получаем хэндл процесса

NumberOfBytes := 4;// в данном случае 4 байта,
// а это значит, что максимально значение
// == 2564 (~4 миллиарда хп )

WriteProcessMemory(ProcHandle,ptr(Addr_Health1),@p okevalue,NumberOfBytes,rw);
WriteProcessMemory(ProcHandle,ptr(Addr_Health2),@p okevalue,NumberOfBytes,rw);
WriteProcessMemory(ProcHandle,ptr(Addr_Health3),@p okevalue,NumberOfBytes,rw);
// хакаем игру

Closehandle(ProcHandle);
// закругляемся
end;

Можешь в чит добавить одну фишку: используя функцию ReadProcessMemory можно
вставить кол-во хп в свою прогу, и тут-же изменить на другое
А это можно сделать вот так:

ReadProcessMemory(ProcHandle,ptr(Addr_Health1),@po kevalue,4,rw);
Edit1.Text := FloatToStr(pokevalue);

Я так и быть дам тебе адреса на OpenGl и Direct3D, чтобы ты потренировался.

Software_Address_Health1 = $00137A54;
Software_Address_Health2 = $00138938;
Software_Address_Health3 = $01CBA38C;

OpenGl_Address_Health1 = $00137BA8;
OpenGl_Address_Health2 = $00138A88;
OpenGl_Address_Health3 = $01CA64DC;

D3D_Address_Health1 = $00137BA8;
D3D_Address_Health2 = $00138A88;
D3D_Address_Health3 = $01CA64DC;

Тут вроде все ясно где и что.

Запомни, что это для КСа, поэтому тот же код не потянет на некоторые гамы! Там уж сами разбирайтесь... Поседишь где-нибудь часика 2 и поймешь что к чему.
Всего комментариев: 0