
Byte-genaue C++20-Rekonstruktion von 15 Valve Anti-Cheat x86-Scanmodulen und steamservice.dll, mit Paritätstests und einer vollständigen technischen Dokumentation.
Byte-für-Byte-C++20-Rekonstruktion von 15 klassischen x86-Valve-Anti-Cheat-(VAC-)Scanmodulen und steamservice.dll.
Jeder nachgebaute Worker wird gegen die originalen signierten Valve-Binärdateien (../vac-research) auf exakte 4232-Byte-Ausgabeparität verifiziert, einschließlich der ursprünglichen Eigenheiten, nicht initialisiertem Stack-Müll und Fehlern, die mit // valve bug, keep it markiert sind.
Vollständige technische Analyse von steamservice.dll, dem gemeinsamen Modul-SDK, allen 15 Scannern und Valves Fehlern:
| Pfad | Beschreibung |
|---|---|
sdk/ | Gemeinsame Modul-Laufzeit: _runfunc@20, .vacini, RunDispatcher, BootstrapMain (172 Importe), ICE, rohes RSA-512, MD5/CRC32, LZ4, PE/NT-Hilfsfunktionen |
modules/ | 15 rekonstruierte Scanmodule (ein Verzeichnis pro Modul) |
service/ | Rekonstruktion von steamservice.dll: IPC-Modulmanager, VLV-RSA-1024-Signaturprüfung, manueller Mapper (LoadModuleHiddenInternal) und 5-minütiger ETW-Prozessmonitor |
tests/ | Live- und synthetische Byte-für-Byte-Paritätssuiten gegen die Original-DLLs |
tools/ | Modul-Blob-Generatoren, Worker-Node-Inspektor, IDA-Export und @orig-Verifikationsskripte |
| Modul | Worker-IDs | Zusammenfassung |
|---|---|---|
boot_config | 0x06A79A9E | BCD-Registry-Hive (HKLM\BCD00000000\Objects), testsigning / nointegritychecks, NX-Richtlinie, NTFS File ID |
cpuid | 0x023429C3 | CPU-0-Affinitätsbindung und CPUID-Leaf-Dump (0x0, 0x40000000, 0x80000000) |
devices | 0x05EC50DC | Aufzählung aktiver PCI- und USB-Geräte über SetupAPI |
driver_inventory | 0x06ACD913, 0x06C2B5BB | Aktive Treiberdienste vs. \Driver-Objektverzeichnis + normalisierter MD5 der Treiberdateien |
image_scan | 0x0CDA6778, 0x09D3248C | Disk-/Speicher-PE-Scanner (relokationsbereinigter MD5, Icons, PDB, WinTrust, Pattern-Scan) + Thread-Startadressen |
image_scan_threads | 0x05A52008, 0x0122C7DA | Derselbe .text wie image_scan, gebaut mit rotierten Schlüsseln und Worker-IDs |
payload_executor | 0x0236ED5F | Speicherzuweisung, RSA-Payload-Unpacker, PAGE_EXECUTE_READWRITE und Entry-Aufruf |
process_file_identity | 0x0B2D8276, 0x0CA11165, 0x013B4330 | Prozess-Dossier (SID, PEB32/64, Cmdline, Hashes), Vorfahren-NTFS-File-ID-Kette, Verzeichnisinventar |
process_memory_map | 0x06E048F4, 0x0DB55D3C | PEB->Ldr- und virtueller Speicher-Walk, Page-Folding, relokationsbereinigter PE-MD5, LZ4-Berichtsende |
service_lookup | 0x0FA94991 | Treibersuche per Dienstnamen-Hash, sysnative-Expansion, NTFS File ID |
shared_section | 0x0E3481C0, 0x06781BC4 | Suche nach benannten Sections per GUID-Muster über OpenFileMappingW und NT-\-Verzeichnis-Walk |
system_handles | 0x002F6DC7, 0x0929BC41 | Toolhelp-Snapshot, 64-Bit-Handle-Typmasken und Brute-Force auf versteckte PIDs (unPid -= 4) |
system_info | 0x0F8083A0, 0x0C2232C2 | OS-Zusammenfassung, KUSER_SHARED_DATA, Volumes und On-Disk-Exportparser für ntdll.dll für rohe SSNs |
target_handles | 0x08A9324E | WoW64 Heaven's Gate (0x33) direkte x64-Syscalls zur Suche nach Prozessen mit Handles auf das Spiel |
timing_check | 0x0D8C40E1 | Legacy-Modul ohne BootstrapMain: KUSER_SHARED_DATA-Ticks um einen gepatchten .data-Stub |
Öffne vac.sln in Visual Studio 2022 (Release | Win32) oder baue und führe die vollständige Paritätssuite über die Kommandozeile aus:
python tests/build_tests.py
python tests/parity/run_all.py
python tools/ida/fill_orig.py --check sdk modules service
run_all.py führt jeden Worker live gegen die Original-DLLs aus (wobei OS-Rauschen herausgefiltert wird, indem zuerst die Original-Binärdatei zweimal gegen sich selbst ausgeführt wird), verifiziert vollständige _runfunc@20-Ausgabepakete einschließlich ICE und RSA-512-Versiegelung und führt die deterministischen Fuzz-/Synthetik-Suiten aus.