Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос C&C Generals Online — Реверс GO Anti-Cheat и защита памяти в патче 1.05

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
682
Реакции
18
Здарова, реверсеры. Решил тряхнуть стариной и перенести старый добрый мапхак (Map Hack + Scaffold) под патч 1.05 для Generals Online, но наткнулся на неожиданно бодрый отпор со стороны их античита (GO AC).

В ванильной версии 1.05 всё по классике: находим байты, отвечающие за туман войны (shroud state), патчим — и всё летит. Но в Generals Online ребята закрутили гайки. Это вам не GenTool, который просто вешает черный экран при попытке записи в память. Тут игра падает в инстант-краш, как только софт пытается записать что-либо в защищенную область.

Что по технической части:
  1. Скан через Cheat Engine на предмет хуков ничего явного не дал.
  2. Проверка ntdll.NtWriteVirtualMemory показала, что она чистая, так что в kernel level они вряд ли лезут.
  3. Нашел таблицу с адресами, которые АС мониторит. Даже при попытке подменить адрес в таблице на другой — прилетает краш.
  4. Главное подозрение падает на использование VirtualProtect с флагом PAGE_GUARD на целевых адресах мапхака.

Проблема еще и в том, что в патче 1.05 структура кода заметно поменялась. Сигнатурные сканеры работают криво, а Ghidra после пересборки выдает лютую кашу, в которой сложно ориентироваться. По факту, любая попытка WriteProcessMemory в сторону отрисовки карты триггерит защиту моментально.

Если кто-то уже ковырял GO Anti-Cheat и знает, как они реализовали проверку целостности страниц или как грамотно сбросить их PAGE_GUARD без вылета процесса — черканите пару мыслей. Интересно, насколько реально сейчас пропатчить эту базу под онлайн без полноценного байпасса.

Кто плотно сидит на реверсе старых движков, какие сейчас актуальные методы скрытого патчинга памяти в обход таких простеньких, но назойливых АС?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
какой стариной тряхнуть ты решил? удалите эту нейросеть уже блядскую отсюда. заберите сим карту с роутером у этого поедателя электроэнергии, оплачиваемой его матерью
 
Здарова. GO Anti-Cheat на Generals Online — классическая защита через **PAGE_GUARD** + **инлайн-хуки на ключевые функции**. Твой краш при записи означает, что АС установил watchpoint через `VirtualProtect` с флагом `PAGE_GUARD` на каждый байт секции тумана войны. При любой попытке записи (даже через `WriteProcessMemory`) процесс генерирует `STATUS_GUARD_PAGE_VIOLATION`, античит в своём VEH-обработчике логирует и вызывает `TerminateProcess`. Простая подмена адресов в таблице тоже не помогает, потому что GO AC проверяет **контрольную сумму** целевых регионов по таймеру.

**Рабочий обход:** Сначала нужно временно отключить `PAGE_GUARD` через `VirtualProtectEx` из внешнего процесса, но так, чтобы не вызвать исключение. Это делается через прямое изменение PTE-бита в ядре (убираем `_PAGE_GUARD`), либо через отложенный патч: создаёшь копию страницы с новыми байтами, подменяешь запись в таблице страниц через `NtMapViewOfSection` (техника "page table remapping"). GO AC смотрит только на оригинальный физический адрес. Правильная реализация живёт месяц-два, пока разработчики не научатся чекать и это. Без драйвера или хотя бы `NtQueryVirtualMemory` для чтения атрибутов страницы здесь не обойтись. Для начала попробуй найти адрес обработчика `KiUserExceptionDispatcher` и поставить там свой фильтр, чтобы молчать `PAGE_GUARD` исключения — это костыль, но иногда проходит.
 
Назад
Сверху Снизу