
Ricostruzione byte-per-byte in C++20 di 15 moduli di scansione x86 di Valve Anti-Cheat e di steamservice.dll, con test di parità e una documentazione tecnica completa.
Ricostruzione byte-per-byte in C++20 di 15 classici moduli di scansione x86 di Valve Anti-Cheat (VAC) e di steamservice.dll.
Ogni worker ricostruito è verificato rispetto ai binari originali firmati Valve (../vac-research) per un'esatta parità di output di 4232 byte, incluse le stranezze originali, la spazzatura non inizializzata nello stack e i bug contrassegnati con // valve bug, keep it.
Analisi tecnica completa di steamservice.dll, dell'SDK dei moduli condivisi, di tutti i 15 scanner e dei bug di Valve:
| Percorso | Descrizione |
|---|---|
sdk/ | Runtime condiviso dei moduli: _runfunc@20, .vacini, RunDispatcher, BootstrapMain (172 import), ICE, RSA-512 raw, MD5/CRC32, LZ4, helper PE/NT |
modules/ | 15 moduli di scansione ricostruiti (una directory per modulo) |
service/ | Ricostruzione di steamservice.dll: gestore dei moduli IPC, verifica della firma RSA-1024 VLV, mapper manuale (LoadModuleHiddenInternal) e monitor di processo ETW da 5 minuti |
tests/ | Suite di parità byte-per-byte live e sintetiche rispetto alle DLL originali |
tools/ | Generatori di blob dei moduli, ispettore dei worker node, export IDA e script di verifica @orig |
| Modulo | Worker ID | Riepilogo |
|---|---|---|
boot_config | 0x06A79A9E | Hive di registro BCD (HKLM\BCD00000000\Objects), testsigning / nointegritychecks, policy NX, NTFS File ID |
cpuid | 0x023429C3 | Fissaggio dell'affinità sulla CPU 0 e dump delle foglie CPUID (0x0, 0x40000000, 0x80000000) |
devices | 0x05EC50DC | Enumerazione dei dispositivi PCI e USB attivi tramite SetupAPI |
driver_inventory | 0x06ACD913, 0x06C2B5BB | Servizi driver attivi vs directory di oggetti \Driver + MD5 normalizzato dei file driver |
image_scan | 0x0CDA6778, 0x09D3248C | Scanner PE su disco/memoria (MD5 con relocation rimosse, icone, PDB, WinTrust, pattern scan) + indirizzi di avvio dei thread |
image_scan_threads | 0x05A52008, 0x0122C7DA | Stesso .text di image_scan costruito con chiavi e worker ID ruotati |
payload_executor | 0x0236ED5F | Allocazione di memoria, unpacker di payload RSA, PAGE_EXECUTE_READWRITE e chiamata all'entry point |
process_file_identity | 0x0B2D8276, 0x0CA11165, 0x013B4330 | Dossier del processo (SID, PEB32/64, cmdline, hash), catena degli NTFS File ID degli antenati, inventario delle directory |
process_memory_map | 0x06E048F4, 0x0DB55D3C | Percorso PEB->Ldr e della memoria virtuale, page folding, MD5 del PE con relocation rimosse, coda del report LZ4 |
service_lookup | 0x0FA94991 | Ricerca del driver tramite hash del nome del servizio, espansione sysnative, NTFS File ID |
shared_section | 0x0E3481C0, 0x06781BC4 | Ricerca di sezioni con nome tramite pattern GUID via OpenFileMappingW e percorso della directory NT \ |
system_handles | 0x002F6DC7, 0x0929BC41 | Snapshot Toolhelp, maschere dei tipi di handle a 64 bit e brute-force dei PID nascosti (unPid -= 4) |
system_info | 0x0F8083A0, 0x0C2232C2 | Riepilogo del sistema operativo, KUSER_SHARED_DATA, volumi e parser delle esportazioni di ntdll.dll su disco per gli SSN raw |
target_handles | 0x08A9324E | Syscall x64 dirette WoW64 Heaven's Gate (0x33) alla ricerca di processi con handle verso il gioco |
timing_check | 0x0D8C40E1 | Modulo legacy senza BootstrapMain: tick di KUSER_SHARED_DATA attorno a uno stub .data patchato |
Apri vac.sln in Visual Studio 2022 (Release | Win32), oppure compila ed esegui l'intera suite di parità dalla riga di comando:
python tests/build_tests.py
python tests/parity/run_all.py
python tools/ida/fill_orig.py --check sdk modules service
run_all.py esegue ogni worker live rispetto alle DLL originali (filtrando il rumore del sistema operativo eseguendo prima due volte il binario originale contro se stesso), verifica i pacchetti di output completi di _runfunc@20 inclusi ICE e il sealing RSA-512, ed esegue le suite deterministiche di fuzz/sintetiche.