Статьи: Взлом одиночной игры и создание трейнера через СЕ
11.12.2011


Вступление

Здравствуйте! Я решил написать подробнейший гайд по взлому одиночных игр и созданию трейнеров для них. В этом гайде должны разобраться даже новички.
Конечно, одиночные игры начинают проигрывать многопользовательским, но их век ещё долго не закончится. Пока все онлайн игры до ужаса однообразны!
Готовые трейнеры можно скачать с этого сайта. Трейнер для игры, рассматриваемой здесь, делает бесконечное супер-оружие, которое позволяет очень легко выиграть игру.

Что понадобится?

  • Игра "АвиаНалёт". Для примера я решил взять её.
  • Программа Cheat Engine версии 5.5 (5.6 или 5.6.1). Самая удобная, быстрая и функциональная программа такого рода. Не пугайтесь сначала, на самом деле всё очень просто!
  • Программа Restorator 2009 Portable.

Взлом на бесконечное здоровье

Заходим в игру, и что мы видим?

  1. Сворачиваем игру. При этом она будет на паузе, но можете перед сворачиванием выйти в меню.
  2. Запускаем СЕ.
  3. Чтобы выбрать процесс игры нажимаем по изображению монитора (), потом ищем название процесса (смотрите на скрине ниже) и нажимаем "Open"

Выбираем процесс.

Так как в этой игре здоровье обозначается полоской (шкалой), и мы не знаем значение здоровья, придётся искать неизвестное значение.
Тип сканирования выбираем "Unknown initial value". Тип значения оставляем "4 Bytes".

Скрин.

Он найдёт 70774784 значения. Теперь нам надо уменьшить количество значений, то есть отсеять лишние.

Уменьшаем количество здоровья в игре:

Тип сканирования: уменьшенные значения (Decreased value) и нажимаем "Next".

Значений стало меньше 195 322.

Повторяем ещё несколько раз. Скрин 2.

Осталось 13 значений.

По логике, скорее всего, нужное значение 17207 или 16031. Методом тыка выясняем, что нужное значение 17207. Поменяем его на 17400.

Здоровье стало полным:

Теперь поставим 20000.

Более лёгкий способ поиска здоровья

Теперь, когда мы узнали количество здоровья, можно искать сначала точное значение в 4 байта, а потом уменьшенное. Находит 3 значения. Зелёное из них только одно, оно-то нам и нужно.

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

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

Взлом на 1 000 000 очков

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

Взлом 1-ого вида ракет
(со всеми остальными и с супер-оружием всё аналогично)

Опять попытайтесь разобраться по скринам.

Создание трейнера

Когда таблица создана, можно сделать трейнер. В меню "File" выбираем "Save". Тип файла: "Cheat Engine Trainer (*.EXE)".

Скрин 1. Скрин 2.

Нам предлагают создать новый трейнер, изменяющий данные в запущенной игре. Нажимаем "ОК".

Скрин.

Появилось два пугающих окна. Справа находится макет будующего трейнера. Мы можем за края изменить его размеры. Левое окно - настройки трейнера.
"Change Image" - изображение в левую часть трейнера.
"Change Icon" - иконка трейнера, на моём скрине значок СЕ.
"Title" - заголовок окна (скрин ниже).
"Launch file" - запускаемый файл игры, так как он бывает в разных местах, смотря куда устанавливают, лучше тут ничего не указывать, тогда пользователю будет предложено самому указать путь к файлу.
"Process" - нужный процесс.
Следующие два параметра никогда не менял, так что не знаю, что это.
"About text" - текст справки.
"Design own userinterface" - дизайн окна трейнера. Никогда не менял. Если разберётесь - напишите в комментариях.
Что за галочка тоже не знаю.
"Cancel" - отмена.
"Generate trainer" - создать трейнер, понадобится нам позже.

Скрин.

Слева список изменяемых параметров.
"Add Entry" и "Delete Entry" - добавить и удалить значение из списка соответственно.

Скрин.

Нажимаем "Add". У адресов можно было изменить описание, чтобы тут выбрать его и вписать значение. Переключатель стоит в положение заморозки. Жмём "Add".

Скрин.

Адрес появляется в списке. В поле "Description" можно вписать описание действия, я в поле "Hotkey" горячую клавишу, активирующую действие.

Скрин.

Если замораживать не надо, то ставим второй пункт переключателя.

Скрин.

Всё добавляем и генерируем трейнер.

Полный перевод трейнера

Трейнер, созданный в СЕ, содержит английские надписи, как на скрине:

Скрин.

Чтобы его перевести понадобится программа Restorator.
Запускаем её -> нажимаем "Открыть" -> находим трейнер и открываем его -> переходим в папку "RCData" -> в ресурс "TFRMMEMORYTRAINER".

Скрин 1. Скрин 2. Скрин 3. Скрин 4. Скрин 5. Скрин 6.

По скринам видно, где заменяются слова "About" и "Close" на "Справка" и "Закрыть" соответственно, "Hotkey" и "Effect" на "Клавиши" и "Эффект" соответственно.
Нажимаем "Применить" () и "Сохранить" ().

В итоге получился переведённый вариант.

Пояснения по типам сканирования переменных

Тип сканирования (Scan Type) - тип поиска.
Точное значение (Exact Value) используется, если мы знаем число, которое надо искать (например, когда здоровье в игре равно 100).
Больше чем... (Bigger than...), меньше чем... (Smaller than...) используется, если известно, что нужное значение меньше или больше какого-то числа (редко используются).
Значение между... (Value between...) используется, если значение находится между какими-то значениями (используется тоже рёдко).
Неизвестное значение (Unknown initial value) используется, если значение вообще неизвестно, далее следует долгое отсеевание.
Появляющиеся после первого сканирования:
Decreased value - уменьшившиеся значения.
Increased value - увеличившиеся значения.
Changed value - изменившиеся значения.
Unchanged value - неизменившиеся значения.
Same a first scan - такие же значения, как при первом сканировании.

Тип значения (Value type) - тип переменной. Под переменные (вспоминаем из курса математики что это такое) выделяется определённое количество памяти, зависящее от того, для чего она будет использоваться. Под текст выделяется больше памяти, чем на число.
Двоичные (Binary) - числа в двоичной системе счисления, то есть состоящие из последовательности нулей и единиц.
Байты (Byte, 2 Bytes, 4 Bytes, 8 Bytes) - размеры целочисленных чисел. Для большинства случаев подходит "4 Bytes".
Переменные с плавающей точкой (Float, Double) - числа, с цифрами после запятой. Double больше Float, то есть количество чисел после запятой у Double больше, но из-за этого он и используется реже.

Я постарался объяснить как можно лучше. Если что-то непонятно или есть дополнения, пишите в комментариях. Для лучшего понимания размеров переменных, попробуйте изучить какой-нибудь простенький язык программирования (Basic, Pascal) по какой-нибудь книжке для "чайников". Но, если Вы этого не поняли, то ничего страшного. В начале читерского пути это не будет мешать.