
Побайтовая реконструкция на C++20 15 x86-модулей сканирования Valve Anti-Cheat и steamservice.dll, с тестами на паритет и полным техническим описанием.
Побайтовая реконструкция на C++20 15 классических модулей сканирования x86 Valve Anti-Cheat (VAC) и steamservice.dll.
Каждый восстановленный worker проверяется на точное побайтовое совпадение 4232-байтового вывода с оригинальными подписанными бинарниками Valve (../vac-research), включая оригинальные особенности, неинициализированный мусор в стеке и баги, помеченные // valve bug, keep it.
Полный технический разбор steamservice.dll, общего SDK модулей, всех 15 сканеров и багов Valve:
| Путь | Описание |
|---|---|
sdk/ | Общая среда выполнения модулей: _runfunc@20, .vacini, RunDispatcher, BootstrapMain (172 импорта), ICE, сырой RSA-512, MD5/CRC32, LZ4, помощники PE/NT |
modules/ | 15 восстановленных модулей сканирования (по одному каталогу на модуль) |
service/ | Реконструкция steamservice.dll: менеджер IPC-модулей, проверка подписи VLV RSA-1024, ручной маппер (LoadModuleHiddenInternal) и 5-минутный монитор процессов ETW |
tests/ | Наборы тестов побайтового совпадения в реальном времени и синтетических тестов против оригинальных DLL |
tools/ | Генераторы блобов модулей, инспектор узлов worker, экспорт из IDA и скрипты проверки @orig |
| Модуль | ID worker | Краткое описание |
|---|---|---|
boot_config | 0x06A79A9E | Куст реестра BCD (HKLM\BCD00000000\Objects), testsigning / nointegritychecks, политика NX, NTFS File ID |
cpuid | 0x023429C3 | Привязка к CPU 0 и дамп листьев CPUID (0x0, 0x40000000, 0x80000000) |
devices | 0x05EC50DC | Перечисление активных устройств PCI и USB через SetupAPI |
driver_inventory | 0x06ACD913, 0x06C2B5BB | Активные службы драйверов против каталога объектов \Driver + нормализованный MD5 файлов драйверов |
image_scan | 0x0CDA6778, 0x09D3248C | Сканер PE на диске/в памяти (MD5 со снятыми релокациями, иконки, PDB, WinTrust, поиск по шаблону) + адреса запуска потоков |
image_scan_threads | 0x05A52008, 0x0122C7DA | Тот же .text, что и image_scan, собранный с ротированными ключами и ID worker |
payload_executor | 0x0236ED5F | Выделение памяти, распаковщик RSA-полезной нагрузки, PAGE_EXECUTE_READWRITE и вызов точки входа |
process_file_identity | 0x0B2D8276, 0x0CA11165, 0x013B4330 | Досье процесса (SID, PEB32/64, командная строка, хэши), цепочка NTFS File ID предков, инвентаризация каталогов |
process_memory_map | 0x06E048F4, 0x0DB55D3C | Обход PEB->Ldr и виртуальной памяти, свёртка страниц, MD5 PE со снятыми релокациями, хвост отчёта LZ4 |
service_lookup | 0x0FA94991 | Поиск драйвера по хэшу имени службы, раскрытие sysnative, NTFS File ID |
shared_section | 0x0E3481C0, 0x06781BC4 | Поиск именованной секции по шаблону GUID через OpenFileMappingW и обход каталога NT \ |
system_handles | 0x002F6DC7, 0x0929BC41 | Снимок Toolhelp, 64-битные маски типов дескрипторов и перебор скрытых PID (unPid -= 4) |
system_info | 0x0F8083A0, 0x0C2232C2 | Сводка ОС, KUSER_SHARED_DATA, тома и парсер экспортов ntdll.dll на диске для сырых SSN |
target_handles | 0x08A9324E | Прямые x64-сисколлы WoW64 Heaven's Gate (0x33) в поисках процессов с дескрипторами к игре |
timing_check | 0x0D8C40E1 | Устаревший модуль без BootstrapMain: тики KUSER_SHARED_DATA вокруг пропатченной заглушки .data |
Откройте vac.sln в Visual Studio 2022 (Release | Win32) или соберите и запустите полный набор тестов совпадения из командной строки:
python tests/build_tests.py
python tests/parity/run_all.py
python tools/ida/fill_orig.py --check sdk modules service
run_all.py запускает каждый worker в реальном времени против оригинальных DLL (отфильтровывая шум ОС путём предварительного двукратного запуска оригинального бинарника против самого себя), проверяет полные выходные пакеты _runfunc@20, включая ICE и запечатывание RSA-512, и выполняет детерминированные наборы фаззинга и синтетических тестов.