Files
R0Guard/docs/PROJECT_OVERVIEW.md
T

625 lines
29 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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**D3D9CSGO/ D3D11CS2Hook + 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://<frp-分配域名>:<端口>/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域名>:<端口>
平台管理员浏览器 → 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 平台,需管理员权限运行。