README
🚀 IL2CPP Frida MCP 服务器
这是一个基于模型上下文协议(MCP)的 IL2CPP 逆向工程工具,它能让 AI 助手(如 Claude、Kiro)直接分析和操作 Unity IL2CPP 应用程序。
✨ 主要特性
- 🔌 Frida 集成 - 支持 USB、远程和本地设备连接
- 📦 IL2CPP 分析 - 列出镜像、类、方法,并支持模糊搜索
- 🔍 反汇编 - 基于 Frida 指令 API 进行方法反汇编
- 🧠 GC 堆分析 - 查找运行时对象实例
- 📤 导入/导出 - 查找模块的导入和导出函数
- 🛠️ JS 执行 - 执行任意 JavaScript 代码以操作 Frida API
📦 安装指南
选项 1:使用 pip 安装(推荐)
# 从源码安装
pip install .
# 或者以开发模式安装
pip install -e .
选项 2:手动安装依赖
pip install -r requirements.txt
编译 Frida 代理
npm install
npm run build
💻 使用示例
启动 MCP 服务器
# 如果通过 pip 安装
il2cpp-frida-mcp # 交互式选择
il2cpp-frida-mcp --stdio # stdio 模式
il2cpp-frida-mcp --sse # SSE 模式
il2cpp-frida-mcp --http # HTTP 模式
# 或者直接运行脚本
python mcp_server.py --stdio
# 自定义主机和端口
il2cpp-frida-mcp --sse --host 0.0.0.0 --port 9000
配置 MCP 客户端
Claude 桌面版 / Kiro
添加到你的 MCP 配置文件中:
{
"mcpServers": {
"il2cpp-frida": {
"command": "il2cpp-frida-mcp",
"args": ["--stdio"]
}
}
}
或者使用 Python 模块运行:
{
"mcpServers": {
"il2cpp-frida": {
"command": "python",
"args": ["-m", "mcp_server", "--stdio"]
}
}
}
📚 详细文档
Frida 基础工具
| 工具 | 描述 |
|------|-------------|
| frida_list_devices | 列出所有可用的 Frida 设备 |
| frida_connect | 连接到设备和目标进程 |
| frida_disconnect | 断开 Frida 连接 |
| frida_resume | 恢复暂停的进程 |
| frida_list_processes | 列出设备上的进程 |
IL2CPP 分析工具
| 工具 | 描述 |
|------|-------------|
| il2cpp_list_images | 列出所有 IL2CPP 镜像 |
| il2cpp_list_classes | 列出指定镜像中的所有类 |
| il2cpp_list_methods | 列出指定类中的所有方法 |
| il2cpp_show_method | 显示方法详细信息 |
| il2cpp_find_classes | 查找类(支持模糊匹配) |
| il2cpp_find_methods | 查找方法(支持模糊匹配) |
| il2cpp_show_asm | 反汇编方法 |
| il2cpp_find_export | 查找导出函数 |
| il2cpp_find_import | 查找导入函数 |
| il2cpp_exec_js | 执行任意 JavaScript 代码 |
| il2cpp_gc_choose | 在堆中查找指定类的实例 |
| il2cpp_gc_info | 获取 GC 堆信息 |
示例
1. 连接到设备
使用 frida_connect 连接到 USB 设备上最前端的应用程序
2. 分析 IL2CPP
列出所有镜像,然后查找包含 "Player" 的类
3. 查看方法详细信息
列出 PlayerController 类的所有方法,然后查看 Update 方法的详细信息
🔧 技术细节
项目结构
.
├── mcp_server.py # 入口点
├── mcp_server/ # MCP 服务器模块
│ ├── __init__.py
│ ├── server.py # MCP 服务器核心
│ ├── state.py # Frida 状态管理
│ ├── tools.py # MCP 工具定义
│ ├── transport.py # 传输层(stdio/sse/http)
│ ├── cli.py # 命令行界面
│ ├── agent_loader.py # 代理加载器
│ └── handlers/ # 工具处理程序
│ ├── __init__.py
│ ├── frida_handlers.py
│ └── il2cpp_handlers.py
├── agent/ # Frida 代理(TypeScript)
│ ├── index.ts # 代理入口点
│ ├── core/ # 核心模块
│ │ ├── il2cpp-helper.ts
│ │ ├── method-utils.ts
│ │ └── class-finder.ts
│ └── services/ # 服务模块
│ ├── image-service.ts
│ ├── class-service.ts
│ ├── method-service.ts
│ ├── disasm-service.ts
│ ├── module-service.ts
│ ├── gc-service.ts
│ └── exec-service.ts
├── _agent.js # 编译后的代理
├── package.json
├── tsconfig.json
└── requirements.txt
开发
编译代理
npm run build # 单次编译
npm run watch # 监听模式
依赖项
- Python 3.10+
- Node.js 16+
- Frida 17+
- frida-il2cpp-bridge
📄 许可证
MIT
致谢
- frida-il2cpp-bridge - IL2CPP 运行时桥接
- Il2CppHookScripts - 参考实现
Scan to join WeChat group