Трейнер
Тре́нер, тре́йнер (англ. trainer) — программа, предназначенная для изменения игровых параметров (например, «очков жизни», чтобы сделать игрока «бессмертным»), обычно они работают непосредственно с оперативной памятью компьютера. Наиболее полезен для игр, в которых не предусмотрены чит-коды.
В 1980-х и 1990-х годах трейнеры обычно встраивались хакерами прямо в код игр. При запуске игры сначала запускался трейнер с диалоговым окном «Вы хотите использовать читы?» Далее выполнялся код игры. В названии трейнера использовались знаки сложения (+), по одному на каждую опцию трейнера. Например, «Группа Хакеров представляет: Игра+++» (3 опции, например: бессмертие, бесконечные боеприпасы и телепортация).
Современные трейнеры обычно запускаются как отдельная программа (до игры) и в своих названиях используют один знак сложения с числом опций после него, например, «Doom 3 Trainer +15». Кроме того, современные трейнеры работают с оперативной памятью игры, а не её исполняемым файлом, поскольку внесение изменений в исполняемый файл осложняется системами защиты от копирования.
Методы создания трейнеров
Для создания трейнеров используются дамперы памяти, отладчики и дизассемблеры. Самый простой способ создать трейнер — поискать в памяти значения, совпадающие с нужным игровым параметром. Затем изменить его и поискать в получившемся списке снова. После нескольких итераций скорее всего останется небольшой список адресов, значения по которым можно попытаться изменить. Существует множество утилит (ArtMoney, Cheat’o’Matic…), автоматизирующих процесс поиска и изменения значений.
В некоторых случаях нужное игровое значение постоянно меняет своё положение в памяти. В этом случае можно попытаться найти указатель на него (возможно с небольшим смещением, если игровое значение находится в какой-либо структуре данных). Если и указатель меняет положение в памяти, то можно поискать указатель на этот указатель и т. д. Также можно поставить точки останова на обращение к адресу игрового значения и проанализировать код, который их читает или изменяет.
Если игровое значение является полем некоторого класса, то можно искать экземпляры этого класса по указателю на таблицу виртуальных методов. Найти таблицы виртуальных методов не сложно из-за их специфической структуры. Кроме того, они часто содержат указатель на имя класса. При поиске экземпляров класса желательно определять не удален ли он по флагам менеджера памяти (который зависит от языка программирования, на котором написана игра).
Создание трейнера
Трейнеры создаются следующими способами:
- С помощью программ
- сканер памяти (TSearch, ArtMoney, Cheat Engine, GodGame)
- отладчик (SoftIce, OllyDbg, встроенный в TSearch, Cheat Engine, GodGame)
- Написание трейнера на различных языках программирования.
- С помощью программ для автоматического создания трейнеров (TMK, GTS, Trainer Creation Kit, Cheat Engine, GodGame)
Существует 3 типа игр, для которых трейнеры могут создаваться разными способами:
- простая (запись в память осуществляется напрямую по адресу)
- DMA (динамическое распределение памяти. Если в игре присутствует DMA «технология», то адрес с необходимым для вас значением будет изменяться при каждом перезапуске или переходе на новый уровень)
- защищенная (игра, которая защищена каким-либо протектором, создание трейнеров для таких игр бывает трудоёмким)
Защита от трейнеров
Если в игре имеется официальная таблица рекордов или игра является сетевой (и не все расчёты идут на стороне сервера), то существование трейнеров губит дух игры. В этом случае приходится встраивать систему защиты от трейнеров, поскольку системы защиты от копирования не справляются с этой задачей. Для этого важнейшие игровые параметры шифруются (и расшифровываются на короткое время перед использованием) или создается зашифрованная копия (с которой оригинальный параметр постоянно сравнивается). Для обхода таких защит не обойтись без дизассемблирования программы.
Трейнеры и вирусы
Трейнеры могут распознаваться антивирусным ПО как вирус/троян или потенциально опасной программой. Это происходит из-за того что трейнеры, это как правило программы, которые перехватывают нажатия клавиш и меняют содержимое памяти других программ (игр) и в зависимости от настроек эвристического анализатора конкретного антивируса могут быть заблокированы или удалены. Как правило, это ложные срабатывания хотя есть и исключения[1].
Примечания
- Почему некоторые антивирусы распознают трейнеры для игр как вирусы? . chemax.ru. Дата обращения: 31 марта 2018.