
Reconstrucción byte por byte en C++20 de 15 módulos de escaneo x86 de Valve Anti-Cheat y de steamservice.dll, con pruebas de paridad y un análisis técnico completo.
Reconstrucción byte por byte en C++20 de 15 módulos de escaneo clásicos de Valve Anti-Cheat (VAC) para x86 y de steamservice.dll.
Cada worker reconstruido se verifica contra los binarios originales firmados de Valve (../vac-research) para lograr una paridad exacta de salida de 4232 bytes, incluidas las peculiaridades originales, la basura de pila no inicializada y los errores marcados con // valve bug, keep it.
Desglose técnico completo de steamservice.dll, el SDK de módulos compartido, los 15 escáneres y los errores de Valve:
| Ruta | Descripción |
|---|---|
sdk/ | Runtime de módulos compartido: _runfunc@20, .vacini, RunDispatcher, BootstrapMain (172 importaciones), ICE, RSA-512 en crudo, MD5/CRC32, LZ4, utilidades PE/NT |
modules/ | 15 módulos de escaneo reconstruidos (un directorio por módulo) |
service/ | Reconstrucción de steamservice.dll: gestor de módulos IPC, comprobación de firma RSA-1024 VLV, mapeador manual (LoadModuleHiddenInternal) y monitor de procesos ETW de 5 minutos |
tests/ | Suites de paridad byte por byte en vivo y sintéticas contra las DLL originales |
tools/ | Generadores de blobs de módulos, inspector de nodos worker, exportación de IDA y scripts de verificación @orig |
| Módulo | IDs de worker | Resumen |
|---|---|---|
boot_config | 0x06A79A9E | Colmena de registro BCD (HKLM\BCD00000000\Objects), testsigning / nointegritychecks, política NX, File ID de NTFS |
cpuid | 0x023429C3 | Fijación de afinidad a la CPU 0 y volcado de hojas CPUID (0x0, 0x40000000, 0x80000000) |
devices | 0x05EC50DC | Enumeración de dispositivos PCI y USB activos mediante SetupAPI |
driver_inventory | 0x06ACD913, 0x06C2B5BB | Servicios de controladores activos frente al directorio de objetos \Driver + MD5 normalizado de los archivos de controlador |
image_scan | 0x0CDA6778, 0x09D3248C | Escáner de PE en disco/memoria (MD5 con reubicaciones eliminadas, iconos, PDB, WinTrust, escaneo de patrones) + direcciones de inicio de hilos |
image_scan_threads | 0x05A52008, 0x0122C7DA | El mismo .text que image_scan compilado con claves e IDs de worker rotados |
payload_executor | 0x0236ED5F | Asignación de memoria, desempaquetador de payload RSA, PAGE_EXECUTE_READWRITE y llamada a la entrada |
process_file_identity | 0x0B2D8276, 0x0CA11165, 0x013B4330 | Dossier del proceso (SID, PEB32/64, línea de comandos, hashes), cadena de File ID de NTFS de los ancestros, inventario de directorios |
process_memory_map | 0x06E048F4, 0x0DB55D3C | Recorrido de PEB->Ldr y de la memoria virtual, plegado de páginas, MD5 del PE con reubicaciones eliminadas, cola del informe en LZ4 |
service_lookup | 0x0FA94991 | Búsqueda de controladores por hash del nombre de servicio, expansión de sysnative, File ID de NTFS |
shared_section | 0x0E3481C0, 0x06781BC4 | Búsqueda de secciones con nombre por patrón GUID mediante OpenFileMappingW y recorrido del directorio NT \ |
system_handles | 0x002F6DC7, 0x0929BC41 | Instantánea de Toolhelp, máscaras de tipo de handle de 64 bits y fuerza bruta de PIDs ocultos (unPid -= 4) |
system_info | 0x0F8083A0, 0x0C2232C2 | Resumen del SO, KUSER_SHARED_DATA, volúmenes y analizador de exportaciones de ntdll.dll en disco para obtener SSNs en crudo |
target_handles | 0x08A9324E | Llamadas al sistema x64 directas mediante WoW64 Heaven's Gate (0x33) para buscar procesos con handles al juego |
timing_check | 0x0D8C40E1 | Módulo heredado sin BootstrapMain: ticks de KUSER_SHARED_DATA alrededor de un stub .data parcheado |
Abre vac.sln en Visual Studio 2022 (Release | Win32), o compila y ejecuta la suite de paridad completa desde la línea de comandos:
python tests/build_tests.py
python tests/parity/run_all.py
python tools/ida/fill_orig.py --check sdk modules service
run_all.py ejecuta cada worker en vivo contra las DLL originales (filtrando el ruido del SO ejecutando primero el binario original dos veces contra sí mismo), verifica los paquetes de salida completos de _runfunc@20, incluidos ICE y el sellado RSA-512, y ejecuta las suites deterministas de fuzzing y sintéticas.