- Статус
- Оффлайн
- Регистрация
- 13 Фев 2026
- Сообщения
- 347
- Реакции
- 7
Народ, кто ковыряет защиту в ARC Raiders — ловите инфу по обходу Theia Anti-Tamper.
Многие пытались дампить PioneerGame.exe через Scylla или PE-Sieve, но Theia — штука поинтереснее стандартного мусора. У них защита на уровне 60к+ зашифрованных 4KB страниц, которые по умолчанию имеют атрибут PAGE_NOACCESS. Когда проц пытается исполнить страницу, срабатывает STATUS_ACCESS_VIOLATION, Theia ловит эксепшн, расшифровывает страницу «на лету» и отдает управление. Стандартные дамперы просто ловят либо мусор, либо нули.
Техническая база обхода:
Алгоритм дампа (за 3 секунды):
По итогу — 100% дамп бинарника (~243MB). Игра даже не успевает понять, что её вывернули наизнанку, так как всё делается в «замороженном» состоянии.
Кто уже пробовал по этой схеме снимать дамп — есть нюансы с версиями защиты или всё еще гладко летит?
Многие пытались дампить PioneerGame.exe через Scylla или PE-Sieve, но Theia — штука поинтереснее стандартного мусора. У них защита на уровне 60к+ зашифрованных 4KB страниц, которые по умолчанию имеют атрибут PAGE_NOACCESS. Когда проц пытается исполнить страницу, срабатывает STATUS_ACCESS_VIOLATION, Theia ловит эксепшн, расшифровывает страницу «на лету» и отдает управление. Стандартные дамперы просто ловят либо мусор, либо нули.
Техническая база обхода:
- Theia патчит KiUserExceptionDispatcher в ntdll.dll и перенаправляет всё на runtime.dll, который скрыт из PEB-списков.
- Защита юзает 7 уровней обфускации внутри этого runtime.dll, включая анти-дизасм (EB FF), junk-код (60% мусора) и прямые syscalls с динамическим вычислением номеров.
- Главная фишка — модуль-невидимка. Они держат 3 копии runtime.dll в памяти. Нужно хукать все три.
Алгоритм дампа (за 3 секунды):
- Приостановка всех потоков игры (CreateToolhelp32Snapshot + SuspendThread), чтобы не сработал integrity checker.
- Установка хуков через прямые syscalls (NtProtectVirtualMemory), чтобы не палиться на стандартных API.
- Синтезирование фальшивых execute-фаултов (ExceptionInformation[0] == 8). Вручную создаем контекст с Rip, указывающим на защищенную страницу, чтобы Theia думала, что это легитимное выполнение кода.
- Перехват расшифрованных данных, запись в буфер и редирект на RET-стаб.
- Снятие хуков и возобновление работы потоков.
Код:
E8 ?? ?? ?? ?? 83 F8 ?? 76
1. Хук-детекция: Theia палит любые вызовы VirtualProtect на своих регионах.
2. Валидация контекста: они проверяют, что Rip действительно ведет на страницу игры, поэтому инжект с левым потоком не прокатит.
2. Валидация контекста: они проверяют, что Rip действительно ведет на страницу игры, поэтому инжект с левым потоком не прокатит.
По итогу — 100% дамп бинарника (~243MB). Игра даже не успевает понять, что её вывернули наизнанку, так как всё делается в «замороженном» состоянии.
Кто уже пробовал по этой схеме снимать дамп — есть нюансы с версиями защиты или всё еще гладко летит?