ccsimplyspolit/CS2-P2C-TEMPLATES

GitHub: ccsimplyspolit/CS2-P2C-TEMPLATES

面向 CS2 逆向工程与反作弊研究的 P2C 模板合集,提供 VMProtect 脱壳重构、内核驱动和注入工具的完整源码。

Stars: 8 | Forks: 1

# CS2-P2C-TEMPLATES **用于《反恐精英 2》(Counter-Strike 2)逆向工程和安全研究的 research 模板(P2C — proof-of-concept)合集。** 这里的一切都是为了研究反作弊机制的工作原理、逆向 VMProtect 混淆的二进制文件,以及向 Valve BugHunter (HackerOne) 提交发现而构建的。 [![License](https://img.shields.io/badge/license-research--only-lightgrey?style=flat-square)](LICENSE) [![Depot](https://img.shields.io/badge/CS2%20build-14169-2196F3?style=flat-square)](DEPOT_STATE.md) [![Windows](https://img.shields.io/badge/Windows-10%2F11_x64-0078D4?style=flat-square&logo=windows)](#) [![C++](https://img.shields.io/badge/C++-17_%2F_kernel-blue?style=flat-square&logo=cplusplus)](#)
## 包含内容 该仓库包含 **10 个可运行的项目** — 5 个特定于 CS2 的(依赖于 offsets),5 个版本无关的。全部通过 MSBuild + WDK 编译。 | # | 项目 | 类型 | 功能描述 | |---|---|---|---| | 1 | [`dlls/VacLiveBypass`](source/dlls/VacLiveBypass/) | Injected DLL | 1:1 移植的 `FuckVacAgain.dll` — VMProtect anti-VAC helper。在 wire 序列化之前修改 `CBaseUserCmdPB.input_history`。 | | 2 | [`drivers/CS2IsValveDSSpooferDriver`](source/drivers/CS2IsValveDSSpooferDriver/) | Kernel .sys | 欺骗 `m_bIsValveDS`。使用 `MmCopyVirtualMemory` + `ProcessExitGuard` RAII。 | | 3 | [`drivers/CS2KillTriggerDriver`](source/drivers/CS2KillTriggerDriver/) | Kernel .sys | 通过 `kbdclass!KeyboardClassServiceCallback` 实现 Kill-trigger。 | | 4 | [`drivers/CS2RankSpooferDriver`](source/drivers/CS2RankSpooferDriver/) | Kernel .sys | 通过在 `get_rank_data` 中进行 trampoline injection 实现_rank spoof。 | | 5 | [`drivers/CS2HexSyncCompatDriver`](source/drivers/CS2HexSyncCompatDriver/) | Kernel .sys | **NEW** — 9-IOCTL kernel API,`CS2UnifiedInjector --method kernel` 的搭档。 | | 6 | [`apps/CS2IsValveDSSpooferConsole`](source/apps/CS2IsValveDSSpooferConsole/) | User .exe | 通过 SHM 控制 IsValveDS。 | | 7 | [`apps/CS2RankSpooferConsole`](source/apps/CS2RankSpooferConsole/) | User .exe | 通过 SHM 控制 RankSpoofer。 | | 8 | [`tools/CS2UnifiedInjector`](source/tools/CS2UnifiedInjector/) | User .exe | **11 种注入方法**:LoadLibrary / LdrLoadDll / ManualMap / ThreadHijack / APC / SetWindowsHook / Kernel / EarlyBird / Section / Atom / Doppel。 | | 9 | [`tools/CS2MemoryTool`](source/tools/CS2MemoryTool/) | User .exe | **NEW** — 通用 memory R/W:RPM / Nt-syscall / kernel-IOCTL / physical。 | | 10 | [`tools/KernelDriverMapper`](source/tools/KernelDriverMapper/) | User .exe | 通过 `iqvw64e.sys` (Intel NAL, CVE-2015-2291) 实现 kdmap。 | | 11 | [`tools/KernelDriverUnmapper`](source/tools/KernelDriverUnmapper/) | User .exe | 安全卸载已映射的 driver。 | | — | [`tools/KbdClassAnalyzer`](source/tools/KbdClassAnalyzer/) | User .exe | PDB-resolve `KeyboardClassServiceCallback`。 | | — | [`drivers/shared/`](source/drivers/shared/) | Header lib | `stealth_mode.h` — KDU 风格的强化 (MmUnloadedDrivers, PiDDBCache erase) | | 12 | [`lua_reverse/AW`](source/lua_reverse/AW/) | Lua devirt | **VACLiveGuard** — 逆向 DevX/Aimware anti-VAC Lua 插件。混淆的 Luraph v14.2 → 968 行干净的 Lua 移植 + 本地 sandbox (Aimware API mock)。 | ## 快速开始 ### 前置条件 - Windows 10/11 x64 - Visual Studio 2022 + WDK 10 (用于驱动程序) - VS 2022 的 MSBuild - 开启 Test signing (`bcdedit /set testsigning on`),或通过 kdmap 加载 - Steam + CS2 (用于功能测试) ### 一次性编译全部 ``` # 从 repository 根目录 foreach ($p in @( "source\dlls\VacLiveBypass\VacLiveBypass.vcxproj", "source\drivers\CS2IsValveDSSpooferDriver\CS2IsValveDSSpooferDriver.vcxproj", "source\drivers\CS2KillTriggerDriver\CS2KillTriggerDriver.vcxproj", "source\drivers\CS2RankSpooferDriver\CS2RankSpooferDriver.vcxproj", "source\apps\CS2IsValveDSSpooferConsole\CS2IsValveDSSpooferConsole.vcxproj", "source\apps\CS2RankSpooferConsole\CS2RankSpooferConsole.vcxproj", "source\tools\CS2Injector\CS2Injector.vcxproj", "source\tools\KbdClassAnalyzer\KbdClassAnalyzer.vcxproj", "source\tools\KernelDriverMapper\KernelDriverMapper.vcxproj", "source\tools\KernelDriverUnmapper\KernelDriverUnmapper.vcxproj" )) { & "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" ` $p /p:Configuration=Release /p:Platform=x64 /m /nologo /verbosity:minimal } ``` ### 预编译包 从 [GitHub Releases](https://github.com/ccsimplyspolit/CS2-P2C-TEMPLATES/releases) 下载预编译的 `.exe`/`.sys` 和 `.dll`。每个版本都包含用于校验的 SHA256SUMS。 要运行发行版中的驱动程序(离线,不进行 offset 的 runtime 更新): - 在 `HKLM\SYSTEM\CurrentControlSet\Control\CI\Config` 中禁用 `VulnerableDriverBlocklistEnable` - 禁用 HVCI (`HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity` → `Enabled=0`) - 重启 - 开启 Test signing:`bcdedit /set testsigning on` (+ 重启) - `sc create type=kernel binPath=path\to\.sys && sc start ` 或者通过 `KernelDriverMapper.exe`(我们的 kdmap)加载 — 不需要 testsigning。 ## 仓库布局 ``` CS2-P2C-TEMPLATES/ ├── source/ Исходники всех 10 проектов │ ├── dlls/VacLiveBypass/ 1:1 реконструкция FVA (VMProtect anti-VAC helper) │ ├── drivers/ Kernel .sys проекты │ │ ├── CS2IsValveDSSpooferDriver/ │ │ ├── CS2KillTriggerDriver/ │ │ ├── CS2RankSpooferDriver/ │ │ ├── CS2HexSyncCompatDriver/ 9-IOCTL kernel API для CS2UnifiedInjector │ │ └── shared/stealth_mode.h KDU-style anti-detection helpers │ ├── apps/ User-mode консоли (SHM API) │ │ ├── CS2IsValveDSSpooferConsole/ │ │ └── CS2RankSpooferConsole/ │ ├── tools/ │ │ ├── CS2UnifiedInjector/ 11 методов инжекта в одном exe │ │ ├── CS2MemoryTool/ универсальный memory R/W │ │ ├── KernelDriverMapper/ kdmap через iqvw64e.sys │ │ ├── KernelDriverUnmapper/ Безопасный unmap │ │ └── KbdClassAnalyzer/ PDB-резолв KeyboardClassServiceCallback │ └── lua_reverse/AW/ 🎯 VACLiveGuard — Aimware anti-VAC plugin reverse │ ├── VACLiveGuard.lua Итоговый чистый порт (968 строк) │ ├── orig/ Обфусцированные Luraph v14.0.2 + v14.2 │ ├── sandbox/ Aimware API mock + LuaJIT test runner │ ├── schema/cs2_sdk/ 3748 headers через source2gen (gitignored) │ └── docs/ ANALYSIS/SYMBOL_MAP/API_REFERENCE ├── docs/ Русскоязычная документация │ ├── wiki/ Deep-dive: ARCHITECTURE, WORKFLOW, HOWTO │ ├── NLINJECTOR_REVERSE.md Полный реверс NLinjector.exe + HexSyncService.sys │ ├── DRIVER_HARDENING.md KDU-inspired improvements roadmap │ ├── VULNERABLE_DRIVERS.md Список CVE без Microsoft blocklist entries │ └── ETHICS.md Этика + правовые рамки ├── third_party/ cs2-dumper, source2gen, steamtracking-protos ├── DEPOT_STATE.md Текущие оффсеты CS2 ├── ARCHITECTURE.md Общая схема ├── README.md (этот файл) └── LICENSE Research-only, non-commercial ``` ## 当前 CS2 版本 | 字段 | 值 | |---|---| | Build number | **14169** | | Depot ID | 24134959 | | 更新时间 | 2026-07-11 | 完整的 offset 表和项目状态:[`DEPOT_STATE.md`](DEPOT_STATE.md)。 ## 核心项目 — 概要 ### VacLiveBypass — FVA 重构 **这是什么。** 第三方 VMProtect 混淆的 DLL (`FuckVacAgain.dll` = FVA),它注入到 cs2.exe 中并在调用 `SerializeToArrayImpl` 之前修改 `CBaseUserCmdPB` — 包含玩家输入历史的 protobuf —。篡改过程不会被服务器验证器发现,因为客户端使用与合法缓冲区相同的密钥对已经伪造的缓冲区进行签名。 **重构方式。** 1. 通过 x64dbg + Scylla 在 VMP 脱壳后获取 runtime dump。 2. IDA + Hex-Rays — 反编译 200 多个函数。 3. 使用 C++17 进行 1:1 移植,每个 mutation phase 均带有 dump-VA/RVA anchor。 4. Multi-depot manifest (`version_manifest.h`) — 每次构建均通过 IDA MCP 验证 RVA。 **三个 Hook。** - **Hook A** — `CreateMove` (RVA `0x30F510`) — per-tick 篡改的入口点。 - **Hook B** — `LevelInit` (RVA `0x18B460`) — resolve alt_symbol + 重置状态。 - **Hook C** — `SerializeToArrayImpl` (RVA `0x1A1E028` vtable) — wire 传输前的最终写入。 **Section-J.** 主要的 subtick moves 发射器 — `sub_7FFBE82E8C32`。带有 fractional interpolator 的多迭代循环,每个 input tick 最多生成 30 个 fake subticks。 了解更多:[`source/dlls/VacLiveBypass/README.md`](source/dlls/VacLiveBypass/README.md),[`docs/wiki/ARCHITECTURE.md`](docs/wiki/ARCHITECTURE.md)。 ### CS2IsValveDSSpooferDriver Kernel-mode 驱动程序,每个 tick 读取/写入 cs2 的 SHM 配置中的 1 个字节 `m_bIsValveDS`。从 `a2x/cs2-dumper` 进行 offset 的 runtime 更新,源码中提供 offline fallback (build 14169: `dwGameRules = 0x23A0C58`, `m_bIsValveDS = 0xA4`)。 ### CS2KillTriggerDriver Kernel-mode 驱动程序,每 100ms 读取一次 `m_iNumRoundKills`,当 +1 时通过 `kbdclass!KeyboardClassServiceCallback` 注入 P/Numpad0-9/F13-F24 的按键(绕过 user-mode 输入 hooks)。 ### CS2RankSpooferDriver Kernel-mode 驱动程序,通过 pattern scan 查找 `get_rank_data`(与版本无关),通过 `KeStackAttachProcess + ZwAllocateVirtualMemoryEx` 在 cs2 中分配 user-mode 页面,写入 trampoline 并 patch CALL displacement。 ## 文档 - [`ARCHITECTURE.md`](ARCHITECTURE.md) — 所有 9 个项目是如何关联的 - [`DEPOT_STATE.md`](DEPOT_STATE.md) — 截至 2026-07-11 的 offset + 状态 - [`docs/ETHICS.md`](docs/ETHICS.md) — 道德与法律边界 - [`docs/VMPROTECT_DEVIRT.md`](docs/VMPROTECT_DEVIRT.md) — VMP devirt 笔记 - [`docs/wiki/`](docs/wiki/) — 深度文档:架构、工作流、HOWTO - [`source/dlls/VacLiveBypass/README.md`](source/dlls/VacLiveBypass/README.md) — FVA 重构深度剖析 ## 许可证 仅供 research,非商业用途。参见 [`LICENSE`](LICENSE)。该许可证明确禁止针对 Valve 的 live 服务器使用以及将其包含在打包的产品中。 发布此仓库是为了让 anti-cheat 工程师、protobuf 研究人员和 reverse-engineers 能够研究其 mutation 机制并构建服务器端的检测启发式算法。在 Valve 服务器上玩游戏期间将 DLL 注入 CS2 违反了 Steam 订户协议、CS2 EULA,并可能违反相关的计算机滥用法律(美国 CFAA §1030、英国 CMA 1990、德国 StGB §202a)。作者不对任何第三方的使用行为负责。
标签:C++, macOS, rizin, Windows驱动开发, 云资产清单, 内核驱动, 反作弊绕过, 数据擦除, 游戏外挂, 网络协议, 逆向工程, 高性能