
15개의 Valve Anti-Cheat x86 스캔 모듈과 steamservice.dll을 바이트 단위로 재구성한 C++20 구현으로, 동등성 테스트와 전체 기술 문서를 포함합니다.
15개의 클래식 x86 Valve Anti-Cheat(VAC) 스캔 모듈과 steamservice.dll을 바이트 단위로 재구성한 C++20 프로젝트입니다.
재구성된 모든 워커는 원본 서명된 Valve 바이너리(../vac-research)와 대조하여 정확히 4232바이트의 출력 일치를 검증하며, 원본의 특이 동작, 초기화되지 않은 스택 쓰레기 값, 그리고 // 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/ | 모듈 블롭 생성기, 워커 노드 검사기, IDA 내보내기 및 @orig 검증 스크립트 |
| 모듈 | 워커 ID | 요약 |
|---|---|---|
boot_config | 0x06A79A9E | BCD 레지스트리 하이브(HKLM\BCD00000000\Objects), testsigning / nointegritychecks, NX 정책, NTFS File ID |
cpuid | 0x023429C3 | CPU 0 선호도 고정 및 CPUID 리프 덤프(0x0, 0x40000000, 0x80000000) |
devices | 0x05EC50DC | SetupAPI를 통한 활성 PCI 및 USB 장치 열거 |
driver_inventory | 0x06ACD913, 0x06C2B5BB | 활성 드라이버 서비스와 \Driver 객체 디렉터리 비교 + 드라이버 파일의 정규화된 MD5 |
image_scan | 0x0CDA6778, 0x09D3248C | 디스크/메모리 PE 스캐너(재배치 제거 MD5, 아이콘, PDB, WinTrust, 패턴 스캔) + 스레드 시작 주소 |
image_scan_threads | 0x05A52008, 0x0122C7DA | image_scan과 동일한 .text를 회전된 키와 워커 ID로 빌드한 모듈 |
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 및 가상 메모리 순회, 페이지 폴딩, 재배치 제거 PE MD5, LZ4 보고서 꼬리 |
service_lookup | 0x0FA94991 | 서비스 이름 해시로 드라이버 조회, sysnative 확장, NTFS File ID |
shared_section | 0x0E3481C0, 0x06781BC4 | OpenFileMappingW 및 NT \ 디렉터리 순회를 통한 GUID 패턴 기반 명명된 섹션 조회 |
system_handles | 0x002F6DC7, 0x0929BC41 | Toolhelp 스냅샷, 64비트 핸들 타입 마스크, 숨겨진 PID 무차별 대입(unPid -= 4) |
system_info | 0x0F8083A0, 0x0C2232C2 | OS 요약, KUSER_SHARED_DATA, 볼륨, 원시 SSN을 위한 디스크상 ntdll.dll 익스포트 파서 |
target_handles | 0x08A9324E | WoW64 Heaven's Gate(0x33) 직접 x64 시스템 콜로 게임에 대한 핸들을 가진 프로세스 탐색 |
timing_check | 0x0D8C40E1 | BootstrapMain이 없는 레거시 모듈: 패치된 .data 스텁 주변의 KUSER_SHARED_DATA 틱 |
Visual Studio 2022(Release | Win32)에서 vac.sln을 열거나, 명령줄에서 전체 일치 테스트 스위트를 빌드하고 실행하세요:
python tests/build_tests.py
python tests/parity/run_all.py
python tools/ida/fill_orig.py --check sdk modules service
run_all.py는 각 워커를 원본 DLL과 대조하여 실시간으로 실행하고(원본 바이너리를 먼저 자기 자신과 두 번 실행하여 OS 노이즈를 걸러냄), ICE 및 RSA-512 봉인을 포함한 전체 _runfunc@20 출력 패킷을 검증하며, 결정론적 퍼즈/합성 스위트를 실행합니다.