用途
ida-headless-mcp 是一个基于 Model Context Protocol(MCP)的无头 IDA Pro 二进制分析服务器。它让客户端通过 MCP 协议远程调用 IDA Pro 的二进制分析能力,并针对 Unity 与 Flutter/Dart 应用的逆向工程提供了元数据导入功能。
主要能力
- 无头分析:通过 MCP 提供 IDA Pro 二进制分析,无需图形界面操作。
- 多会话并发:通过进程隔离实现多会话并发处理。
- 丰富的工具集:内置 52 个用于二进制分析的 MCP 工具。
- 会话超时管理:自动会话超时,默认 4 小时,可配置。
- 分页结果:支持分页返回结果,默认每页 1000 条,可配置。
- Unity 元数据导入:通过 Il2CppDumper 导入元数据,用于 Unity 游戏分析。
- Flutter/Dart 元数据导入:通过 unflutter 导入元数据,用于 Flutter/Dart 应用分析。import_flutter 工具读取 unflutter 生成的结构化 JSON 元数据,单次创建 Dart 类结构体、带类型签名的函数定义,并标注 THR/PP/字符串引用注释。
使用方式
环境要求
- IDA Pro 9.0+ 或 IDA Essential 9.2+
- idalib:需安装并激活,执行
./scripts/setup_idalib.sh;参见 IDA as a Library 文档。 - Go 1.21+ 及 protoc 工具:
make install-tools - Python 3.10+ 及依赖:
pip3 install -r python/requirements.txt - 可选:Il2CppDumper(用于 Unity 游戏分析)
- 可选:unflutter(用于 Flutter/Dart 应用分析):
git clone https://github.com/zboralski/unflutter.git cd unflutter && make install
安装与启动
运行 idalib 设置、安装 Python 依赖并构建服务器(即可完成全部配置)。服务器默认在 17300 端口运行,可通过 config.json、环境变量或 --port 配置。暴露两种传输方式:
- Streamable HTTP(推荐):
http://localhost:17300/ - SSE 兼容端点:
http://localhost:17300/sse
客户端配置
- Claude Desktop:编辑
~/Library/Application Support/Claude/claude_desktop_config.json,编辑后重启 Claude Desktop。 - Claude Code:将
.claude/settings.json复制到~/.claude/settings.json,以授权访问所有 IDA MCP 工具。
通过 MCP 的 tools/list 可查看所有可用工具。
会话生命周期
- 客户端调用
open_binary(path)。 - Go 在注册表中创建会话(UUID)。
- Go 启动 Python worker 子进程。
- Worker 在
/tmp/ida-worker-{id}.sock创建 Unix socket。 - Worker 使用 idalib 打开 IDA 数据库。
- Go 通过 socket 创建 Connect RPC 客户端。
- 后续工具调用通过 Connect 代理到 worker。
- 看门狗监控空闲时间(默认 4 小时)。
- 超时或调用
close_binary时:保存数据库、终止 worker、清理。 - 会话元数据保存在
<database_directory>/sessions下,服务器重启后可自动恢复。
扩展新工具
- 在
proto/ida/worker/v1/ida_service.proto中添加 RPC。 - 重新生成:
make proto。 - 在
python/worker/ida_wrapper.py中实现。 - 在
python/worker/connect_server.py中添加 handler。 - 在
internal/server/server.go中注册 MCP 工具。
适用场景
- 对二进制文件进行无头、可编程的逆向分析。
- 分析 Unity 游戏(通过 Il2CppDumper 元数据导入)。
- 分析 Flutter/Dart 应用(通过 unflutter 元数据导入)。
- 需要多会话并发处理多个二进制分析任务的场景。
限制与说明
- 需要有效授权并安装 IDA Pro 9.0+ 或 IDA Essential 9.2+,以及 idalib。
- 需要 Go 1.21+、Python 3.10+ 等开发依赖。
- 官方资料未提供收费、价格或平台兼容性的更多信息。
相关项目
- LaurieWired/GhidraMCP
- mrexodia/ida-pro-mcp
- cnitlrt/headless-ida-mcp-server
- 元数据转储工具:Perfare/Il2CppDumper(用于 import_il2cpp)、zboralski/unflutter(用于 import_flutter)
故障排查
- Worker 启动失败:运行
./scripts/setup_idalib.sh。 - Socket 超时:检查 Python worker 日志,worker 可能在初始化时崩溃。
- 端口被占用:可更换端口。
- 找不到会话:会话可能已超时,使用
list_sessions检查活动会话。
命令行标志与环境变量的具体内容官方未提供完整列表,暂未提供。