что такое трейнеры для игр
Трейнер
Тре́нер, тре́йнер (англ. trainer) — программа, предназначенная для изменения поведения игры (например, делающие игрока бессмертным), обычно работающая непосредственно с оперативной памятью компьютера.
В 1980-х и 1990-х годах трейнеры обычно встраивались хакерами прямо в код игр. При запуске игры, сначала запускался трейнер с диалоговым окном «Вы хотите использовать читы?» Дальше выполнялся код игры. В названии трейнера использовались знаки сложения (+), по одному на каждую опцию трейнера. Например, «Группа Хакеров представляет: Игра+++» (три опции, например, бессмертие, бесконечная амуниция и телепортация).
Современные трейнеры обычно запускается как отдельная программа (до игры) и в своих названиях используют один знак сложения с числом опций после него, например, «Doom 3 Trainer +15». Кроме того, современные трейнеры работают с оперативной памятью игры, а не её исполняемым файлом, поскольку внесение изменений в исполняемый файл осложняется системами защиты от копирования.
Методы создания трейнеров
Для создания трейнеров используются дамперы памяти, отладчики и дизассемблеры. Самый простой способ создать трейнер — поискать в памяти значения, совпадающие с нужным игровым параметром. Затем изменить его и поискать в получившемся списке снова. После нескольких итераций скорее всего останется небольшой список адресов, значения по которым можно попытаться изменить. Существует множество утилит (ArtMoney, Cheat’o’Matic…), автоматизирующих процесс поиска и изменения значений.
В некоторых случаях нужное игровое значение постоянно меняет свое положение в памяти. В этом случае можно попытаться найти указатель на него (возможно с небольшим смещением, если игровое значение находится в какой-либо структуре данных). Если и указатель меняет положение в памяти, то можно поискать указатель на этот указатель и.т.д. Также можно поставить точки останова на обращения к игровому значению и проанализировать код, который их читает или изменяет.
Если игровое значение является полем некоторого класса, то можно искать экземпляры этого класса по указателю на таблицу виртуальных методов. Найти таблицы виртуальных методов не сложно из-за их специфической структуры. Кроме того, они часто содержат указатель на имя класса. При поиске экземпляров класса желательно определять не удален ли он по флагам менеджера памяти (который зависит от языка программирования, на котором написана игра).
Cоздание трейнера
Трейнеры создаются следующими способами:
Существует 3 типа игр, для которых трейнеры могут создаваться разными способами:
Защита от трейнеров
Если в игре имеется официальная таблица рекордов или игра является сетевой (и не все расчёты идут на стороне сервера), то существование трейнеров губит игру. В этом случае приходится встраивать систему защиты от трейнеров, поскольку системы защиты от копирования не справляются с этой задачей. Для этого важнейшие игровые параметры шифруются (и расшифровываются на короткое время перед использованием) или создается зашифрованная копия (с которой оригинальный параметр постоянно сравнивается). Для обхода таких защит не обойтись без дизассемблирования программы.