
إعادة بناء دقيقة بالبايت لـ C++20 لـ 15 وحدة فحص x86 تابعة لـ Valve Anti-Cheat وملف steamservice.dll، مع اختبارات تكافؤ وشرح تقني كامل.
إعادة بناء C++20 مطابقة بايت ببايت لـ 15 وحدة فحص كلاسيكية من وحدات Valve Anti-Cheat (VAC) لنظام x86 وsteamservice.dll.
يتم التحقق من كل عامل مُعاد بناؤه مقابل ثنائيات 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)، ومراقب عمليات ETW لمدة 5 دقائق |
tests/ | مجموعات اختبار تطابق بايت ببايت حية واصطناعية مقابل ملفات DLL الأصلية |
tools/ | مولّدات كتل الوحدات، فاحص عُقد العامل، تصدير IDA، وسكربتات التحقق @orig |
| الوحدة | معرّفات العامل | الملخص |
|---|---|---|
boot_config | 0x06A79A9E | خلية تسجيل BCD (HKLM\BCD00000000\Objects)، testsigning / nointegritychecks، سياسة NX، معرّف ملف NTFS |
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 مبني بمفاتيح ومعرّفات عامل مُدوَّرة |
payload_executor | 0x0236ED5F | تخصيص ذاكرة، فاكّ حزمة RSA، PAGE_EXECUTE_READWRITE، واستدعاء نقطة الدخول |
process_file_identity | 0x0B2D8276، 0x0CA11165، 0x013B4330 | ملف تعريف العملية (SID، PEB32/64، سطر الأوامر، التجزئات)، سلسلة معرّفات ملف NTFS للسلف، جرد الدليل |
process_memory_map | 0x06E048F4، 0x0DB55D3C | PEB->Ldr ومسح الذاكرة الافتراضية، طيّ الصفحات، MD5 لـ PE مُزال الإزاحة، ذيل تقرير LZ4 |
service_lookup | 0x0FA94991 | البحث عن برنامج تشغيل عبر تجزئة اسم الخدمة، توسيع sysnative، معرّف ملف NTFS |
shared_section | 0x0E3481C0، 0x06781BC4 | البحث عن مقطع مُسمّى بنمط GUID عبر OpenFileMappingW ومسح دليل NT \ |
system_handles | 0x002F6DC7، 0x0929BC41 | لقطة Toolhelp، أقنعة أنواع المقابض 64-بت، والتخمين القسري لمعرّفات العمليات المخفية (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 كل عامل مباشرة مقابل ملفات DLL الأصلية (مع تصفية ضوضاء نظام التشغيل عبر تشغيل الثنائي الأصلي مرتين مقابل نفسه أولًا)، ويتحقق من حزم مخرجات _runfunc@20 الكاملة بما في ذلك ICE وختم RSA-512، وينفّذ مجموعات الاختبار الحتمية للتهيئة العشوائية/الاصطناعية.