Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Написание трейнеров для игр. |

02.01.2009, 01:19
|
|
Участник форума
Регистрация: 24.06.2007
Сообщений: 299
Провел на форуме: 467372
Репутация:
212
|
|
Написание трейнеров для игр.
В течении суток, статья будет дополнена. (исходники, ссылки, оформление в том числе)
Интро:
Все мы когда то, давно или недавно, играли в игры - в настольные, спортивные, а c внедрением в нашу жизнь вычислительной техники и в компьютерные. В силу своего возраста, привычек, или просто желания расслабится и поднять настроение после трудного рабочего дня.
Казалось бы игра даёт неограниченные возможности самореализации: в качестве гонщика, пилота, киллера или даже бога. Но человек так устроен - достигнув определённой высоты, он всё равно хочет чего-то большего и потому находит новую цель или новые возможности.
Понятно, что при создании игр, разработчики прежде всего руководствуются если не своим вкусом, то вкусом руководителя проекта, иногда статистикой. Но ведь иногда так и хочется, чтобы эффекты замедления из Матрицы, перекочевали в игру Индиана Джонс, а не самый поворотливый герой игровой индустрии - киллер Hitman, научился бегать по стенам. Для этих целей и создаются трейнеры.
Теория:
Трейнер (англ. trainer) — программа, предназначенная для изменения поведения игры, обычно работающая непосредственно с оперативной памятью компьютера.
В 1980-х и 1990-х годах, тренеры обычно встраивались хакерами прямо в код игр. При запуске, сначала запускался тренер с диалоговым окном "Вы хотите использовать читы?", дальше выполнялся код игры. В названии тренера использовались знаки сложения (+), по одному на каждую опцию тренера. Например, "Группа Хакеров представляет: Doom+++" - три опции, например, бессмертие, бесконечная аммуниция и телепортация.
Современные же тренеры, обычно запускается как отдельная программа, до игры, и в своих названия используют один знак сложения с числом опций после него, например, "Doom Trainer +15". Кроме того, современные тренеры работают с оперативной памятью игры, а не её исполняемым файлом, поскольку внесение изменений в исполняемый файл осложняется системами защиты от копирования.
Методы:
Для создания тренеров используются дамперы памяти, отладчики и дизассемблеры. Самый простой способ создать тренер - поиск значения в памяти, совпадающего с нужным игровым параметром. Затем изменить его и поискать в получившемся списке снова. После нескольких итераций скорее всего останется небольшой список адресов, значения по которым можно попытаться изменить. Существует множество утилит таких как: ArtMoney, Cheat'o'Matic - автоматизирующих процесс поиска и изменения значений.
В некоторых случаях нужное игровое значение постоянно меняет свое положение в памяти. В этом случае можно попытаться найти указатель на него возможно с небольшим смещением, если игровое значение находится в какой-либо структуре данных. Если и указатель меняет положение в памяти, то можно поискать указатель на этот указатель и.т.д. Также можно поставить точки остановки на обращения к игровому значению и проанализировать код, который их читает или изменяет.
Подведём итог - так что же такое, DMA? DMA (Dynamic Memory Allocation) - это динамическое распределение памяти. Проще говоря, DMA игры, в отличие от не-DMA игр, хранят используемые ими значения по адресам в памяти, которые меняются после каждого запуска игры. Все игры под DOS - не используют DMA, в то время как большинство игр под Win32 его используют.
Практика:
В этой статье я буду рассматривать принцыпы написания трейнеров для DMA и не-DMA игр. В рунете совсем мало информации на эту тему, уже имеющиеся примеры кода, написания тренеров зачастую не проверялись на практике, а значит могут попросту запутать новичков. Всё что нам потребуется так это язык программирования Delphi и отладчик TSearch.
- Не DMA игры:
Запускаем TSearch. Нажав Open Process, выбераем из списка интересующий нас процесс. Далее, используя поиск ищем, отсеиваем а затем и определяем адрес интересующего значения. В качестве примера я буду рассматривать игру GTA - Vice City. Интересующий праметр - время.
Как видите, кода по минимуму, я не стал использовать проверок на существование окна программы. Так как смысла в том чтобы сворачивать-разворачивать приложение не вижу, гораздо практичнее будет пользоватьсялюбым джойнером и склеить файл игры и трейнер воедино.
Код:
var
Form1: TForm1;
WindowName: integer;
ProcessId: integer;
ThreadId: integer;
HandleWindow: Integer;
write: cardinal;
buf: dword;
const
WindowTitle = 'GTA: Vice City';
Address = $0097F266;
NumberOfBytes = 4;
implementation
{$R *.dfm}
procedure s1ow_mode;
begin
WindowName := FindWindow(nil,WindowTitle);
ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
buf:=$3E90;
WriteProcessMemory(HandleWindow, ptr(address), @buf, 4, write);
end;
procedure nos1_mode;
begin
WindowName := FindWindow(nil,WindowTitle);
ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId);
HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
buf:=$3F80;
WriteProcessMemory(HandleWindow, ptr(address), @buf, 4, write);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if (GetAsyncKeyState(VK_LBUTTON) <> 0) then
begin
s1ow_mode;
end;
if (GetAsyncKeyState(VK_RBUTTON) <> 0) then
begin
nos1_mode;
end;
end;
Защита:
Если в игре имеется официальная таблица рекордов или игра является сетевой и не все расчеты идут на стороне сервера, то существование тренеров губит игру. В этом случае приходится встраивать систему защиту от тренеров, поскольку системы защиты от копирования не справляются с этой задачей. Для этого важнейшие игровые параметры шифруются и расшифровываются на короткое время перед использованием или создается зашифрованная копия с которой оригинальный параметр постоянно сравнивается. Для обхода таких защит не обойтись без дизассемблирования программы.
WAR!9G (c) при информационной поддержке Свободной Энциклопедии 
Последний раз редактировалось WAR!9G; 02.01.2009 в 01:32..
|
|
|

02.01.2009, 17:14
|
|
Познавший АНТИЧАТ
Регистрация: 16.11.2004
Сообщений: 1,257
Провел на форуме: 1331503
Репутация:
454
|
|
Бляха муха!
ГТА уже давно на свалке истории =)
В этом случае приходится встраивать систему защиту от тренеров
надо мне откопать свои старые сырцы прототипа Comrade Bot'а (да да, прототип был под MTA:Vice City), которые кроме двойников, заставляли клиент забыть о наличии артмани на компе, дружили старую версию клиента с новой версий сервера (ибо новый клиент палил смену переменных), а также трюк, позволявший сделать беспалевное безсмертие (а именно не морозить здоровье, ибо это палится, а морозить броню)...
вот вспомню - напишу статейку...
|
|
|

02.01.2009, 18:11
|
|
Banned
Регистрация: 27.04.2008
Сообщений: 683
Провел на форуме: 3248203
Репутация:
628
|
|
ArtMoney & DetectiveStory + прямые руки.exe ну и mozg.dll - взломанная игра 
|
|
|

02.02.2009, 22:54
|
|
Постоянный
Регистрация: 19.09.2008
Сообщений: 511
Провел на форуме: 1866685
Репутация:
340
|
|
Сообщение от DVD_RW
ArtMoney & DetectiveStory - взломанная игра 
А на THAW не прёт!
|
|
|

11.02.2009, 23:44
|
|
Участник форума
Регистрация: 01.09.2007
Сообщений: 203
Провел на форуме: 812964
Репутация:
302
|
|
А для он лайн игр типа WoW подойдет и WPEpro ... Робит и на Оффе тока пару дней после выхода бага в пабик -(( Потом бан
|
|
|

12.02.2009, 08:23
|
|
Banned
Регистрация: 03.11.2008
Сообщений: 34
Провел на форуме: 223530
Репутация:
19
|
|
Сообщение от Assembler
А для он лайн игр типа WoW подойдет и WPEpro ... Робит и на Оффе тока пару дней после выхода бага в пабик -(( Потом бан
ахахахах шутиш в онлайн играх тренер не будет тебе работать))
|
|
|

13.02.2009, 14:06
|
|
Познавший АНТИЧАТ
Регистрация: 16.11.2004
Сообщений: 1,257
Провел на форуме: 1331503
Репутация:
454
|
|
ахахахах шутиш в онлайн играх тренер не будет тебе работать))
а х.з. мож че и на клиенте хранится...
|
|
|

13.02.2009, 20:53
|
|
Постоянный
Регистрация: 31.01.2008
Сообщений: 643
Провел на форуме: 6128108
Репутация:
445
|
|
В игре тест драйв происходит вроде как патчинг клиента когда клиент запущен
(на деньги) и потом в тупую сохр. и все
Онлайн гейм (не мой патч или что то в этом роде, а просто нашол в интернете)
Так что в принцыпе как то возможно если на клиенте плохая защита (далее будет не совсем о трейнере а скорей всего о баге)
Так же еще напомню что когда то в компании STEAM (она выпускает лиц. кс и прочии игры) был баг что когда патчишь клиент стима спец. прогой то у твоего акка менялся STEAM_ID (спец. индефикатор для игры на лиц. сервах кс, то есть замена STEAM_ID + крякнутый стим = игра на лиц. серверах лиц. игр от STEAM (такие игры как l4d, css, cs1.6, TF2 и т.д.))
Хотя в STEAM'е было бы логичнее стим айди писать на ДБ STEAM
Но щас такой баг в STEAM'е прикрыт
|
|
|

13.02.2009, 22:46
|
|
Познающий
Регистрация: 29.08.2008
Сообщений: 86
Провел на форуме: 789539
Репутация:
53
|
|
Сообщение от Pawer23
ахахахах шутиш в онлайн играх тренер не будет тебе работать))
Ну WPE - это не трейнер а перехватчик Пакетов.... и работает он прекрасно
|
|
|

16.02.2009, 23:56
|
|
Участник форума
Регистрация: 01.09.2007
Сообщений: 203
Провел на форуме: 812964
Репутация:
302
|
|
Ага в свое время, через впе такие дела творил.. Не сочтите за рекламу но у меня даже свой сайт по WpEpro и багам для он лайн игр.. Если кому адрес то в ЛС
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|