stringtranslate.com

Тренер (игры)

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

История

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

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

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

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

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

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

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

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

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

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

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