Игровые тренажеры - это программы, предназначенные для изменения памяти компьютерной игры, тем самым изменяя ее поведение с помощью адресов и значений, чтобы разрешить читерство. Он может «заморозить» адрес памяти, не позволяя игре понижать или изменять информацию, хранящуюся по этому адресу памяти (например, счетчик здоровья, счетчик боеприпасов и т. Д.), Или манипулировать данными по адресам памяти, указанным в соответствии с потребностями человека, обманывающего в игре.
История
В 1980-х и 1990-х годах тренеры, как правило, напрямую встраивались в игру взламывающими группами . Когда игра была впервые запущена, тренер загружался первым, спрашивая игрока, хотят ли они читерствовать и какие читы хотели бы включить. Затем код перейдет к самой игре. Эти встроенные тренеры пришли с интро о группах , выпускающих игры и тренер часто используются для демонстрации навыков крекинга группы демо кодирования навыков, [1] некоторые из этих групп полностью сосредоточиться на их Demoscene сегодня [2] В выпуске взломщик группы списки и вступления, обученные игры были отмечены одним или несколькими знаками плюс после них, по одному для каждой опции или читов в трейнере, например: «Mega Krew представляет: Ms. Astro Chicken ++ » . Современные тренажеры добавляют свои заголовки с помощью одного знака «+» или «плюс» и числа, так как многие из них имеют несколько функций. Используемое число представляет количество доступных модификаций тренера, например, «бесконечное здоровье» или «убийство с одного удара». Еще одно отличие - это включение версии игры или цифрового источника загрузки игры. Например: «Hitman: Absolution Steam +11 трейнер», [3] «FEAR 3 v 1.3 PLUS 9 трейнер» и т. Д. [4] [5]
Современные тренажеры также поставляются в виде отдельно скачиваемых программ. Вместо того, чтобы напрямую изменять программирование игры, они изменяют значения, хранящиеся в памяти. Фактически, это стало настолько распространенным явлением, что сегодня тренеры по определению только модифицируют память; модификация исполняемого файла игры не одобряется, и такие программы считаются не настоящими трейнерами, а патчами.
При объектно-ориентированном программировании объекты памяти часто динамически хранятся в куче, но современные операционные системы используют рандомизацию разметки адресного пространства (ASLR) . Следовательно, единственный способ изменить такую память воспроизводимым образом - это получить информацию изнутри игрового процесса. Это требует обратных инженерные методов , таких как API подсекать из таНоса () и свободные () , инъекция коды или поиск для статических указателей доступа. Тренер становится активным, когда объект был выделен, и снова деактивируется, когда объект освобождается.
Современные операционные системы также поставляются с независимыми от позиции исполняемыми файлами (PIE) для обеспечения безопасности. Вместе с ASLR двоичные файлы загружаются в разные адреса виртуальной памяти при каждом выполнении кода. Это усложняет надежную модификацию значений статической памяти. Адрес загрузки должен быть определен и вычтен из найденного адреса памяти, чтобы получить статическое смещение памяти. Это смещение часто является точным адресом статической переменной в двоичном файле PIE. Например, инструмент Linux scanmem поддерживает PIE таким образом. [6] Для настроенного смещения памяти игровой тренер также определяет адрес загрузки и добавляет его обратно во время выполнения. Тот же метод можно использовать и для динамических библиотек .
Статические указатели доступа против перехвата API
Поиск и отслеживание указателей доступа, обратных указателям в статической памяти, может быть обременительным. Он не предоставляет размер объекта, и если есть несколько объектов одного и того же класса, они часто не могут быть обработаны правильно, поскольку в куче могут быть, например, векторы или списки между ними. Но преимущество в том, что этот метод можно использовать для присоединения к уже запущенному процессу, если он работает. Примером этого является поддержка DMA (динамического распределения памяти) в Cheat Engine .
Перехват API работает совершенно иначе: предварительный загрузчик загружает библиотеку в игровой процесс при его запуске. Библиотека следит за распределением динамической памяти, и обнаружение начинается с их записи. При параллельном статическом поиске в памяти можно сопоставить найденный адрес значения с уникальным распределением памяти. Идея состоит в том, чтобы закрыть игровой процесс сразу после того, как значение найдено, а объект все еще существует. Тогда последнее подходящее выделение памяти будет правильным. Таким образом, обратное совпадение - это метод выбора. Размер объекта, а также смещение значения внутри него обнаруживаются, а адрес кода возврата в двоичном файле игры может быть определен с помощью обратной трассировки. Часто обнаруживается конструктор, и с его помощью можно отслеживать все объекты памяти, которые он выделяет. Библиотека в игровом процессе и игровой тренер должны взаимодействовать друг с другом посредством межпроцессного взаимодействия (IPC) . Недостаток: это может быть обнаружено как вредоносное ПО . Но можно найти больше значений в объектах, выгрузив и сравнив их. Также упрощается адаптация к другим версиям игры и компилятора, поскольку все, что требуется, - это искать вызов функции библиотеки с известным параметром (размером объекта) при разборке. Например, бесплатный универсальный игровой тренажер с открытым исходным кодом (FOSS) ugtrain показывает этот метод полностью законным на примерах игр FOSS . [7]
Автоматизированные инструменты, используемые при создании тренеров
Раньше для инструкторов часто использовался ассемблер или любой другой язык высокого уровня, доступный в то время. Сегодня инструкторы также могут быть созданы с помощью автоматизированных средств создания инструкторов, которые требуют только базовой информации о читах, такой как адрес и код внедрения, затем программа компилирует обучающую программу с использованием заранее определенных значений и настроек, не требующих навыков программирования от конечного пользователя. Наиболее инструмент популярных тренера решений используются сегодня Чит Engine , который поддерживает широкий спектр типов и указателей инъекций, другие инструментов , которые не были использованы в прошлом , но более не применимо являются Maker Kit Trainer , игры тренер студия и тренер Creation Kit и т.д. [8 ] Некоторые из продвинутых методов, поддерживаемых обучающими программами Cheat Engine, включают внедрение кода, смещение кода, а также гибкость и универсальность, обеспечиваемую его сценарием Lua [9] [10], который постепенно отказался от других инструментов создания обучающих программ, которые не поддерживали некоторые из этих функций. .
Рекомендации
- ^ "Информационная страница группы Defacto2 для Fairlight" . Содержит информацию об их старых демоверсиях и релизах, а также статистику . Архивировано из оригинала 6 октября 2011 года . Проверено 14 февраля 2014 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "Демонстрации группы Razor1911" . Подразделение демосцены Razor1911, которое создавало впечатляющие демонстрации еще на заре встраиваемых трейнеров . Проверено 14 февраля 2014 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Наемный убийца» . Именование тренеров современными тренерскими группами . 21 ноября 2012 . Проверено 14 февраля 2014 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Список тренеров GCW» . Проверено 14 февраля 2014 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Листинг известного тренера сцены группы DVT» . Дата обращения 5 июня 2015 . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Scanmem: представьте поддержку типа региона и адреса загрузки» . Дата обращения 5 июня 2015 . CS1 maint: обескураженный параметр ( ссылка )
- ^ «универсальный игровой тренажер« угтрейн » » . Проверено 25 декабря 2015 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Инструменты для обучения инструкторов» . Проверено 14 февраля 2014 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Бесстрашная революция» . Сообщество, посвященное тренерам и таблицам чит-движков . 2020-03-25 . Проверено 25 марта 2020 . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Луа» . Cheat Engine Lua Wiki, объясняющий некоторые функции сценариев, доступные в CE . 2013-06-11 . Проверено 14 февраля 2014 . CS1 maint: обескураженный параметр ( ссылка )