From 9775a76c109f8c670740f7da8a4783088d2534f3 Mon Sep 17 00:00:00 2001 From: jianglao Date: Sun, 28 Jun 2026 02:25:36 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=85=AC=E5=BC=80=20R0Guard=20?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=9E=B6=E6=9E=84=E8=AF=B4=E6=98=8E=E4=B8=8E?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=BC=80=E6=94=BE=E8=8C=83=E5=9B=B4=E5=A3=B0?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- README.md | 26 ++ docs/PROJECT_OVERVIEW.md | 625 +++++++++++++++++++++++++++++++++++++++ docs/README.md | 28 ++ 3 files changed, 679 insertions(+) create mode 100644 README.md create mode 100644 docs/PROJECT_OVERVIEW.md create mode 100644 docs/README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..85c94a5 --- /dev/null +++ b/README.md @@ -0,0 +1,26 @@ +# R0Guard + +R0Guard 是面向 CS:GO / CS2 的反作弊系统。本仓库**仅公开架构与设计文档**,不包含完整源代码。 + +## 文档 + +- **[项目架构说明](./docs/PROJECT_OVERVIEW.md)** — 系统整体架构、模块划分、AI 图片检测链路、客户端与服务端功能说明 + +## 关于代码公开范围 + +出于**代码安全性**与**防破解**需要,当前**暂不公开完整源代码**。 + +现阶段仅公布与 **AI 视觉分析** 相关的项目架构说明,便于了解截图采集、AI 推理、事件上报与主服务端处置之间的整体设计与数据流向。 + +后续将根据实际情况,**视情况开放部分非核心模块代码**;以下内容**不在公开计划内**: + +- 核心检测与防护算法实现 +- 通信加密、证书与密钥相关实现细节 +- 反调试、代码加固(如 VMProtect)相关逻辑 +- 可被直接用于绕过或仿制的关键业务细节 + +如有合作或技术交流需求,请通过项目维护方私下联系。 + +--- + +**R0Guard** — CS:GO / CS2 Anti-Cheat System diff --git a/docs/PROJECT_OVERVIEW.md b/docs/PROJECT_OVERVIEW.md new file mode 100644 index 0000000..d4f240a --- /dev/null +++ b/docs/PROJECT_OVERVIEW.md @@ -0,0 +1,625 @@ +# R0Guard 项目完整总结报告 + +> 版本:**1.0.39** | 平台:**Windows x64** | 目标游戏:**CS:GO / CS2** +> 文档基于当前代码库完整梳理,涵盖客户端、注入 DLL、AI 图片检测服务、主服务端四大模块。 + +--- + +## 一、项目概述 + +**R0Guard** 是一套面向 CS:GO / CS2 的**完整反作弊系统**,由以下部分组成: + + +| 模块 | 技术栈 | 角色 | +| -------------- | ---------------------------- | -------------------------------------------------- | +| **injector/** | C++17 / Win32 | 主客户端(`R0Guard.exe`),负责注入、监控、云端通信、远程控制台 | +| **dll/** | C++17 / MinHook / ImGui | 游戏内检测 DLL(`R0GuardDll64.dll` / `R0GuardDll32.dll`) | +| **ai-service/** | 独立部署(Python/Node 等) | **AI 图片检测服务**:接收客户端截图,识别作弊 UI/外挂界面,将检测结果事件上报主服务端 | +| **server/** | Node.js + MySQL + Redis | **主服务端**:认证、事件入库、黑白名单、自动封禁、客户端端口/控制台地址记录 | +| **common/** | 共享头文件 | 协议、日志、加密、工具库 | +| **resources/** | 证书、Dashboard HTML、RSA 密钥 | 运行时资源 | + + +系统采用 **DLL 注入 + 进程内扫描 + 截图 AI 识别 + 云端上报 + FRP 远程管控** 的架构。客户端定时截图先上传至 **AI 图片检测服务** 做视觉分析,AI 服务再将检测事件转发至 **主服务端** 统一入库与处置;心跳、进程内检测等直连主服务端;**远程控制台**由客户端本地 HTTP 服务 + **frpc 内网穿透** 映射到公网供管理员访问。通信支持 mTLS 双向认证、RSA/AES 加密,并可选 VMProtect 代码加固。 + +--- + +## 二、系统架构 + +```mermaid +flowchart TB + subgraph Client["客户端 (R0Guard.exe)"] + HTTPSrv["本地 HTTP 服务\n127.0.0.1:54425\n(Dashboard + API)"] + FRPC["frpc 客户端\n(resources/frpc.exe)"] + TCP["TCP Client\n(mTLS → 主服务端)"] + Monitors["系统监控\n进程/磁盘/USB/杀软"] + Screenshots["多引擎截图\n(ScreenshotManager)"] + Injector["DLL 注入器"] + Protector["进程 DACL 保护"] + end + + subgraph Game["游戏进程 (cs2.exe / csgo.exe)"] + DLL["R0GuardDll\n6 类检测 + Overlay"] + end + + subgraph AI["AI 图片检测服务"] + AIIngest["截图接收 API"] + AIEngine["视觉模型推理\n(外挂菜单/UI/Overlay 识别)"] + AIEvent["事件组装与上报"] + end + + subgraph FRP["FRP 服务端 (frps)"] + FRPS["公网入口\n域名:端口"] + end + + subgraph Server["主服务端 (Node.js)"] + TCPSrv["TCP Server\n:9443"] + API["REST API\n:3000"] + EventProc["事件处理\n黑白名单 / 自动封禁"] + DB[(MySQL\nr0guard_anticheat)] + Redis[(Redis)] + Platform[(平台库 arena)] + end + + Browser["浏览器 / 平台管理员"] + + Injector -->|命名管道| DLL + Screenshots -->|HTTPS 上传截图| AIIngest + AIIngest --> AIEngine + AIEngine --> AIEvent + AIEvent -->|检测事件 HTTP| EventProc + Client -->|心跳 / 进程内检测| TCPSrv + TCPSrv --> EventProc + EventProc --> DB + TCPSrv --> Redis + HTTPSrv -->|本地反向代理| FRPC + FRPC -->|内网穿透| FRPS + Browser -->|HTTPS 访问映射地址| FRPS + FRPS --> FRPC + FRPC --> HTTPSrv + Client -->|上报 FRP 远程地址 / 本地端口| API + API --> Platform +``` + +### 数据流分工 + +| 数据类型 | 路径 | 说明 | +|---------|------|------| +| **定时反作弊截图** | 客户端 → AI 图片检测服务 → 主服务端 | AI 服务完成视觉分析后,以结构化事件(如 `ai_screenshot_detection`)上报主服务端 | +| **进程内检测事件** | 客户端 → 主服务端 (mTLS TCP) | DLL 注入、Hook、CRC 等 6 类检测 | +| **心跳 / 认证 / 白名单** | 客户端 → 主服务端 (mTLS TCP) | 会话维持、在线状态、黑白名单同步 | +| **远程控制台** | 浏览器 → FRP 公网入口 → frpc → 客户端本地 HTTP | Dashboard、FLV 直播、按需截图预览等,经 **frp 映射** 访问 `127.0.0.1:54425` | +| **控制台地址登记** | 客户端 → 主服务端 REST API | 登录后上报 FRP 映射后的远程 URL 或本地端口(`upload_client_port`),供平台查询 | +| **进程/磁盘/USB 等监控** | 客户端 → 主服务端 | 系统级行为事件 | + +### 截图 → AI → 主服务端 流程 + +``` +ScreenshotManager 定时截图 (GDI/DXGI/DWM/...) + ↓ +客户端上传截图 + 元数据 (uid, steam_id, 截图类型, 时间戳, 机器码) + ↓ +AI 图片检测服务 + ├─ 接收并暂存/落盘截图 + ├─ 调用视觉模型推理 (外挂菜单、透视 UI、自瞄界面等) + ├─ 输出置信度、标签、可疑区域等 + └─ 组装检测事件 + ↓ +主服务端 + ├─ 写入 ac_events / ac_screenshots + ├─ 查黑白名单 → 自动封禁 + └─ 供控制台 / 平台系统查询 +``` + +**关键设计:** + +- 客户端在本地启动 **HTTP 服务**(默认 `127.0.0.1:54425`,占用时回退动态端口),承载 Dashboard 及全部 `/api/dashboard/*` 路由。 +- 随附 **frpc.exe**(FRP 客户端),将本地 HTTP 端口映射到 **FRP 服务端(frps)** 的公网域名/端口,实现远程访问。 +- 客户端登录后通过 REST API(`upload_client_port`)将 **FRP 映射后的远程访问地址** 或本地端口上报云端,平台系统据此拼接控制台入口 URL。 +- GSI 游戏状态仍走本地 HTTP 的 `/api/gamestate`(CS2 本机 POST)。 +- **AI 图片检测服务独立部署**;定时反作弊截图走 AI 链路,控制台按需预览截图在客户端本地 HTTP 直接响应。 +- 远程控制台访问路径:**浏览器 → FRP 公网入口 → frpc → 本地 HTTP**,不经过主服务端转发。 + +--- + +## 三、项目目录结构 + +``` +R0Guard/ +├── CMakeLists.txt # 主构建配置 (v1.0.39) +├── build.ps1 / build.bat # 构建脚本 +├── build_all_protected.bat # VMProtect 加固构建 +├── protect.bat # 保护脚本 +│ +├── common/ # 公共库 +│ ├── protocol.h # 命名管道 / 共享内存协议 +│ ├── logger.h # 日志(可编译期剥离) +│ ├── secure_string.h # 安全字符串 +│ ├── vmprotect_sdk.h # VMProtect 标记宏 +│ ├── httplib.h # 嵌入式 HTTP 库 +│ ├── utils.h / vdf_parser.hpp +│ └── json/ # JSON 解析 +│ +├── injector/ # 主程序 (~40 个源文件) +│ ├── main.cpp # 入口:GUI 托盘 + 服务初始化 +│ ├── http_server.cpp # 本地 HTTP 服务 + ~93 条 Dashboard/API 路由 +│ ├── tcp_client.cpp # mTLS TCP 通信 +│ ├── anticheat_api.cpp # 反作弊 API 封装 +│ ├── cloud_api.cpp # 云端 REST API (RSA 加密) +│ ├── game_launcher.cpp # CS2/CSGO 启动 +│ ├── steam_helper.cpp # Steam 集成 +│ ├── steam_worker.cpp # 独立 Steam 信息进程 +│ ├── screenshot_manager.cpp # 定时多引擎截图 +│ ├── live_stream.cpp # FLV H.264 直播 +│ ├── process_monitor.cpp # 进程启动/退出监控 +│ ├── process_protector.cpp # 游戏进程 DACL 保护 +│ ├── disk_monitor.cpp # 磁盘/下载记录监控 +│ ├── drive_monitor.cpp # USB 驱动器插拔监控 +│ ├── antivirus_detector.cpp # 杀毒软件检测 +│ ├── file_detector.cpp # 文件特征检测 +│ ├── network_test.cpp # 网络诊断工具集 +│ ├── dashboard_handler.cpp # 远程控制台 +│ ├── crash_handler.cpp # 崩溃转储 +│ ├── update_service.cpp # 自动更新 +│ ├── startup_manager.cpp # 单实例/自启/Defender 白名单 +│ ├── tpm_machine_id.cpp # TPM 机器码 +│ ├── pinned_dns.cpp # 写死 IP 直连 + 隐藏 SNI +│ └── self_module.cpp # 自身模块定位 +│ +├── dll/ # 游戏内检测 DLL +│ ├── detector.cpp # 主检测调度器 +│ ├── module_detector.cpp # DLL 注入检测 +│ ├── thread_detector.cpp # 远程线程检测 +│ ├── hook_detector.cpp # 函数 Hook 检测 +│ ├── memory_detector.cpp # 可疑内存检测 +│ ├── crc_checker.cpp # 代码段 CRC 校验 +│ ├── hardware_bp_detector.cpp# 硬件断点检测 +│ ├── logo_overlay.cpp # D3D Overlay + ImGui +│ ├── video_player.cpp # 游戏内视频播放 +│ ├── pipe_client.cpp # 与注入器通信 +│ └── minhook/ # API Hook 库 +│ +├── ai-service/ # AI 图片检测服务(独立部署) +│ ├── 截图接收 API # 接收客户端上传的定时截图 +│ ├── 视觉模型推理 # 外挂 UI / 菜单 / Overlay 识别 +│ └── 事件上报客户端 # 将 AI 检测结果推送至主服务端 +│ +├── server/ # 主服务端 (Node.js) +│ ├── src/index.js # 入口 +│ ├── src/socket/ # TCP + 协议 + 加密 +│ ├── src/database/ # MySQL + Redis +│ └── docs/ # 服务端文档 +│ +├── resources/ # 运行时资源 +│ ├── certs/ # TLS 证书 (ca.crt, client.pfx) +│ ├── dashboard.html # 远程控制台 Web UI +│ ├── frpc.exe # FRP 客户端(内网穿透,映射本地 HTTP 到公网) +│ └── rsa_keys.h # RSA 公钥 +│ +└── third_party/vmprotect/ # VMProtect SDK (可选) +``` + +--- + +## 四、核心功能详解 + +### 4.1 游戏内检测(DLL 模块) + +注入到 `cs2.exe`(64 位)或 `csgo.exe`(32 位)后,通过命名管道与主程序通信,执行 **6 类检测**: + + +| # | 检测类型 | 事件名 | 说明 | +| --- | -------------- | --------------------- | ------------------------------------------------------------------- | +| 1 | **DLL 注入检测** | `dll_injection` | 监控新加载模块,验证数字签名,白名单机制(Microsoft、Valve、NVIDIA、AMD 等) | +| 2 | **远程线程检测** | `remote_thread` | 检测起始地址不在已知模块范围内的线程,识别 Shellcode / Manual Map | +| 3 | **函数 Hook 检测** | `function_hook` | 监控 kernel32、ntdll、user32、ws2_32 等关键 API,检测 JMP/PUSH+RET/MOV+JMP 等模式 | +| 4 | **代码段 CRC 校验** | `crc_mismatch` | 定期校验 client.dll、engine.dll 等核心模块 `.text` 段 CRC32 | +| 5 | **可疑内存检测** | `suspicious_memory` | 扫描 PAGE_EXECUTE_READWRITE 等可疑内存属性,识别注入代码 | +| 6 | **硬件断点检测** | `hardware_breakpoint` | 检查所有线程 DR0–DR3 调试寄存器 | + + +**附加能力:** + +- **Logo Overlay**:D3D9(CSGO)/ D3D11(CS2)Hook + ImGui,游戏内播放 Logo/作弊提示/VIP 视频 +- **死亡状态共享内存**:与 GSI 联动显示死亡图标 +- **机器码显示**:左上角显示 TPM 机器码 + +### 4.2 客户端主程序(injector) + +#### A. 游戏与 Steam 集成 + + +| 功能 | 说明 | +| ----------- | ------------------------------------- | +| CS2/CSGO 启动 | 支持启动参数、Steam 路径配置 | +| Steam 账号管理 | 获取/切换 Steam 账号、Steam ID | +| GSI 游戏状态 | 接收 CS2 Game State Integration POST 数据 | +| 游戏内命令 | 向游戏发送控制台命令 | +| 游戏版本检测 | 读取已安装游戏版本 | + + +#### B. 系统监控与上报 + + +| 模块 | 功能 | +| --------------------- | --------------------------------------------------- | +| **ProcessMonitor** | 监控全系统进程启动/退出,过滤系统白名单进程后上报 | +| **ProcessProtector** | 对 CS2/CSGO 进程写入 DACL「拒绝访问」ACE,阻止外部 OpenProcess 读写内存 | +| **DiskMonitor** | 监控文件系统变化,读取 Chrome/Edge/Firefox/迅雷/IDM 等下载记录 | +| **DriveMonitor** | 监控 USB 等可移动驱动器插拔 | +| **AntivirusDetector** | 检测已安装杀毒软件 | +| **FileDetector** | 扫描文件特征:易语言、VMProtect、SProtect、远程注入/Hook API 等 | + + +#### C. 截图与直播 + +支持 **7 种截图引擎**,可定时错开执行: + + +| 引擎 | 技术 | +| ---------- | --------------- | +| GDI | 基础屏幕截图 | +| DXGI | DirectX 桌面复制 | +| DWM | 注入 dwm.exe 截图 | +| Magnifier | Windows 放大镜 API | +| NVIDIA GPU | GPU 帧缓冲截取 | +| AMD GPU | GPU 帧缓冲截取 | + + +- 定时截图上传 **AI 图片检测服务**(默认 6 分钟间隔,各类型错开 30 秒);AI 服务完成推理后将检测事件上报主服务端,不在客户端或主服务端本地做模型推理 +- **FLV H.264 直播流**:Media Foundation 编码 + FLV 封装,经 FRP 映射后的远程 URL 推送(不经过 AI 服务) + +#### D. 远程控制台(Dashboard + FRP) + +远程控制台采用 **本地 HTTP + FRP 内网穿透** 方案: + +1. `R0Guard.exe` 在本地监听 HTTP(默认 `127.0.0.1:54425`),提供 Dashboard 页面及约 **93 条 API 路由**。 +2. 随附的 **frpc.exe** 读取 FRP 配置,将本地端口映射到 **frps 服务端** 分配的公网域名/端口。 +3. 客户端登录后将映射地址上报云端;平台管理员通过 **FRP 公网 URL** 远程打开该用户的控制台。 + +| 分类 | 功能 | +| ------------ | ------------------------------------ | +| **系统信息** | CPU/内存/磁盘/网络状态 | +| **进程管理** | 列出/终止进程、DLL 注入记录 | +| **截图预览** | 7 种引擎实时截图 | +| **FLV 直播** | 实时屏幕直播 + 统计 | +| **文件管理** | 浏览/读/写/上传/下载/删除/重命名/建目录 | +| **文件检测** | 单文件/批量特征扫描 | +| **检测记录** | 查看/清除本地检测日志 | +| **网络诊断** | Ping、TCPing、测速、Traceroute、DNS、RealIP | +| **磁盘/注册表测试** | 磁盘读写、注册表访问测试 | +| **日志查看** | 内存日志浏览与清除 | + +**FRP 访问链路:** + +``` +管理员浏览器 + → https://:<端口>/dashboard + → frps (FRP 服务端) + → frpc (客户端内运行) + → 127.0.0.1:54425 (R0Guard 本地 HTTP) + → dashboard.html / API 响应 (含 FLV 流式) +``` + +> 安全说明:任意命令执行接口已永久移除。控制台经 FRP 暴露到公网,需配合 FRP 鉴权 token、HTTPS 及平台侧访问控制使用。 + +#### E. 云端通信 + +| 通道 | 协议 | 用途 | +|------|------|------| +| **TCP Socket → 主服务端** | mTLS (双向证书) + RSA/AES-GCM | 认证、心跳、进程内检测上报 | +| **HTTPS → AI 图片检测服务** | HTTPS (+ 可选 mTLS) | **定时反作弊截图上传** | +| **HTTPS → 主服务端** | HTTPS / 内网 API Key | AI 服务上报检测事件;客户端上报 FRP 远程地址/本地端口 | +| **REST API → 主服务端** | HTTPS + RSA 分段加密 | 机器 Token、Steam Token、`upload_client_port`、硬件信息采集 | +| **HTTP 本地服务** | `127.0.0.1:54425` | Dashboard、控制台 API、GSI 接收 | +| **FRP 穿透** | frpc → frps | 将本地 HTTP 映射到公网,供远程访问控制台 | + +**TCP 消息类型(客户端 ↔ 主服务端):** + +| 类型 | 方向 | 描述 | +|------|------|------| +| 0x4000/0x4001 | C↔S | 认证请求/响应 | +| 0x1000 | C→S | 心跳 | +| 0x1001 | C→S | 检测报告(进程内 6 类检测) | +| 0x1002 | C→S | 模块加载 | +| 0x4007/0x4008 | C↔S | 白名单请求/响应 | +| 0x2000/0x2001 | S→C | 初始化/开始扫描 | + +> 说明:控制台经 FRP 直接访问客户端本地 HTTP;定时截图上传 AI 图片检测服务,AI 分析完成后以 REST API 向主服务端写入事件与截图索引。 + + +#### F. 客户端基础设施 + + +| 功能 | 说明 | +| ------------ | ------------------------------- | +| 本地 HTTP 服务 | 默认 `127.0.0.1:54425`,提供 Dashboard 与 API | +| FRP 内网穿透 | frpc 将本地 HTTP 映射到 frps 公网入口 | +| 端口/地址上报 | 登录后调用 `upload_client_port` 上报 FRP 远程 URL | +| 单实例锁 | Mutex 防止重复运行 | +| 开机自启 | 计划任务(无 UAC 弹窗) | +| URL 协议 | `r0guard://` 协议注册 | +| Defender 白名单 | 自动添加程序目录 | +| 防节流 | PowerRequest 防止 Windows 降低后台优先级 | +| TPM 机器码 | 基于 TPM 的唯一硬件标识 | +| 崩溃转储 | MiniDump 生成与上报 | +| 自动更新 | 版本检测与下载 | +| Pinned DNS | 写死 IP 直连、隐藏 TLS SNI、无 DNS 查询 | +| 错误上报 | 全局异常捕获与云端上报 | + + +#### G. 网络诊断工具 + +内置完整网络测试套件(供 Dashboard 调用): + +- ICMP Ping / 流式 Ping +- TCPing +- HTTP 测速(含跳转链追踪) +- Traceroute +- DNS 查询 +- RealIP 检测(含代理/VPN 识别) +- FindPing(最优节点探测) + +--- + +### 4.3 AI 图片检测服务(ai-service/) + +独立于主服务端部署的**视觉检测微服务**,专门处理客户端定时上传的游戏截图。 + +#### 职责 + +| 环节 | 说明 | +|------|------| +| **截图接收** | 提供 HTTPS 上传接口,接收客户端多引擎截图及元数据(uid、steam_id、截图类型、分辨率、时间戳) | +| **图像推理** | 调用视觉模型识别外挂菜单、透视 UI、自瞄面板、可疑 Overlay 等 | +| **结果输出** | 生成标签、置信度、可疑区域坐标(可选)及原始截图存储路径 | +| **事件上报** | 将结构化检测事件推送至主服务端 REST API,由主服务端统一入库与触发封禁 | + +#### 典型事件字段(上报主服务端) + +| 字段 | 说明 | +|------|------| +| `event_type` | 如 `ai_screenshot_detection` | +| `uid` / `steam_id` | 用户标识 | +| `screenshot_type` | gdi / dxgi / dwm / mag / nvidia / amd | +| `labels` | AI 识别标签列表 | +| `confidence` | 整体或各标签置信度 | +| `screenshot_url` / `screenshot_id` | 截图存储引用 | +| `model_version` | 模型版本,便于回溯 | +| `detected_at` | 检测时间 | + +#### 与主服务端的关系 + +- AI 服务**不处理**用户认证、心跳、黑白名单、自动封禁——这些由主服务端负责。 +- 主服务端收到 AI 事件后,与普通检测事件一样进入 `ac_events` / `ac_screenshots`,执行黑白名单匹配与 `auto_ban` 逻辑。 +- AI 服务可独立扩缩容(GPU 节点),不影响主服务端 TCP 连接与会话管理。 + +--- + +### 4.4 主服务端(server/) + +#### 技术栈 + +- **Runtime**: Node.js ≥ 18 +- **数据库**: MySQL 5.7+(反作弊库 `r0guard_anticheat` + 平台库 `arena`) +- **缓存**: Redis 6.0+ +- **通信**: Express REST + mTLS TCP + Socket.IO + +#### 监听端口 + + +| 端口 | 用途 | +| -------- | ---------------------------- | +| **3000** | REST API、健康检查、静态文件、Socket.IO | +| **9443** | mTLS TCP(生产环境常用 20058) | + +> 控制台公网入口由 **FRP 服务端(frps)** 提供,Dashboard 请求不经主服务端 3000/9443 转发。 + + +#### 数据库表(反作弊库) + + +| 分类 | 表 | 用途 | +| --- | ------------------------------------------------- | ----------------- | +| 管理 | `ac_admins`, `ac_operation_logs` | 管理员、操作日志 | +| 会话 | `ac_sessions`, `ac_heartbeats`, `ac_machine_info` | 用户会话、心跳、机器信息 | +| 事件 | `ac_events`, `ac_screenshots`, `ac_uploads` | 检测事件(含 AI 截图检测 `ai_screenshot_detection`)、截图索引、上传文件 | +| 检测 | `ac_cheat_features` | 作弊特征详细记录 | +| 黑名单 | `ac_hash/signer/path/feature_blacklist` | 哈希/签名者/路径/综合特征黑名单 | +| 白名单 | `ac_hash/signer/path/feature_whitelist` | 对应白名单 | +| 封禁 | `ac_ban_records` | 封禁记录 | +| 其他 | `ac_error_reports` | 客户端错误报告 | + + +#### 核心业务流程 + +``` +客户端认证 → 写入 ac_sessions + ↓ +frpc 启动 → 映射本地 HTTP 到 FRP 公网地址 → 上报远程 URL (upload_client_port) + ↓ +心跳 (5s 间隔) → 更新在线状态 + ↓ +进程内检测事件 (DLL/Hook/CRC 等) → 提取特征 → 查黑白名单 + ↓ +定时截图 → AI 图片检测服务 → 视觉推理 → AI 检测事件上报主服务端 + ↓ +主服务端入库 (ac_events / ac_screenshots) → 查黑白名单 + ↓ +命中黑名单 + auto_ban=1 → 自动封禁 (调用平台 API) +``` + +#### 远程控制台 + +``` +用户客户端 + ├─ R0Guard.exe 监听 127.0.0.1:54425 (Dashboard + API) + └─ frpc.exe 连接 frps,映射为 https://<子域名>.:<端口> + ↓ +平台管理员浏览器 → FRP 公网 URL → frps → frpc → 本地 HTTP + ↓ +dashboard.html / FLV 直播 / 截图预览 等直接由客户端响应 +``` + +客户端登录后通过 `upload_client_port` 或平台 API 登记 **FRP 映射后的访问地址**,供管理员从平台后台一键打开远程控制台。用户离线时 FRP 映射失效,控制台不可访问。 + +--- + +## 五、安全与加固 + +### 5.1 编译期安全 + + +| 机制 | 说明 | +| ----------------- | ---------------------------------- | +| **VMProtect SDK** | 可选代码虚拟化/变异 + 字符串加密 (`R0VMP_STR_A`) | +| **日志剥离** | `R0_STRIP_LOGS` 编译期消除所有日志字面量 | +| **路由哈希** | HTTP 路由以 FNV-1a 哈希存储,二进制无路由明文 | +| **Secure String** | 敏感字符串编译期加密、运行期临时解密 | + + +### 5.2 通信安全 + + +| 机制 | 说明 | +| ----------------- | ------------------------------ | +| **mTLS** | 双向 TLS 证书认证 | +| **RSA + AES-GCM** | 载荷加密 | +| **Pinned DNS** | 写死 IP 直连、TLS 隐藏 SNI、不产生 DNS 查询 | +| **证书嵌入** | 客户端证书编译为 PE 资源,口令编译期加密 | + + +### 5.3 运行期安全 + + +| 机制 | 说明 | +| ------------------ | ------------------------------ | +| **本地 HTTP + FRP** | 控制台经 frpc 穿透到公网,需 FRP token 鉴权 | +| **Dashboard 登录** | Dashboard 页面自带登录校验,防止未授权访问 | +| **命令执行移除** | 任意 cmd 执行接口已永久删除 | +| **管理员权限** | UAC manifest 要求管理员(进程保护需要) | +| **进程 DACL 保护** | 阻止外部进程读写游戏内存 | + + +### 5.4 检测响应 + + +| 严重级别 | 含义 | +| -------- | ------ | +| INFO | 信息性消息 | +| WARNING | 需要关注 | +| CRITICAL | 可能存在作弊 | +| FATAL | 几乎确定作弊 | + + +服务端支持基于 MD5/SHA256/CRC32/签名者/路径的**黑白名单**,命中黑名单且 `auto_ban=1` 时自动封禁。 + +--- + +## 六、构建与部署 + +### 6.1 客户端构建 + +**环境要求:** Windows 10/11 x64、Visual Studio 2019+、CMake 3.15+ + +```powershell +# 标准构建 +.\build.ps1 +# 产物: build/bin/Release/R0Guard.exe, R0GuardDll64.dll, steam_worker.exe + +# VMProtect 加固构建 +cmake -DR0_USE_VMPROTECT=ON .. +.\build_all_protected.bat +``` + +**产物清单:** + + +| 文件 | 说明 | +| ------------------ | ------------------ | +| `R0Guard.exe` | 主程序(GUI 托盘,需管理员) | +| `R0GuardDll64.dll` | CS2 检测 DLL (64 位) | +| `R0GuardDll32.dll` | CSGO 检测 DLL (32 位) | +| `steam_worker.exe` | Steam 信息辅助进程 | + + +### 6.2 AI 图片检测服务部署 + +AI 服务独立部署,需配置: + +- 截图接收地址(客户端 `ScreenshotManager` 上传目标) +- 视觉模型路径或远程推理端点 +- 主服务端事件上报 API 地址与鉴权密钥 +- 截图存储目录或对象存储(OSS/S3 等) + +```bash +# 示例(具体命令依 ai-service 实现而定) +cd ai-service +cp env.sample .env # 配置 AI_SERVICE_PORT、MAIN_SERVER_URL、MODEL_PATH 等 +# 安装依赖并启动 GPU 推理服务 +``` + +### 6.3 主服务端部署 + +```bash +cd server +cp env.sample .env # 配置数据库/Redis/证书 +npm install +npm run generate-certs # 生成 TLS 证书 +npm run db:init # 初始化数据库 +npm start # 或 pm2 部署 +npm run pm2:logrotate:setup # PM2 日志轮转 +``` + +--- + +## 七、辅助程序与工具 + + +| 组件 | 说明 | +| ------------------------------- | ----------------------------------------- | +| **steam_worker.exe** | 独立进程安全获取 Steam 信息,避免主进程加载 steam_api64.dll | +| **resources/frpc.exe** | FRP 客户端,将本地 HTTP 控制台映射到公网远程访问 | +| **ai-service/** | AI 图片检测服务,接收截图并上报检测事件至主服务端 | +| **updater/** | 已废弃,更新由 R0Installer.exe 处理 | +| **resources/dashboard.html** | 远程控制台 Web UI | +| **server/scripts/** | 数据库迁移、证书轮换、事件清理等运维脚本 | +| **.gitea/workflows/deploy.yml** | CI/CD 部署流水线 | + + +--- + +## 八、白名单签名者(内置信任) + +Microsoft Corporation、Valve、NVIDIA Corporation、AMD、Intel Corporation、Realtek、Logitech、Razer、Corsair、SteelSeries 等。 + +--- + +## 九、相关文档索引 + + +| 文档 | 路径 | 内容 | +| ---------- | --------------------------------------- | ------------------- | +| 项目 README | `README.md` | 基础介绍与编译说明 | +| 检测系统 | `server/docs/detection-system.md` | 6 类检测字段与黑名单策略 | +| 数据库表结构 | `server/docs/database-tables.md` | 全部 AC 数据库表 | +| 服务端 README | `server/README.md` | 安装部署与 API | + + +--- + +## 十、总结 + +R0Guard 是一个**功能完整的 CS:GO/CS2 反作弊平台**,涵盖: + +1. **6 类游戏内检测**(DLL 注入、远程线程、Hook、CRC、可疑内存、硬件断点) +2. **7 种截图引擎 + AI 图片检测 + FLV 直播** +3. **截图 → AI 服务 → 主服务端** 三段式视觉检测链路 +4. **全系统监控**(进程、磁盘、USB、杀软、文件特征) +5. **游戏进程 R3 层 DACL 保护** +6. **mTLS 加密云端通信 + FRP 远程控制台** +7. **完整远程控制台**(进程/文件/截图/直播/网络诊断,经 frp 映射访问) +8. **黑白名单 + 自动封禁** +9. **多层安全加固**(VMProtect、日志剥离、Pinned DNS、路由哈希) + +当前版本 **1.0.39**,客户端采用 C++17,服务端采用 Node.js 18,面向 Windows x64 平台,需管理员权限运行。 \ No newline at end of file diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..cd5720f --- /dev/null +++ b/docs/README.md @@ -0,0 +1,28 @@ +# R0Guard 公开文档 + +本目录存放 R0Guard 反作弊系统对外公开的架构与设计说明。 + +## 文档列表 + +| 文档 | 说明 | +|------|------| +| [PROJECT_OVERVIEW.md](./PROJECT_OVERVIEW.md) | 项目整体架构与功能说明(含 AI 图片检测服务、客户端、主服务端等) | + +## 关于代码公开范围 + +出于**代码安全性**与**防破解**需要,当前仓库**暂不公开完整源代码**。 + +现阶段仅公布与 **AI 视觉分析** 相关的项目架构说明,便于了解系统在截图采集、AI 推理、事件上报与主服务端处置之间的整体设计与数据流向。 + +后续将根据实际情况,**视情况开放部分非核心模块代码**;以下内容**不在公开计划内**: + +- 核心检测与防护算法实现 +- 通信加密、证书与密钥相关实现细节 +- 反调试、代码加固(如 VMProtect)相关逻辑 +- 可被直接用于绕过或仿制的关键业务细节 + +如有合作或技术交流需求,请通过项目维护方私下联系。 + +--- + +**R0Guard** — CS:GO / CS2 反作弊系统