SuperAPI AI 工具集

ida-headless-mcp

ida-headless-mcp 是一个通过 Model Context Protocol(MCP)提供 IDA Pro 无头二进制分析能力的工具。它采用 Go 负责多会话并发编排、Python worker 执行 IDA 操作的架构,支持进程隔离的多会话并发,提供 52 个 MCP 分析工具。该项目可导入 Il2CppDumper 元数据用于 Unity 游戏分析,以及 unflutter 元数据用于 Flutter/Dart 应用分析,适用于逆向工程场景。

访问官网

工具介绍

用途

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 可查看所有可用工具。

会话生命周期

  1. 客户端调用 open_binary(path)。
  2. Go 在注册表中创建会话(UUID)。
  3. Go 启动 Python worker 子进程。
  4. Worker 在 /tmp/ida-worker-{id}.sock 创建 Unix socket。
  5. Worker 使用 idalib 打开 IDA 数据库。
  6. Go 通过 socket 创建 Connect RPC 客户端。
  7. 后续工具调用通过 Connect 代理到 worker。
  8. 看门狗监控空闲时间(默认 4 小时)。
  9. 超时或调用 close_binary 时:保存数据库、终止 worker、清理。
  10. 会话元数据保存在 <database_directory>/sessions 下,服务器重启后可自动恢复。

扩展新工具

  1. 在 proto/ida/worker/v1/ida_service.proto 中添加 RPC。
  2. 重新生成:make proto。
  3. 在 python/worker/ida_wrapper.py 中实现。
  4. 在 python/worker/connect_server.py 中添加 handler。
  5. 在 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 检查活动会话。

命令行标志与环境变量的具体内容官方未提供完整列表,暂未提供。