内容
# reclass-mcp
[MCP](https://modelcontextprotocol.io) 服务器,连接 [ReClass.NET](https://github.com/ReClassNET/ReClass.NET) 到大型语言模型(LLM)。专为游戏逆向工程设计,尤其是 IL2CPP/Unity。支持进程附件,内存读取,IL2CPP 类别导出,指针链遍历和结构体定义导出,通过自然语言交互。
```
LLM 客户端 ←— MCP(标准输入输出) —→ reclass-mcp(Python)←— HTTP :27015 —→ ReClass.NET + 桥接插件(C#)
```
## 工具
### 进程
| 工具 | 描述 |
|------|-------------|
| `list_processes` | 列出/筛选运行中的进程 |
| `attach_process` | 通过 PID 附加 |
| `detach_process` | 分离 |
| `get_modules` | 已加载的 DLL |
| `get_memory_regions` | 虚拟内存映射 |
### 内存
| 工具 | 描述 |
|------|-------------|
| `read_memory` | 十六进制转储(最多 4096 字节) |
| `read_typed` | 读取为 int32、float、指针、utf8、vec3 等 |
| `write_memory` / `write_typed` | 写入原始字节或类型化值 |
| `scan_memory` | 扫描值 |
| `resolve_pointer_chain` | 遍历基址 + 偏移(例如 `GameAssembly.dll+0x1234 -> 0x10 -> 0x28`) |
### IL2CPP / Unity
| 工具 | 描述 |
|------|-------------|
| `il2cpp_list_images` | 已加载的程序集(Assembly-CSharp 等) |
| `il2cpp_find_class` | 按名称/命名空间查找类 |
| `il2cpp_dump_class` | 所有字段带有偏移 + 方法带有原生地址 |
| `il2cpp_class_fields` / `il2cpp_class_methods` | 单独列出字段或方法 |
| `il2cpp_static_fields` | 读取静态字段值(单例,管理器) |
| `il2cpp_read_string` | 读取 System.String |
| `il2cpp_read_list` / `il2cpp_read_array` | 读取 List\<T\> 或托管数组 |
| `il2cpp_method_address` | 获取用于钩挂的原生地址 |
| `il2cpp_dump_object` | 转储实时对象 — 解析类型,读取所有字段 |
| `il2cpp_scan_instances` | 扫描 GC 堆栈中指定类的所有实例 |
| `unity_find_gameobjects` | 按名称查找 GameObjects |
| `unity_get_component` | 读取组件字段 |
### 结构体
| 工具 | 描述 |
|------|-------------|
| `list_classes` / `get_class` | 列出或获取结构体定义 |
| `create_class` / `delete_class` / `rename_class` | 管理结构体 |
| `add_field` / `modify_field` / `remove_field` | 编辑字段 |
| `export_class` | 导出到 C 头文件,C#,Rust,Python ctypes,ReClass XML |
| `import_class` | 从源代码导入 |
### 分析
| 工具 | 描述 |
|------|-------------|
| `suggest_types` | 启发式类型检测 |
| `dissect_memory` | 从原始内存自动生成结构体 |
| `read_vtable` | 读取 C++ 虚拟函数表 |
## 安装
### 前提条件
- Python 3.11+ / [uv](https://docs.astral.sh/uv/)
- [ReClass.NET](https://github.com/ReClassNET/ReClass.NET/releases)
- .NET SDK(用于构建插件)
### 1. 安装 MCP 服务器
```bash
git clone https://github.com/ColinEdw/Reclass.NET-MCP.git
cd Reclass.NET-MCP
uv sync # 或:pip install -e .
```
### 2. 构建桥接插件
```bash
mkdir deps
copy "C:\path\to\ReClass.NET\x64\ReClass.NET.exe" deps\
cd plugin
dotnet build -c Release
```
### 3. 将插件安装到 ReClass.NET
复制 **两个** DLL 文件到插件文件夹:
```bash
copy ReclassMcpBridge\bin\Release\net48\ReclassMcpBridge.dll "C:\path\to\ReClass.NET\x64\Plugins\"
copy ReclassMcpBridge\bin\Release\net48\Newtonsoft.Json.dll "C:\path\to\ReClass.NET\x64\Plugins\"
```
### 4. 以管理员身份启动 ReClass.NET
```powershell
Start-Process -FilePath "C:\path\to\ReClass.NET\x64\ReClass.NET.exe" -Verb RunAs
```
验证:前往 **插件** 菜单 — 您应该看到 **ReclassMcpBridge**。测试:
```bash
curl http://127.0.0.1:27015/api/status
```
## 与 LLM 客户端设置
将以下内容添加到您的 MCP 配置文件(Claude Code,Claude Desktop,Cursor 等):
```json
{
"mcpServers": {
"reclass": {
"command": "uv",
"args": ["run", "--directory", "C:/path/to/Reclass.NET-MCP", "reclass-mcp"],
"env": {
"RECLASS_BRIDGE_HOST": "127.0.0.1",
"RECLASS_BRIDGE_PORT": "27015"
}
}
}
}
```
**Claude Code:** `.claude/settings.json` 或 `~/.claude/settings.json`
**Claude Desktop:** `%APPDATA%\Claude\claude_desktop_config.json`
## 故障排除
| 问题 | 解决方法 |
|---------|-----|
| 插件未显示 | 确保 `ReclassMcpBridge.dll` **和** `Newtonsoft.Json.dll` 都在 `Plugins/` 目录下。如果您重命名了 DLL 文件,类名必须为 `<DllName>Ext`,且 `AssemblyProduct` 必须为 `"ReClass.NET Plugin"`。 |
| 无法附加到进程 | 以管理员身份运行 ReClass.NET。 |
| 连接被拒绝,端口 :27015 | ReClass.NET 未运行或插件未加载。 |
| 端口冲突 | 将 `RECLASS_BRIDGE_PORT` 环境变量设置为不同的端口(ReClass.NET 和 MCP 服务器均适用)。 |
## 相关项目
- [ReClass.NET](https://github.com/ReClassNET/ReClass.NET) — 内存检查工具
- [Il2CppDumper](https://github.com/Perfare/Il2CppDumper) — 离线 IL2CPP 元数据转储工具
- [Cpp2IL](https://github.com/SamboyCoding/Cpp2IL) — IL2CPP 分析框架
## 许可证
MIT