基于mrexodia/ida-pro-mcp的二次开发版本
IDA Pro MCP
基于mrexodia/ida-pro-mcp的二次开发版本
一个面向 IDA Pro 的 Model Context Protocol 服务端与插件集合,让支持 MCP 的客户端可以直接读取、分析、修改和调试 IDA 中的样本。
这个仓库现在已经不是“只能本地跑通的实验代码”状态,而是按“别人 git clone 下来就能安装使用”来整理的版本。仓库里同时包含:
- 可直接安装的
ida-pro-mcp/idalib-mcp命令行入口 - IDA 插件加载器与完整工具实现
- 兼容旧版工具名的兼容层
- 中文工具总清单
- 可运行的测试入口
主要特性
- 一键安装 IDA 插件和 MCP 客户端配置
- 支持
stdio、streamable-http、sse - 支持图形界面的 IDA Pro,也支持
idalib无头模式 - 当前 live 服务整理出
147个工具108个基础工具39个dbg调试扩展工具
- 包含函数分析、反编译、交叉引用、结构体、类型、补丁、重命名、调试、恶意样本行为归类等能力
- 保留旧版客户端常用别名,例如
idb_meta、dbg_list_bps、search、strings
仓库内容
src/ida_pro_mcp/server.py- 主 MCP server 入口,负责把 MCP 请求转发到 IDA 里的插件 HTTP 服务
src/ida_pro_mcp/idalib_server.pyidalib无头模式入口
src/ida_pro_mcp/installer.py- 安装插件、生成 MCP 客户端配置、卸载配置
src/ida_pro_mcp/ida_mcp/- IDA 内部实际运行的 MCP 插件代码
ida_mcp_tools_zh.md- 当前工具的中文分类清单
tests/- 测试样本与相关测试资源
环境要求
- Python
3.11+ - IDA Pro
8.3+- 推荐 IDA
9.x - 默认不支持 IDA Free
- 推荐 IDA
- 一个支持 MCP 的客户端
- 例如 Codex、Claude Code、Cursor、VS Code、Crush、Augment Code、Qodo Gen 等
如果你只是想看当前环境支持哪些客户端,直接执行:
uv run ida-pro-mcp --list-clients
从 Git Clone 开始安装
方案 A:推荐,使用 uv
git clone https://github.com/mrexodia/ida-pro-mcp.git
cd ida-pro-mcp
uv sync
安装完成后,你可以直接用 uv run 调用本仓库里的命令,而不需要先发布到 PyPI。
方案 B:可编辑安装,使用 pip
git clone https://github.com/mrexodia/ida-pro-mcp.git
cd ida-pro-mcp
python -m pip install -e .
这种方式适合你希望系统里直接有 ida-pro-mcp 命令而不是每次写 uv run。
安装 IDA 插件和 MCP 客户端配置
最简单的方式:
uv run ida-pro-mcp --install
这会:
- 安装 IDA 插件加载器
- 安装插件包
- 交互式选择要写入配置的 MCP 客户端
你也可以直接指定客户端:
uv run ida-pro-mcp --install codex
uv run ida-pro-mcp --install claude-code,cursor
如果要写项目级配置:
uv run ida-pro-mcp --install vscode --scope project
如果你希望客户端通过 HTTP 连接:
uv run ida-pro-mcp --install codex --transport streamable-http
如果客户端不在内置支持列表里,可以打印通用 MCP 配置:
uv run ida-pro-mcp --config
安装完成后怎么启动
- 完全重启 IDA Pro
- 完全重启你的 MCP 客户端
- 在 IDA 中打开一个二进制文件
- 通过菜单
Edit -> Plugins -> MCP启动插件- Windows / Linux 默认快捷键:
Ctrl+Alt+M - macOS 默认快捷键:
Ctrl+Option+M
- Windows / Linux 默认快捷键:
注意:
- 必须先在 IDA 中打开样本,插件菜单才会显示
- 如果你刚安装完配置但客户端没有生效,最常见原因是客户端进程还在后台驻留,没有真正退出
常用运行方式
1. 标准本地 MCP 模式
这是最常见的模式。MCP 客户端通过 ida-pro-mcp 进程与 IDA 插件通信。
uv run ida-pro-mcp
默认使用 stdio。
2. Streamable HTTP
uv run ida-pro-mcp --transport http://127.0.0.1:8744/mcp
3. SSE
uv run ida-pro-mcp --transport http://127.0.0.1:8744/sse
4. 无头 idalib 模式
uv run idalib-mcp --host 127.0.0.1 --port 8745 path/to/executable
如果多代理同时连接同一个无头服务,建议开启隔离上下文:
uv run idalib-mcp --isolated-contexts --host 127.0.0.1 --port 8745 path/to/executable
工具清单
完整中文工具清单见:
这份清单已经按用途分类,覆盖当前 147 个 live 工具,包含:
- 服务与总览
- 基础枚举与定位
- 数据读取与转换
- 函数分析与控制流
- 搜索与交叉引用
- 类型、结构与栈
- 修改、注释与补丁
- 调试与动态观察
- 混淆、恶意样本与审计
- Python 脚本能力
- 兼容旧版调用名
MCP 资源
除了工具,插件还提供只读资源,常用的有:
ida://idb/metadata- 当前 IDB 元数据
ida://idb/segments- 段信息
ida://idb/entrypoints- 入口点
ida://cursor- 当前光标位置和所在函数
ida://selection- 当前选择范围
ida://types- 本地类型
ida://structs- 结构体与联合体
ida://struct/{name}- 指定结构体详情
调试扩展说明
调试相关工具属于 dbg 扩展。
如果你直接通过 HTTP 访问插件端点,需要使用:
http://127.0.0.1:13337/mcp?ext=dbg
未启动调试器时,这些工具通常会返回:
Debugger not running
开发与测试
新增工具
这个项目的实现方式比较直接。一般只需要:
- 在
src/ida_pro_mcp/ida_mcp/api_*.py中新增一个@tool - 确保
src/ida_pro_mcp/ida_mcp/__init__.py导入了对应模块 - 根据需要补充测试
不需要再额外写一层复杂样板代码。
运行 Inspector
npx -y @modelcontextprotocol/inspector
运行测试
uv run ida-mcp-test tests/crackme03.elf
uv run ida-mcp-test tests/crackme03.elf --category api_core
uv run ida-mcp-test tests/crackme03.elf --pattern "*meta*"
如果你只想做静态检查,至少可以先跑:
python -m compileall src/ida_pro_mcp/ida_mcp
逆向提示
LLM 做逆向时最容易出错的地方通常不是“看不懂函数”,而是:
- 自己脑补控制流
- 自己做进制转换
- 对混淆代码做错误归因
实用建议:
- 让模型优先调用
int_convert - 让模型先改名、补类型、写注释,再谈结论
- 对明显混淆代码先做去混淆,再让 LLM 深入分析
- 多利用
survey_binary、analyze_function、find_paths、xrefs_to这类结构化工具,而不是让模型纯靠文本猜
与其他 IDA MCP 项目的关系
这个仓库不是市面上唯一的 IDA MCP 实现,但它的目标比较明确:
- 安装尽量自动化
- 新增工具尽量低样板
- 更适合持续扩展逆向分析、调试、批量重命名和恶意样本场景
如果你想比较其他实现,可以从这些项目开始:
- https://github.com/taida957789/ida-mcp-server-plugin
- https://github.com/fdrechsler/mcp-server-idapro
- https://github.com/MxIris-Reverse-Engineering/ida-mcp-server
发布
仓库里有一个简单发布脚本:
./uv-package.sh
它会执行:
- 构建包
- 发布
如果你只是开发或自用,通常不需要跑这个脚本。