sapdragon/vac
安全用 C++20 逐字节重建 15 个经典 x86 VAC 扫描模块和 steamservice.dll,并用原版 Valve 二进制做一致性测试。
项目介绍
这个仓库用 C++20 重建了 15 个经典 x86 版 Valve Anti-Cheat(VAC)扫描模块和 steamservice.dll,目标是和 Valve 原版签名二进制逐字节一致。它是逆向研究项目,不是可用的反作弊产品:重点是还原原始输出包,包括那些怪癖和 bug(代码里标注为 // valve bug, keep it)README。
代码按职责分为三块:sdk/ 是共享模块运行时,包含 _runfunc@20、调度器、ICE、裸 RSA-512、MD5/CRC32、LZ4 和 PE/NT 辅助函数;modules/ 是 15 个扫描模块;service/ 重建 steamservice.dll 的 IPC 模块管理、RSA-1024 签名校验、手动映射器和 5 分钟一次的 ETW 进程监控 README。重建的 worker 覆盖 BCD/testsigning 检查、CPUID 转储、PCI/USB 设备枚举、驱动清单、PE 镜像扫描、进程内存映射、句柄枚举,以及从 WoW64 进程直接发起 x64 系统调用等行为 README。
适合逆向工程师、反作弊研究者和学习 Windows 内部机制的人,用来把忠实复现和真实二进制做对照。完整技术说明覆盖 steamservice.dll、模块 SDK、全部扫描器和 Valve 的 bug,提供英文版和俄文版,并有 PDF。
快速使用
前提是 Windows 系统、Visual Studio 2022、可用的 Python,以及放在相邻目录 ../vac-research 下的 Valve 原始二进制和研究材料,一致性测试需要和它们比对。
- 用 Visual Studio 2022 打开
vac.sln,选择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 会让每个 worker 与原始 DLL 实机对比:先把原始二进制对自身跑两次以过滤系统噪声,再校验完整的 _runfunc@20 输出包(包括 ICE 和 RSA-512 封包),最后执行确定性的模糊/合成测试 README。fill_orig.py --check 用于检查源码里的 @orig 标注。
使用约束
- 只面向
Release | Win32,是 32 位 x86 的重建,不是可移植的通用库。 - 逐字节一致性依赖
../vac-research里的原版签名 Valkyrie 二进制;没有这些文件,实机一致性测试无法运行。 - 部分模块刻意复现未初始化栈内容和 Valve 的 bug,输出不会比原版更"干净"。
- 这是对专有软件的逆向重建;复用代码前请自行确认 MIT 许可证和 Valve 相关条款。
HotRepo 点评
HotRepo 没有记录到该仓库进入全部语言日榜。它在 C++ 新项目榜留下的唯一一次快照(2026-11-11)中记录到 113 stars,约一小时内新增 8 stars 和 1 fork,同一窗口内采集到的 star 总数从 105 升到 113。观察窗口很短,只能说明早期出现过一次短促增长,不足以判断趋势。它的吸引力很具体:把 VAC 内部实现精确复现并配上公开技术文档,面向的是小众技术读者,而不是大众工具市场。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。