Cheat Engine (CE) — это мощная среда разработки для моддинга игр и приложений‚ позволяющая сканировать память‚ отлаживать код и создавать читы․ Главный формат для сохранения и обмена результатами работы в CE — это таблицы читов (Cheat Tables‚ файлы ․ct)․ В этой статье мы подробно разберем процесс создания собственной таблицы: от поиска значений и работы с указателями до написания скриптов и сохранения файла․
Подготовка и базовые настройки
Прежде чем начать сканирование‚ убедитесь‚ что Cheat Engine настроен правильно:
- Запуск от имени администратора: Обязательно запускайте CE с правами администратора (ПКМ по ярлыку → «Запуск от имени администратора»)‚ иначе программа не сможет открыть процессы игр‚ защищенные UAC или античитами․
- Настройки сохранения файлов (важно): Как отмечают пользователи на форумах (например‚ Playground․ru)‚ в настройках (
Settings→General→File Handling) рекомендуется включить опцию «Всегда выдавать запрос на сохранение файлов» (Always ask before saving files)․ Это спасет вас от случайной потери данных при закрытии программы․ - Отключение антивируса: Многие антивирусы блокируют драйвер ядра CE (
dbvm) или помечают сам исполняемый файл как вредоносное ПО․ Если CE не видит процессы или вылетает — добавьте папку с программой в исключения антивируса/Windows Defender․
Привязка к процессу игры
- Запустите целевую игру․
- В Cheat Engine нажмите на иконку компьютера с лупой (Select a process to open) в левом верхнем углу (или нажмите Ctrl+Alt+P)․
- В списке найдите процесс игры (обычно имя
․exeфайла‚ напримерgame․exe)․ - Нажмите Open․
> Важное предупреждение от сообщества (r/emulation): Cheat Engine работает с абсолютными адресами памяти Windows․ Они нестабильны: при перезапуске игры‚ загрузке сохранения или даже просто смене локации адреса изменятся․ Именно поэтому простое сохранение адреса в таблицу бесполезно для долгосрочного использования — нужны указатели (pointers) или скрипты инъекции кода․
Поиск значений (Scanning) и добавление в список адресов
Базовый цикл создания чита: поиск → фильтрация → добавление․
Типы сканирования:
- Exact Value (Точное значение): Если вы знаете число (HP=100‚ деньги=5000)․ Тип данных:
4 Bytes(стандарт)‚Float(дробные числа)‚Double‚String(текст)․ - Unknown Initial Value (Неизвестное начальное значение): Если число скрыто или вы не знаете его точного значения (например‚ полоска здоровья без цифр)․ Первый скан —
Unknown initial value‚ затем действия в игре (получить урон) →Decreased value‚ вылечиться →Increased value‚ без изменений →Unchanged value․
Перенос в таблицу адресов (Address List):
Когда в списке результатов (Scan Results) осталось 1- несколько адресов:
- Выделите нужный адрес (или несколько зажав Ctrl/Shift)․
- Нажмите ПКМ → Add to address list (Добавить в список адресов) или просто нажмите красную стрелку вниз / Enter․
- Адрес появится в нижней панели Address List — это и есть начало вашей будущей таблицы․
Работа с указателями (Pointers) — Ключ к постоянству
Поскольку базовые адреса меняются при каждом запуске‚ нужно найти указатель — цепочку смещений (offsets)‚ ведущую от статичного базового адреса (модуля игры) к вашему значению․
Способ 1: Pointer Scanner (Сканер указателей)
- В Address List нажмите ПКМ по адресу → Pointer scan for this address․
- Настройки:
Max level(уровень вложенности‚ обычно 5-7)‚Max offset(смещение‚ обычно 4096 или 8192)․ Нажмите OK‚ сохраните файл․ptr․ - После первого скана перезапустите игру‚ найдите значение снова‚ добавьте в список․
- В окне Pointer Scanner: Rescan (Повторный скан) → укажите новый адрес → OK․
- Повторите 3-5 раз․ Оставшиеся зеленые строки — это рабочие указатели․
- ПКМ по указателю → Add to address list․ В таблице он будет выглядеть как
[[[Base+Offset]+Offset]+Offset]․
Способ 2: «Найти‚ что обращается к адресу» (Find what accesses/ writes), для скриптов
Это профессиональный метод‚ позволяющий написать скрипт инъекции (Injection)‚ который работает надежнее указателей․
- ПКМ по адресу в Address List → Find what accesses this address (Что обращается к адресу) или Find what writes to this address (Что пишет в адрес)․
- Поиграйте немного (постреляйте‚ получите урон)‚ чтобы заполнить список инструкций․
- Выберите инструкцию‚ которая срабатывает только при изменении вашего значения (не рисует UI‚ не обновляет других врагов)․
- ПКМ по инструкции → Show disassembler (Показать дизассемблер)․
- В дизассемблере: Tools → Auto Assembler → Template → Code Injection (или
Full Injection)․ - CE сгенерирует шаблон скрипта․ Вам нужно найти строчку‚ меняющую значение (например‚
mov [rsi+10]‚eax)‚ и заменить её на свой код (например‚mov [rsi+10]‚#9999для бесконечного HP) или добавить регистрацию символа (define) для ручного изменения․ - Нажмите File → Assign to current cheat table (Файл → Назначить текущей таблице читов)․ Скрипт появится в Address List как включаемая галочка․
Оформление таблицы: Структура‚ описания и группы
Хорошая таблица — это понятная таблица․ Используйте возможности Address List:
- Группы (Groups): ПКМ в пустом месте Address List → Add Group․ Создайте группы:
[Player]‚[Weapons]‚[Inventory]‚[Scripts]․ Перетаскивайте записи в группы․ - Описания (Description): Дважды кликните по колонке «Description» и дайте понятные имена: не «Address 1»‚ а «God Mode»‚ «Infinite Ammo»‚ «Money Pointer»․
- Тип значения (Value Type): Убедитесь‚ что стоит правильный тип (
4 Bytes‚Float‚Byte)․ Для флагов (вкл/выкл) удобно использоватьByteи ставить 0/1․ - Drop-down списки: ПКМ по записи → Set/Change drop down list․ Можно прописать варианты:
0:Normal‚1:Super Speed‚2:Fly Mode․ Это удобнее ввода чисел вручную․ - Цветовая кодировка: ПКМ → Color․ Красьте скрипты в зеленый‚ указатели в синий‚ опасные опции (One Hit Kill) в красный․
Сохранение таблицы читов (․CT)
Когда вы нашли указатели‚ написали скрипты и оформили список:
- В главном меню CE: File → Save (Файл → Сохранить) или Ctrl+S․
- Выберите папку (лучше создать отдельную папку для таблиц конкретной игры)․
- Введите имя файла (например‚
GameName_v1․0_MyTable․ct)․ - Нажмите Save;
Совет: Сохраняйте часто (Ctrl+S) во время работы․ CE может вылететь‚ игра может крашнуться при инъекции кода‚ а настройка «Всегда спрашивать при сохранении» (п․1) не даст случайно перезаписать рабочую версию пустой таблицей при закрытии․
Загрузка и использование таблицы
Чтобы использовать сохраненную таблицу (свою или скачанную‚ например‚ с fearlessrevolution․com или github․com):
- Запустите игру․
- Запустите Cheat Engine (от админа)․
- Выберите процесс игры (иконка компьютера)․
- Нажмите иконку папки (Open) в верхнем левом углу или File → Load․
- Выберите файл
․ct․ - В появившемся окне (если таблица привязана к другому процессу) подтвердите привязку к текущему процессу․
- Ставьте галочки напротив нужных читов (скриптов/указателей)․
Продвинутые возможности для качественных таблиц
Lua-скриптинг (Lua Engine)
Cheat Engine имеет встроенный Lua-движок․ Вы можете добавить Lua-скрипт в таблицу (Table → Show Cheat Table Lua Script) для:
- Автоматического поиска указателей при загрузке таблицы (
onOpen)․ - Создания красивых GUI-форм (через
createForm‚createButtonи т․д․) вместо стандартного списка адресов․ - Автоматического включения читов при запуске․
Структуры (Structures / Dissect Data)
Если вы нашли базовый адрес структуры игрока (Player Base):
- ПКМ по адресу в списке → Dissect data/structures (Анализ данных/структур)․
- CE проанализирует память вокруг и покажет поля: HP‚ Stamina‚ Coords‚ Name и т․д․
- Можно определить структуру (Define Structure)‚ дать имена полям․
- ПКМ по структуре → Add addresses for this structure — мгновенно добавит все поля в таблицу с правильными смещениями․
Символы (Symbols) и регистрация
В скриптах Auto Assembler используйте registersymbol(MyHealthPtr) и unregistersymbol(MyHealthPtr) в секциях [ENABLE] / [DISABLE]․ Это позволяет обращаться к найденному адресу из других скриптов или из Lua-кода таблицы․
Типичные ошибки и решение проблем
| Проблема | Причина / Решение |
|---|---|
| Чит работает‚ но после перезапуска игры адрес другой / игра вылетает․ | Вы сохранили сырой адрес (зеленый в списке)‚ а не указатель или скрипт․ Используйте Pointer Scanner или Code Injection․ |
| CE не видит процесс игры / кнопка Open серая․ | Запустите CE от имени администратора․ Игра может быть в защищенном режиме (Anti-cheat: BattlEye‚ EAC‚ Vanguard) — для онлайн игр создание читов невозможно/нелегально․ |
| Скрипт не активируется (галочка не ставится / сразу сбрасывается)․ | Ошибка в коде инъекции (не тот регистр‚ не тот размер операнда‚ конфликт с другими хуками)․ Проверьте лог в Auto Assembler (View → Show log)․ |
| Указатель (Pointer) становится красным / показывает «???»․ | Базовый адрес модуля сместился (ASLR) или указатель неверный (не прошел рескан)․ Нужен повторный Pointer Scan или поиск через Code Injection + registersymbol․ |
| Антивирус удаляет Cheat Engine или ․CT файл․ | Добавьте папку CE и папку с таблицами в исключения (Whitelist) Windows Defender / антивируса․ |
Этика и безопасность
- Только Single Player: Cheat Engine предназначен для моддинга одиночных игр․ Использование в онлайн-играх (MMO‚ FPS‚ Co-op) нарушает EULA‚ ведет к перманентному бану аккаунта (HWID бан) и портит опыт другим игрокам․
- Античиты: Современные античиты (Easy Anti-Cheat‚ BattlEye‚ Vanguard) работают на уровне ядра (Ring 0)․ Попытка подключиться CE к такому процессу приведет к немедленному бану или крашу системы (BSOD)․
- Вирусы в чужих таблицах: Файлы
․ctмогут содержать вредоносные Lua-скрипты (например‚ загрузка исполняемых файлов из интернета‚ кража паролей)․ Всегда проверяйте код Lua-скрипта (Table → Show Cheat Table Lua Script) перед активацией чужой таблицы․ Не запускайте таблицы из непроверенных источников․
Создание качественной таблицы Cheat Engine — это процесс‚ объединяющий реверс-инжиниринг‚ понимание архитектуры памяти (указатели‚ структуры‚ стек) и навыки программирования на Assembly (Auto Assembler) и Lua․
Краткий чек-лист создания про таблицы:
- Найти значение (Scan)․
- Найти инструкцию кода‚ обращающуюся к нему (Debugger / What accesses)․
- Написать скрипт инъекции (Code Injection) или найти надежный указатель (Pointer Scan с ресканами)․
- Оформить: Группы‚ Имена‚ Цвета‚ Drop-down списки․
- Добавить Lua-автоматизацию (опционально)․
- Сохранить (Ctrl+S) в
․ct․
Начинайте с простых игр (без античитов‚ старые одиночные проекты)‚ тренируйтесь на «Pointer Scanning» и «Code Injection»‚ и со временем вы сможете создавать профессиональные таблицы вроде тех‚ что публикуются на Fearless Revolution или GitHub․ Удачи в ресерче!