Авторские статьи Написание трейнеров для игр.

Discussion in 'Статьи' started by WAR!9G, 2 Jan 2009.

  1. WAR!9G

    WAR!9G Elder - Старейшина

    Joined:
    24 Jun 2007
    Messages:
    112
    Likes Received:
    89
    Reputations:
    1
    В течении суток, статья будет дополнена. (исходники, ссылки, оформление в том числе)

    Интро:

    Все мы когда то, давно или недавно, играли в игры - в настольные, спортивные, а 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. Интересующий праметр - время.

    Как видите, кода по минимуму, я не стал использовать проверок на существование окна программы. Так как смысла в том чтобы сворачивать-разворачивать приложение не вижу, гораздо практичнее будет пользоватьсялюбым джойнером и склеить файл игры и трейнер воедино.

    Code:
    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) при информационной поддержке Свободной Энциклопедии ;)
     
    #1 WAR!9G, 2 Jan 2009
    Last edited: 2 Jan 2009
    2 people like this.
  2. vvs777

    vvs777 Elder - Старейшина

    Joined:
    16 Nov 2004
    Messages:
    394
    Likes Received:
    213
    Reputations:
    4
    Бляха муха!
    ГТА уже давно на свалке истории =)

    надо мне откопать свои старые сырцы прототипа Comrade Bot'а (да да, прототип был под MTA:Vice City), которые кроме двойников, заставляли клиент забыть о наличии артмани на компе, дружили старую версию клиента с новой версий сервера (ибо новый клиент палил смену переменных), а также трюк, позволявший сделать беспалевное безсмертие (а именно не морозить здоровье, ибо это палится, а морозить броню)...
    вот вспомню - напишу статейку...
     
    1 person likes this.
  3. DVD_RW

    DVD_RW Banned

    Joined:
    27 Apr 2008
    Messages:
    0
    Likes Received:
    202
    Reputations:
    -36
    ArtMoney & DetectiveStory + прямые руки.exe ну и mozg.dll - взломанная игра :D
     
  4. Fooog

    Fooog Elder - Старейшина

    Joined:
    19 Sep 2008
    Messages:
    307
    Likes Received:
    170
    Reputations:
    12
    А на THAW не прёт!
     
  5. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    А для он лайн игр типа WoW подойдет и WPEpro ... Робит и на Оффе тока пару дней после выхода бага в пабик -(( Потом бан
     
  6. Pawer23

    Pawer23 Banned

    Joined:
    3 Nov 2008
    Messages:
    0
    Likes Received:
    8
    Reputations:
    -3
    ахахахах шутиш в онлайн играх тренер не будет тебе работать))
     
  7. vvs777

    vvs777 Elder - Старейшина

    Joined:
    16 Nov 2004
    Messages:
    394
    Likes Received:
    213
    Reputations:
    4
    а х.з. мож че и на клиенте хранится...
     
  8. diznt

    diznt Elder - Старейшина

    Joined:
    31 Jan 2008
    Messages:
    432
    Likes Received:
    164
    Reputations:
    -19
    В игре тест драйв происходит вроде как патчинг клиента когда клиент запущен
    (на деньги) и потом в тупую сохр. и все
    Онлайн гейм (не мой патч или что то в этом роде, а просто нашол в интернете)

    Так что в принцыпе как то возможно если на клиенте плохая защита (далее будет не совсем о трейнере а скорей всего о баге)
    Так же еще напомню что когда то в компании STEAM (она выпускает лиц. кс и прочии игры) был баг что когда патчишь клиент стима спец. прогой то у твоего акка менялся STEAM_ID (спец. индефикатор для игры на лиц. сервах кс, то есть замена STEAM_ID + крякнутый стим = игра на лиц. серверах лиц. игр от STEAM (такие игры как l4d, css, cs1.6, TF2 и т.д.))
    Хотя в STEAM'е было бы логичнее стим айди писать на ДБ STEAM
    Но щас такой баг в STEAM'е прикрыт
     
  9. S[N]EP

    S[N]EP Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    102
    Likes Received:
    28
    Reputations:
    10
    Ну WPE - это не трейнер а перехватчик Пакетов.... и работает он прекрасно
     
  10. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    Ага в свое время, через впе такие дела творил.. Не сочтите за рекламу но у меня даже свой сайт по WpEpro и багам для он лайн игр.. Если кому адрес то в ЛС
     
  11. CWT

    CWT Elder - Старейшина

    Joined:
    3 Oct 2008
    Messages:
    29
    Likes Received:
    9
    Reputations:
    0
    Да, всё спокойно делается через WPE Pro, и Cheat Engine. Второе — редактирование памяти (клиента), и работает много где, надо сказать мало где есть на всё проверка в сервере, например в RFOnline на серверной стороне жутко мало проверок, и багов к счастью хоть отваливай. Поэтому обходя проверки клиента, можно было например одевать щит с двуручным мечом и делать много похожих вещей.
     
  12. Tigger

    Tigger Elder - Старейшина

    Joined:
    27 Aug 2007
    Messages:
    936
    Likes Received:
    527
    Reputations:
    204
    Ломайте Линейку, задроты))
     
    2 people like this.
  13. regnet

    regnet Active Member

    Joined:
    12 Mar 2009
    Messages:
    27
    Likes Received:
    106
    Reputations:
    -5
    Вещи как для меня очень не нужные!Вначале тренера потом читы а потом не в одну игру норм не поиграть!
     
    1 person likes this.
  14. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    О_о....
    ArtMoney отдыхает...
     
  15. Lide

    Lide Member

    Joined:
    25 Mar 2009
    Messages:
    21
    Likes Received:
    6
    Reputations:
    0
    есть вот такой вот вопрос - возможно соорудить трейнер для онлайн браузерской игры?
     
  16. Banderos_Russia

    Banderos_Russia Elder - Старейшина

    Joined:
    11 Jun 2007
    Messages:
    60
    Likes Received:
    18
    Reputations:
    0
    нет
     
  17. ртуть

    ртуть Elder - Старейшина

    Joined:
    31 Aug 2007
    Messages:
    314
    Likes Received:
    389
    Reputations:
    29
    ЕСТЬ!

    Intеrnet Crack + твои моги :rolleyes:
     
  18. LiteMentaL

    LiteMentaL Elder - Старейшина

    Joined:
    24 Feb 2008
    Messages:
    12
    Likes Received:
    314
    Reputations:
    7
    в онлайн играх ни трейнеры ни артмани не пашут, только Перехватчики пакетов, или специальные патчи
     
  19. Ctacok

    Ctacok Banned

    Joined:
    19 Dec 2008
    Messages:
    732
    Likes Received:
    646
    Reputations:
    251
    Если не флэш, то зачем тогда этот форум?)
     
  20. StocKeR

    StocKeR Member

    Joined:
    2 Sep 2007
    Messages:
    0
    Likes Received:
    25
    Reputations:
    0
    На дисках Игромании этих трейнеров куча была. Щас помоему их время уже прошло.
    А вообще играйте честно)
     
    3 people like this.