Claude-Reverser/IDA-instances-MCP
Custom build of ida-pro-mcp - stability-hardened MCP server for hosting headless IDA Pro instances
IDA-Instances-MCP – 适用于 IDA Pro 的稳定多实例 MCP 服务器
是什么
- ida-pro-mcp 的自定义分支,运行一个 Model-Context-Protocol (MCP) 服务器,允许 AI 工具(Claude Code、Cursor、VS Code 扩展等)通过编程方式控制 IDA Pro。
- 添加了“headless-instances”层,允许多个 IDA 工作进程并行运行,每个进程拥有独立的隔离数据库,所有进程均通过单一 HTTP(或 stdio)端点进行访问。
相较于上游的主要改进
| 领域 | 改进 |
|---|---|
| 数据安全 | 不会删除属于其他活跃会话的 .id0/.id1/.id2/.nam/.til 文件。 |
| 保存可靠性 | idb_save 获得 10 分钟预算;保存失败不再丢弃更改。 |
| 并发性 | 监督器锁不再在工作进程启动或清理时阻塞整个服务器。 |
| 健壮性 | 错误的 JSON-RPC 现在返回正确的错误码,而非崩溃。 |
| 超时 | 代理超时提升至 15 分钟(可配置),以确保长时间反编译完成。 |
| 网络 | 处理端口竞争,锁定 SSE 写入,缓存 CORS 读取。 |
| 资源限制 | 跟踪日志上限为 64 MiB,过大的参数/结果被截断,失败队列有界。 |
| 认证 | 每个 HTTP 请求必须提供一次性生成的 API 密钥(GET /key)。 |
| 管理端点 | /health、/sessions、/upload(二进制上传,大小受限)。 |
| 空闲回收 | 空闲时间超过 IDA_MCP_IDLE_TIMEOUT 分钟的会话将自动保存并关闭。 |
| 优雅关闭 | 收到 SIGTERM/SIGINT 信号时,所有打开的数据库都会被保存。 |
| 自动更新 | 启动时检查 GitHub 发布版本,可通过按键自动更新。 |
| 默认设置 | 监听 0.0.0.0:9999;GUI 插件也绑定到 0.0.0.0 并使用相同的 API 密钥。 |
如何工作
- 监督器(
idalib-mcp)作为轻量级 HTTP 服务器运行。它为每个打开的 IDB 启动一个独立的 工作进程,每个进程以无头模式加载 IDA 的idalib。 - 客户端通过 HTTP(或 stdio)使用 MCP(JSON-RPC)通信。监督器将调用转发给相应的工作进程,强制执行超时,并返回结果。
- 启动时生成的 API 密钥保护所有端点;密钥存储在
~/.idapro/mcp/api_key,重启后仍保留。
典型工作流
# 1️⃣ 激活 IDA 的 Python 环境(推荐使用 uv 作为包管理器)
uv run "/opt/idapro-9.x/idalib/python/py-activate-idalib.py"
# 2️⃣ 启动无头 MCP 服务器(默认绑定 0.0.0.0:9999)
uv run idalib-mcp
# 3️⃣ 获取一次性 API 密钥
KEY=$(curl -s http://host:9999/key | jq -r .key)
# 4️⃣ 上传二进制文件进行分析
curl -H "Authorization: Bearer $KEY" \
--data-binary @sample.elf \
"http://host:9999/upload?filename=sample.elf"
# 5️⃣ 使用相同密钥将 MCP 兼容客户端(如 Claude Code)指向服务器。
运行交互式 GUI 代理
- 在 IDA 内安装 MCP 插件(
Edit → Plugins → MCP)。 - 从终端运行:
uv run ida-pro-mcp(stdio)或uv run ida-pro-mcp --transport http://127.0.0.1:9999,在使用完整 IDA UI 时暴露相同的 HTTP API。
配置(环境变量、命令行标志)
IDA_MCP_MAX_WORKERS– 最大并发 IDA 实例数(默认 4,0 表示无限制)。IDA_MCP_IDLE_TIMEOUT– 会话自动关闭前的空闲分钟数(默认 60)。IDA_MCP_PROXY_TIMEOUT– GUI 代理到工作进程的调用超时(默认 900 秒)。IDA_MCP_API_KEY/IDA_MCP_API_KEY_FILE– 注入预生成的密钥。- 其他各种选项控制打开时间限制、上传大小上限、健康探测预算等。
使用场景
- AI 辅助逆向工程:让 Claude Code、Cursor 或其他基于 LLM 的代理在无人值守 UI 的情况下运行 IDA 分析(反编译、符号重命名、CFG 提取)。
- 批量分析农场:在服务器上启动数十个无头 IDA 工作进程,每个处理一个独立的二进制文件,全部通过 MCP 协调。
- CI/CD 安全扫描:将服务器集成到流水线中,自动上传二进制文件,在 IDA 内运行静态分析工具,并获取结果。
测试
仓库附带 ida-mcp-test 辅助工具;示例展示了如何对不同分析类别的样本 ELF 二进制文件运行测试。
许可证
- MIT(继承自上游
ida-pro-mcp)。 - 需要 有效的商业 IDA Pro 许可证;免费版不支持。
本摘要仅基于仓库的 README。
相关
- 项目
- 项目
- 项目
- 项目