Как создавать читы(Урок по созданию,сделать) Уроки по созданию читов для онлайн игр.
В
этой статье я расскажу тебе, как делаются читы для игр. На самом деле
создавать их очень просто! В kernel.dll есть функции для дебага,
которыми мы будем пользоваться. С их помощью можно читать и изменять
значения в памяти гамы! Вот это нам и надо!.
Для создания читов тебе понадобятся 3 вещи:
1. Delphi какой-нибудь последней версии.
2. GameHack (или что-нибудь вроде этого). Но лучше GameTrainer (потому что халявный).
3. Прямые руки!
Для начала ты должен разузнать кое-что о гаме.
1. Название окна. Ну, название окна каждый ламер находить умеет, тут уметь-то ничего не надо.
2.
Адрес в памяти. Чтобы нам что-то изменить в памяти, нам нужно нужно
конкретно знать где и че изменять. Поэтому мы сначала найдем адрес в
памяти, а потом уже все хакнем. Его ты найдешь с помощью специальной
проги - GameTrainer (можно также GameHack или что-то такое).
Зайди
в гейм. Запомни значение денег/жизней/фрагов или чего захочешь. Теперь в
GameTrainer'е в первом поле выбери процесс, а во второе пиши то
значение, которое ты только что запомнил (хотя ты уже, наверное, забыл).
http://movies.kiev.ua/anime/359-anime.html .Сейчас 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 и поймешь что к
чему.