Тренер (игры) - Trainer (games)

Игровые тренеры это программы, предназначенные для изменения памяти компьютерная игра тем самым изменяя свое поведение с использованием адресов и значений, чтобы разрешить мошенничество. Может «заморозить» адрес памяти запретить игре понижать или изменять информацию, хранящуюся по этому адресу памяти (например, счетчик здоровья, счетчик боеприпасов и т. д.), или манипулировать данными по адресам памяти, указанным в соответствии с потребностями человека мошенничество в игре.

История

В 1980-х и 1990-х годах тренеры, как правило, были интегрированы прямо в игру. группы взлома. Когда игра была впервые запущена, тренер загружался первым, спрашивая игрока, хотят ли они использовать читы и какие читы хотели бы использовать. Затем код перейдет к самой игре. Эти встроенные кроссовки поставляются с вступления о группах, выпускающих игру, и о тренере, который часто используется для демонстрации навыков группы взлома демо навыки кодирования,[1] некоторые из этих групп полностью сосредоточены на своих Демосцена сегодня[2] В списках выпусков и вступлений группы взломщиков обученные игры были отмечены одним или несколькими знаками плюса после них, по одному для каждой опции или читов в трейнере, например: «Mega Krew представляет: Мисс Астро Цыпленок ++". Современные тренажеры добавляют свои заголовки с помощью одного + или написанного «плюс» и числа, так как многие из них имеют несколько функций. Используемое число представляет количество доступных модификаций тренера, например «бесконечное здоровье» или «убийство с одного удара». Еще одно отличие - это включение версии игры или цифрового источника загрузки игры. Например: «Hitman: Absolution Steam +11 трейнер»,[3] "F.E.A.R 3 v 1.3 PLUS 9 трейнер" и т. Д.[4][5]

Современные тренажеры также поставляются в виде отдельно скачиваемых программ. Вместо того, чтобы напрямую изменять программирование игры, они изменяют значения, хранящиеся в памяти. Фактически, это стало настолько распространенным явлением, что сегодня тренеры по определению только модифицируют память; модификация исполняемого файла игры не одобряется, и такие программы считаются не настоящими трейнерами, а патчами.

С объектно-ориентированного программирования память объекты часто хранятся динамически на куча но современный операционные системы использовать рандомизация разметки адресного пространства (ASLR). Следовательно, единственный способ изменить такую ​​память воспроизводимым образом - это получить информацию изнутри игрового процесса. Это требует разобрать механизм с целью понять, как это работает такие методы, как Перехват API из malloc () и свободный(), внедрение кода или поиск статических указателей доступа. Тренер становится активным, когда объект был выделен, и снова деактивируется, когда объект освобождается.

Современные операционные системы также поставляются с позиционно-независимые исполняемые файлы (PIE) для обеспечения безопасности. Вместе с ASLR двоичные файлы загружаются в разные адреса виртуальной памяти при каждом выполнении кода. Это усложняет надежное изменение значений статической памяти. Адрес загрузки должен быть определен и вычтен из найденного адреса памяти, чтобы получить статическое смещение памяти. Это смещение часто является точным адресом статической переменной в двоичном файле PIE. Например. то Linux инструмент Scanmem поддерживает PIE таким образом.[6] Для настроенного смещения памяти игровой тренер также определяет адрес загрузки и добавляет его обратно во время выполнения. Тот же метод можно использовать для динамические библиотеки также.

Статические указатели доступа против перехвата API

Поиск и отслеживание указателей доступа, обратных указателям в статической памяти, может быть обременительным. Он не предоставляет размер объекта, и если есть несколько объектов одного и того же класса, они часто не могут быть обработаны правильно, поскольку могут быть, например, векторы или списки между ними в куче. Но преимущество в том, что этот метод можно использовать для подключения к уже запущенному процессу, если он работает. Поддержка DMA (динамического распределения памяти) в Чит-двигатель является примером для этого.

Перехват API работает совершенно иначе: прелоадер загружает библиотеку в игровой процесс при его запуске. Библиотека следит за распределением динамической памяти, и обнаружение начинается с их записи. При параллельном статическом поиске в памяти можно сопоставить адрес найденного значения с уникальным распределением памяти. Идея состоит в том, чтобы закрыть игровой процесс сразу после того, как значение найдено, а объект все еще существует. Тогда последнее подходящее выделение памяти будет правильным. Таким образом, обратное совпадение - это метод выбора. Размер объекта, а также смещение значения внутри него обнаруживаются, а адрес кода возврата в двоичном файле игры может быть определен путем обратной трассировки. Часто обнаруживается конструктор, и с его помощью можно отслеживать все объекты памяти, которые он выделяет. Библиотека в игровом процессе и игровой трейнер должны общаться друг с другом через межпроцессное взаимодействие (IPC) Недостаток: это можно определить как вредоносное ПО. Но можно найти больше значений в объектах, выгрузив и сравнив их. Также упрощается адаптация к другим версиям игры и компилятора, поскольку все, что требуется, - это искать вызов библиотечной функции с известным параметром (размером объекта) при разборке. то бесплатно и с открытым исходным кодом (FOSS) универсальный игровой трейнер "ugtrain" показывает, что этот метод полностью легален с FOSS игры в качестве примеров.[7]

Автоматизированные инструменты, используемые при создании тренеров

В прошлом тренеры часто писались на ассемблере или любом другом языке высокого уровня, доступном в то время. Сегодня инструкторы также могут быть созданы с помощью автоматизированных средств создания инструкторов, для которых требуется только базовая информация о читах, такая как адрес и код внедрения, затем программа компилирует обучающую программу, используя предварительно определенные значения и настройки, не требующие навыков программирования от конечного пользователя. Самый популярный инструмент для создания тренажеров, используемый сегодня: Чит-двигатель который поддерживает широкий спектр типов инъекций и указателей, другие инструменты, которые использовались в прошлом, но больше не применимы, Набор для создания тренеров, Game Trainer Studio и Набор для создания тренера и Т. Д.[8] Некоторые из продвинутых методов, поддерживаемых обучающими программами Cheat Engine, включают внедрение кода, смещение кода, а также гибкость и универсальность, обеспечиваемые его сценариями Lua.[9][10] который отказался от других инструментов для создания инструкторов, в которых не было поддержки некоторых из этих функций.

Смотрите также

Рекомендации

  1. ^ "Информационная страница группы Defacto2 для Fairlight". Содержит информацию об их старых демоверсиях и релизах, а также статистику. Архивировано из оригинал 6 октября 2011 г.. Получено 14 февраля 2014.
  2. ^ "Демонстрации группы Razor1911". Подразделение демосцены Razor1911, которое создавало впечатляющие демонстрации еще на заре существования встраиваемых трейнеров. Получено 14 февраля 2014.
  3. ^ "Hitman Trainer". Наименование тренеров современными тренерскими группами. 21 ноября 2012 г.. Получено 14 февраля 2014.
  4. ^ «Список тренеров GCW». Получено 14 февраля 2014.
  5. ^ "Листинг известного тренера по созданию сцены группы DVT". Получено 5 июн 2015.
  6. ^ «Scanmem: представьте поддержку типа региона и адреса загрузки». Получено 5 июн 2015.
  7. ^ "универсальный игровой тренажер" ugtrain"". Получено 25 декабря 2015.
  8. ^ «Инструменты для инструкторов». Получено 14 февраля 2014.
  9. ^ "Бесстрашная революция". Сообщество, посвященное тренерам и таблицам чит-движков. 2020-03-25. Получено 2020-03-25.
  10. ^ «Луа». Cheat Engine Lua Wiki, объясняющий некоторые функции сценариев, доступные в CE. 2013-06-11. Получено 2014-02-14.