Как пользоваться Cheat Engine
Иногда схватка с чрезмерно сложным боссом портит впечатление от игры, когда тот упорно не дает продвигаться дальше по сюжету. Подобные проблемы, вызванные отсутствием баланса, легко решить с помощью Cheat Engine – программы для изменения внутриигровых параметров. Это отличное решение, которым пользуются тысячи геймеров.
Как работает программа Cheat Engine
Здоровье, броня, деньги, урон от оружия и другие параметры сохранены в единой базе данных в виде HEX-кодов. Проще говоря, это цифры в оперативной памяти – текущие параметры, которые изменяемы. Конечно, искать подходящую строчку самостоятельно будет очень сложно, ведь в игре используются сотни и тысячи параметров, в том числе и скрытых, которые представляют собой комбинацию цифр.
Cheat Engine представляет собой высокопроизводительный HEX-редактор, работающий в стандартном режиме и Speed Hack. Пользоваться программой сможет даже новичок, по-крайней мере, изменить количество денег или увеличить здоровье главного героя в 10 или 100 раз – базовые операции не представляют собой ничего сложного.
Как пользоваться популярной программой Cheat Engine
Рассмотрим, как работает программа на примере игры Heroes 3. Допустим, что изначальное количество золота составляет 20000 – почему бы не сделать себе миллион золотых. Сверните игру и запустите Cheat Engine, затем выполните манипуляции, описанные ниже.
Нажимаем кнопку с изображением компьютера.

Откроется окно, в котором представлен список запущенных процессов – в нашем случае нужен h3wog.exe. Название «экзешника» можно посмотреть в папке с игрой.

Нажимаем кнопку Открыть. В строке Значение указывается текущее количество золота. Нажимаем кнопку Поиск. В открывшейся таблице, находящейся слева, отобразятся найденные значения, соответствующие введенному запросу.

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

Продолжайте поиск, пока не останется одна строка с закодированным количеством денег. Кликните по оставшейся строке левой кнопкой мыши, а затем правой и в контекстном меню выберите пункт Изменить значение у выбранных адресов памяти. Введите число, соответствующее сумме золота, которое желаете получить, например, 1 миллион.

По возвращении в игру и проверьте: если никаких изменений не произошло, то в этом случае выполните произвольное внутриигровое действие, например, переместите героя на одну клетку или запустите экран города.
Вы не собираетесь ничего менять и хотите запустить Speed Hack для получения преимущества в игре? В таком случае выполните манипуляции, описанные выше, до того момента, когда задается значение параметра в соответствующем поле. Искать HEX-код не нужно, выберите exe-файл с игрой и справа от поля Значение отметьте галочкой поле Спидхак. После этого в игре произойдет ускорение, которое затронет только игрового персонажа или и окружение.

Cheat Engine используется для взлома одиночных игр. Кроме того, это работающий способ получения преимуществ в онлайн-играх, однако в последнем случае пользователь рискует быть забаненым системой античитов на сервере. Изменять параметры онлайн-игр с помощью Cheat Engine рекомендуется на отдельном аккаунте – в противном случае появляется риск лишиться учетной записи.
Преимущества программы Cheat Engine
Использование программы не требует специальных знаний. Пользователям не нужно иметь представление о HEX-кодах и других специфических аспектах игр. Для решения проблемы воспользуйтесь нашей инструкцией, применимой в любой игре – алгоритм поиска нужных полей остается неизменным.
Программа поддерживает русский язык. Требования Cheat Engine к аппаратной конфигурации ПК лояльные – программа работает даже на слабых компьютерах. В продуманной навигации с легкостью разберется даже новичок. Изменения дополнительных параметров не требуется, делайте это только в том случае, если вы – продвинутый пользователь. Подобная необходимость возникает при сложном поиске, когда требуется изменить параметры конкретного противника и не затрагивать остальное игровое окружение.
Программа Cheat Engine легка в освоении и не вызывает сложностей у новичков. Геймеры пользуются этой программой каждый день и получают в любимых играх максимум удовольствия. Загрузите Cheat Engine на нашем портале и забудьте о возможных сложностях в видеоиграх. Программа работает в Windows XP и новее. Cheat Engine – это универсальный инструмент.
Как сделать трейнер в Cheat Engine
Программа Cheat Engine помогает пользователям взламывать любимые игры, приобретая бесконечное количество игровых денег и нескончаемую шкалу жизни игрового персонажа. Для удобства использования, разработчики программы добавили опцию создания трейнеров. С помощью трейнеров пользователь сохраняет алгоритм взлома игры, который будет использоваться в следующих сессиях. В этой статье создан гид по тому, как сделать трейнер в cheat engine. Дополнительно, авторы статьи рассказывают об инструментах программы, которые влияют на работоспособность трейнера.
Для чего нужен трейнер в Cheat Engine
Трейнер экономит время игрока. С помощью такого устройства, игроку нет необходимости каждый день настраивать параметры Cheat Engine и делать изменения в файлах игры. Трейнер — это плагин, который создается один раз и используется каждый раз по необходимости. В такой плагин настраивается список функций. Это — увеличение очков игрока, уменьшение сил и выносливости соперника, сокращение карты, появление бустеров и др.
Этапы создания трейнера. Выбор процесса
Меню для создания трейнера расположено во вкладке «File».

Нажав кнопку «Generate graphic trainer» пользователю открываются два окна. В одном окне создается трейнер. В другом окне демонстрируется визуализация трейнера, а также, прописываются горячие клавиши.

В строке «Processname» прописывается класс процессов, которые будет выполнять трейнер. Для взлома программ используется процесс cheatengine-x86_64.exe.

Ниже расположена опция для установки горячей клавиши вызова трейнера. Пользователем выбирается сочетание клавиш по собственному усмотрению.

Добавить горячие клавиши
Создание трейнера заключается в выборе горячих клавиш для параметров взлома. Эти клавиши игрок будет нажимать, чтобы взломать интересующий процесс во время игры. Этот параметр настраивается посредством опции Add Hotkey. Как показано на рисунке ниже, автор статьи выбрал параметр Hp, который отвечает за восстановление здоровья игрового персонажа.

После нажатия кнопки «Ok» появится окно, в котором проставляется значение горячей клавиши для выбранного параметра взлома. Затем автор статьи выбрал горячие клавиши для параметра «Godmode» ( Бессмертие). В окне демонстрации процессов появились 2 новых описания.

В строках «Title» и «About text» прописывается название трейнера и добавляется описание параметров, которые улучает плагин.

В правой части панели инструментов расположена настройка запуска трейнера «Stop playing when». По умолчанию, трейнер активируется одновременно с запуском игры. Вместе с тем, игрок может отключать трейнер.
Ниже, расположена кнопка уведомления об использовании трейнера. В шутерах и других «шумных» играх, звуковое сопровождение трейнера помогает игроку, так как игрок получает уведомление, сообщающее, что его персонаж получил дополнительные силы.
Теперь осталось нажать кнопку «Generate trainer» и трейнер будет готов.
На что надо обращать внимания при создании трейнера?
Создание трейнера требует внимательности и знания особенностей компьютерной игры, которую предстоит взламывать. В панели инструментов программы Cheat Engine представлены инструменты для создания оригинальных кодов для взлома. Однако, создания таких кодов требует навыки в программировании, либо умение использовать скрипты, найденные в интернете. Большинство игроков находят параметры взлома в формате exe в интернете, загружают такие файлы на компьютер и используют в трейнерах, как сделал это автор статьи с кодом для «Бессмертия» и «Здоровья».
Как создать трейнер с помощью cheat engine
Это мощное средство для взлома и изменения всех игр. При его использовании можно редактировать различные характеристики игры, такие как количество жизней, баллов, денег, оружия и прочее. Более того, имеется возможность разрабатывать собственные трейнеры — специальные программы, активирующие читы в игре по нажатию клавиши. Мы подробно опишем процесс создания трейнера с применением Cheat Engine.
Что такое тренер и зачем он нужен?
Тренер — это программа, которая запускается в фоновом режиме и подключается к процессу игры. Тренер содержит набор читов, которые можно включать и выключать по желанию. Тренер обычно имеет графический интерфейс, на котором отображаются доступные читы и клавиши для их активации. Тренер удобен тем, что вам не нужно каждый раз запускать Cheat Engine и искать нужные значения в памяти игры. Вы просто запускаете тренер, выбираете нужные читы и наслаждаетесь игрой.
Как создать тренер с помощью Cheat Engine?
Для создания тренера с помощью Cheat Engine вам понадобятся следующие вещи:
- Компьютер с установленной игрой, которую вы хотите взломать.
- Программа Cheat Engine, которую вы можете скачать с официального сайта.
- Немного терпения и внимания.
Создание тренера состоит из нескольких этапов:
1. Начало игры и Cheat Engine.
2. Поиск значений в памяти игры.
3. Разработка скриптов для читов.
4. Создание графического интерфейса тренера.
5. Сборка и сохранение тренера.
Рассмотрим каждый этап подробнее.
1. Запуск игры и Cheat Engine
Первым делом запустите игру, которую вы хотите взломать. Затем запустите Cheat Engine и выберите процесс игры в списке процессов. Для этого нажмите на значок компьютера в левом верхнем углу окна Cheat Engine и найдите процесс игры по его названию или значку. Например, если вы хотите взломать игру Subway Surfers, то выберите процесс SubwaySurfers.exe.
2. Поиск значений в памяти игры
Этот этап осуществляется с использованием Cheat Engine. Сначала запоминаем текущее значение (например, 123 монеты). После вводим это число и тип значения (4 байта) в Cheat Engine и выполняем первое сканирование. Затем изменяем значение (например, на 130 монет) в игре, вводим новое значение и выполняем следующее сканирование.
Повторяем этот процесс, пока не останется один или несколько адресов, отвечающих за количество монет. Проверяем правильность адресов, изменяя их значения в таблице и убеждаемся, что количество монет изменилось. Этот метод можно применить для поиска других параметров, таких как жизни, очки, время и др.
3. Создание скриптов для читов
После того как мы нашли нужные значения в памяти игры, мы можем создать скрипты. Это небольшие программы на языке Lua, которые позволяют изменять значения в памяти игры по определенным условиям. Например, мы можем создать скрипт для чита «Бесконечные монеты”, который будет устанавливать значение количества монет на максимальное каждый раз, когда мы запускаем игру или собираем монеты.
Для создания скриптов мы будем использовать функцию Auto Assembler Cheat Engine. Auto Assembler — это специальный редактор кода, который позволяет писать скрипты на языке Lua и ассемблере. Ассемблер — это низкоуровневый язык программирования, который работает непосредственно с процессором компьютера и памятью.
Для создания скрипта «Бесконечные монеты” мы должны сделать следующее:
- Выбрать адрес количества монет в таблице и нажать правой кнопкой мыши по нему. В появившемся меню выбрать пункт Find out what writes to this address
- Нажать правой кнопкой мыши по адресу количества монет в таблице Cheat Engine и выбрать пункт Find out what writes to this address (Узнать, что пишет по этому адресу). В появившемся окне нажать на кнопку Yes (Да) и дождаться, пока Cheat Engine не найдет код, который изменяет значение по этому адресу. Это может занять некоторое время, в зависимости от сложности игры.
- Вернуться в игру и собрать или потратить еще несколько монет. Затем вернуться в окно Cheat Engine и увидеть, что в списке появился один или несколько элементов. Это будут инструкции ассемблера, которые пишут по адресу количества монет. Выбрать эти инструкции и перенести их в таблицу ниже, нажав на кнопку с красной стрелкой.
- Дважды кликнуть по инструкции в столбце Address (Адрес) и выбрать пункт Replace with code that does nothing (Заменить кодом, который ничего не делает). Это означает, что мы отключаем код, который изменяет значение количества монет. Затем нажать на кнопку OK.
- Проверить, что мы отключили правильный код, изменив значение количества монет в таблице Cheat Engine на любое число. Например, 999999. Затем перейти в игру и убедиться, что количество монет не меняется при сборе или расходовании.
Создание графического интерфейса для тренера
Процесс включает добавление управляющих элементов, таких как кнопки, чекбоксы, лейблы и прочее, к скрипту для читов. Это упрощает активацию и деактивацию читов в игре без использования Cheat Engine. Для создания интерфейса можно воспользоваться Form Designer Cheat Engine, который позволяет перетаскивать и настраивать элементы управления на форме. Дополнительно можно назначать события элементам управления для их реакции на пользовательские действия.
Компиляция и сохранение тренера
Это процесс, в котором мы превращаем наш скрипт для читов и графический интерфейс в отдельный исполняемый файл, который можно запускать без Cheat Engine. Для этого мы можем использовать функцию Generate Trainer Cheat Engine, которая позволяет выбрать имя, значок, версию и другие параметры для нашего тренера. После этого мы можем сохранить наш тренер в любом месте на компьютере или распространять его другим пользователям.
Создание тренеров с помощью Cheat Engine — это интересное и полезное занятие, которое позволяет вам наслаждаться играми по-новому и расширять свои навыки программирования.
Чит своими руками. Вскрываем компьютерную игру и пишем трейнер на C++

Играть в игры любят все, но это гораздо интереснее, когда у тебя имеется нескончаемый запас патронов и здоровья. Чтобы обзавестись и тем и другим, можно погуглить читы и трейнеры для твоей любимой игры. Но как быть, если их еще не разработали? Написать самому! Обладая навыками реверс‑инжиниринга и программирования, сделать это намного проще, чем кажется.
Выбор игры
Для начала определимся с игрой. Мой выбор пал на Hyper Light Drifter (далее HLD). Если ты планируешь поэкспериментировать с коммерческой игрой, обрати внимание на сайт pcgamingwiki, а также на игры с открытым исходным кодом.
warning
Так как для написания этой статьи я буду использовать коммерческую игру, мне нужно удостовериться, что лицензионное соглашение (EULA) позволяет это делать.
Начав установку и внимательно прочитав текст EULA, я убедился, что в нем явно запрещается написание и распространение только тех читов и трейнеров, которые мешают работе сервиса, а в нашем случае ничего подобного не планируется. Поэтому смело продолжаем установку.

Поиск значений
Для поиска значений, которые будет изменять чит, мы станем использовать Cheat Engine (далее CE).
Запустим игру и в настройках игры выберем оконный режим — нам нужно, чтобы на экране помещалось еще что‑то, кроме игры.

Как видим, в оконном режиме отсутствует панель заголовка, с помощью которой мы могли бы перетаскивать окно игры по экрану. Чтобы исправить эту неприятность, откроем отладчик x64dbg, а именно его 32-битную версию ( x32dbg ) и запустим под ним HLD.
Поставим брейк‑пойнты на функции CreateWindowExA и CreateWindowExW , которые отвечают за создание окна. Найти их можно на вкладке Symbols, выбрав библиотеку user32. dll .

Видим, что наше окно создается с параметром dwStyle , имеющим значение WS_POPUP = 0x80000000 .

Поменяем это значение на WS_OVERLAPPED = 0x00000000 .

И вот результат: теперь мы можем перемещать окно.

После того как мы настроили окно игры с помощью отладчика, ненадолго отложим его. Чтобы найти нужные нам значения в Cheat Engine, разберемся с теорией.
Что такое статический адрес
Статический адрес — это адрес, который изменяется предсказуемо по отношению к модулю, которому он принадлежит. Если переменная глобальная, то можно найти ее в сегменте данных.
Статические адреса указываются в формате [ module+offset] . Например, в library. dll мы могли обнаружить значение по адресу 0x700004C0 ( base = 0x70000000, offset = 0x4C0 ). Поскольку library. dll может перемещаться и ее базовый адрес загрузки будет меняться, чтобы получить доступ к нашему значению, мы не используем этот адрес напрямую. Вместо этого возьмем адрес [ library. dll + 0x4C0 ]. Следовательно, когда library. dll загружается по базовому адресу 0x10000000 , [ library. dll + 0x4C0 ] дает нам 0x100004C0 и у нас появится доступ к нашему значению.
Если же переменная локальная, то искать нужно в стеке. Для этого получаем TebBaseAddress определенного потока, а затем второй указатель из этой структуры ( FS:[ 0x04] или GS:[ 0x08] , в зависимости от разрядности процесса), которая содержит вершину стека. TebBasePointer может быть получен с помощью NtQueryInformationThread (если это 64-битный процесс) или же с помощью Wow64GetThreadSelectorEntry (если это 32-битный процесс в 64-битной системе).
Поиск показателей здоровья
Запускаем Cheat Engine и подключаемся к процессу игры.

Так как мы не знаем, в каком типе хранится показатель здоровья, выставляем следующие параметры для первого сканирования.

Далее продолжаем сканирование, не забывая при этом терять hp (показатель здоровья) в игре. Делаем мы это для того, чтобы отслеживать изменения значения hp в памяти игры через CE, а также уменьшать значение в поиске для следующих сканирований. Делать мы это будем до тех пор, пока не будет достигнуто адекватное количество значений в окне CE. Адекватное количество значений в данном случае — это такое количество адресов, проверка которых займет максимум минут пять.

Мне приглянулись вот эти два адреса, которые я добавил в нижнее окно двойным щелчком мыши на них. Приглянулись они мне в первую очередь потому, что значения по этим адресам среди всех остальных имеют наибольший тип — double. Всегда нужно проверять от большего типа к меньшему. То есть сначала проверяем адреса, хранящие тип double, затем float, после integer и так далее. Более подробно о размере типов данных можно прочитать в документации Microsoft.

Если мы поменяем значение по адресу 0x36501940 , то на экране появится полоса здоровья, но его количество не поменяется.

Если теперь мы поменяем значение по адресу 0x36501A30 , то на экране появится полоса hp и значение изменится. Это значит, что мы нашли адрес, в котором хранится значение здоровья в игре. Значение хранится в формате double (стандарт IEEE 754).

Дадим название найденным нами адресам: hp_bar и hp соответственно. Однако, как я уже рассказывал в разделе, посвященном статическим адресам, найденный нами адрес будет бесполезен после того, как мы выйдем в меню или перезапустим игру.
Поиск статического адреса для индикатора здоровья
Для дальнейшего поиска статического адреса вернемся к отладчику. В окне дампа переходим по ранее полученному адресу 0x36501A30 , в котором хранится значение hp.

Ставим по адресу 0x36501A34 аппаратный брейк‑пойнт на запись и теряем в игре здоровье. Брейк‑пойнт срабатывает, и мы видим, что новое значение hp берется из регистра EDI . Это значение является первым параметром текущей функции.

Выйдя из этой функции, проследим, откуда она получает свой первый параметр. Мы увидим, что передаваемый параметр — это возвращаемое значение функции по адресу 0x003EFCE9 .

Поставим брейк‑пойнт на вызов функции по адресу 0x003EFCE9 , а дальше продолжим отладку, пока не остановимся на ее вызове. Зайдя внутрь функции, выполняем ее до конца. Как только мы достигнем адреса 0x00F88E19 , мы увидим, что регистр EAX хранит адрес значения hp. Очевидно, что в этой функции происходит доступ к нашему адресу через арифметику с указателями для структур, а именно через прибавление к указателю смещений и дальнейшего его разыменования. Более подробно об этом можно прочитать здесь. Нам нужно будет повторно пройтись по этой функции, чтобы узнать, через какой адрес и смещения она получает адрес значения hp.

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

Мы нашли статический адрес! Если посмотреть его расположение в памяти, он находится в секции . data .

Зная все смещения, добавим их в CE, нажав Add Address Manually .

Поиск значения числа патронов
Теперь приступим к поиску значения числа патронов (ammo). Первое сканирование делаем с такими же параметрами поиска, как когда мы искали здоровье.

В данном случае мы смогли найти лишь одно значение, и это значение полосы, которая показывает число боеприпасов.

В игре этот индикатор не появился. В отличие от полосы здоровья, он отображается только после нажатия на кнопку E или во время выстрелов.

Поиск статического адреса для ammo
Мы понимаем, что показания индикаторов в игре всегда сравниваются с фактическими. Если одна из полос показывает не то, что нужно, ее длина изменяется. Поэтому возвращаемся к отладчику и начинаем с аппаратного брейк‑пойнта на запись по адресу 0x365014С4 . Как видим по комментариям, эта функция уже нам встречалась.

По аналогии с поиском hp, выходим из функции.

Так как мы уже знаем, что индикатор должен получать значение где‑то раньше, нам придется пролистать окно дизассемблера выше, пока мы не увидим функцию, предположительно получающую фактическое значение ammo.

Мы видим, что в этой функции мы уже были, а это значит, что она тоже получает значение, но уже ammo — 365014E0 . Только какое‑то оно странное.

Добавив это «странное» значение в Cheat Engine, а потом изменив его, к примеру, на 100, мы увидим, что на экране появится индикатор патронов и его значение поменяется. Значит, мы нашли адрес, в котором хранится значение ammo в игре.

Зная все смещения от статического адреса к адресу значений ammo, добавим их в CE, нажав Add Address Manually .

info
Скорее всего, боеприпасы в HLD представляют собой заряд энергии и поэтому хранятся в процентах, ведь при их поиске через отладчик можно было увидеть строки, содержащие слово energy . Которое намекает на то, как будет выглядеть значение в памяти. Например, игра от одной небезызвестной польской компании хранила патроны в памяти вместе, а для игрока показывала раздельно: как рожок, так и количество оставшихся патронов, поэтому при их поиске не удавалось найти каждое из значений, а нужно было искать их сумму.
Проверка полученного статического адреса
Чтобы проверить, правильно ли мы определили адреса, нужно выйти в меню игры и вернуться к игровому процессу или же перезапустить игру.
Проверка для HP
Так выглядит наша cheat table для hp.

А вот так она выглядит после перезапуска игры.

Проверка для ammo
Так выглядит наша cheat table для ammo.

А вот так она выглядит после перезапуска игры.

Как будет выглядеть наш указатель в C++
В нашем чите доступ к найденным адресам значений будет таким.
static_addr = ( DWORD ) GetModuleHandle ( 0 ) ;
static_addr = * ( DWORD * ) ( static_addr + 0x255AF150 ) ;
static_addr = * ( DWORD * ) ( static_addr ) ;
static_addr = * ( DWORD * ) ( static_addr + 0xD48 ) ;
static_addr = * ( DWORD * ) ( static_addr + 0x0C ) ;
static_addr = ( DWORD * ) ( static_addr + 0xC4 ) ;
static_addr = * ( DWORD * ) ( * static_addr + 0x08 ) ;
static_addr = * ( DWORD * ) ( static_addr + 0x44 ) ;
static_addr = * ( DWORD * ) ( static_addr + 0x10 ) ;
drifter_hp = ( double * ) ( DWORD * ) * ( DWORD * ) ( static_addr + 0x1FD8 ) ;
drifter_ammo = ( double * ) ( DWORD * ) * ( DWORD * ) ( static_addr + 0x268C ) ;
Написание трейнера
По принципу действия читы можно разделить на две группы: внутренние и внешние. Внешние читы — это отдельное приложение, запущенное в системе в виде процесса. Внутренние читы обычно реализованы как динамическая библиотека, внедряемая в процесс игры.
Мы будем писать внутренний чит, поэтому нам понадобится не только сама библиотека, но и инжектор, который внедрит нашу библиотеку в процесс игры. Инжектор получит список процессов, найдет процесс игры, выделит в ней память, в которую запишет наш внутренний чит, а после создаст удаленный поток внутри игры для выполнения кода нашего чита.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.