文章总结: 本文详细介绍开源项目ida-pro-mcp,该工具通过MCP协议连接AI助手与IDAPro实现智能化逆向分析。内容涵盖自动化安装配置、多客户端支持及核心工具集详解,包括反编译、调试操作等。文章结合提示词工程建议与实战案例,指导用户优化AI交互、处理混淆代码及排查故障,为安全研究人员提供了高效的工作流参考。 综合评分: 90 文章分类: 逆向分析,安全工具,二进制安全,AI安全
【逆向分析】ida-pro-mcp 详细使用指南
原创
利刃信安 利刃信安
利刃信安
2026年2月17日 01:30 河北
ida-pro-mcp 详细使用指南
项目简介
ida-pro-mcp 是由 mrexodia 开发的开源项目,它是一个简单而强大的 MCP Server,允许 AI 助手通过 MCP (Model Context Protocol) 协议与 IDA Pro 进行交互,实现 AI 驱动的逆向分析(”vibe reversing”)。
项目标语
Simple MCP Server to allow vibe reversing in IDA Pro.
核心特点
- • 完全自动化安装:一条命令即可完成安装和配置
- • 模块化设计:添加新功能非常简单,几乎不需要样板代码
- • 类型安全 API:所有函数使用强类型参数
- • 批处理优先:大多数操作支持单个项目和列表
- • 高性能:字符串使用 MD5 缓存机制,避免大型项目中的重复调用
- • 支持多种 MCP 客户端:包括 Trae、Claude、Cursor、VS Code 等
开源地址
GitHub 仓库:https://github.com/mrexodia/ida-pro-mcp
相关资源
- • 视频演示:项目仓库中有演示视频
- • 测试数据:二进制文件和提示词在 mcp-reversing-dataset 仓库中
系统要求
必需软件
- • Python 3.11 或更高版本
- • IDA Pro 9.3 或更高版本
- • 使用
idapyswitch切换到最新的 Python 版本
可选软件
-
• Supported MCP Client(选择一个你喜欢的):
-
• Trae
-
• Claude / Claude Code
-
• Cursor
-
• VS Code / VS Code Insiders
-
• 以及其他 20+ 客户端
详细安装步骤
第一步:安装 ida-pro-mcp 包
首先卸载旧版本(如有),然后安装最新版本:
Windows 系统
# 卸载旧版本(如果有)
pip uninstall ida-pro-mcp
# 安装最新版本
pip install https://github.com/mrexodia/ida-pro-mcp/archive/refs/heads/main.zip
Linux / macOS 系统
# 卸载旧版本(如果有)
pip3 uninstall ida-pro-mcp
# 安装最新版本
pip3 install https://github.com/mrexodia/ida-pro-mcp/archive/refs/heads/main.zip
使用 uv(可选)
如果你使用 uv 作为包管理器:
# 安装
uv pip install https://github.com/mrexodia/ida-pro-mcp/archive/refs/heads/main.zip
第二步:配置 MCP 服务器和安装 IDA 插件
运行以下命令完成配置:
ida-pro-mcp --install
这条命令会自动:
- 1. 配置 MCP 服务器
- 2. 安装 IDA 插件
- 3. 设置所需的配置文件
第三步:重要 – 重启 IDA 和 MCP 客户端
安装完成后,必须完全重启:
- • IDA Pro
- • 你的 MCP 客户端(Trae CN 等)
注意:某些客户端(如 Claude)在后台运行,需要从系统托盘图标中完全退出。
第四步:验证安装
- 1. 启动 IDA Pro
- 2. 加载一个二进制文件(插件菜单只有在加载二进制后才会显示)
- 3. 检查 IDA 插件菜单中是否有 ida-pro-mcp 插件
配置说明
为 Trae CN 配置
ida-pro-mcp 会自动配置 Trae CN,无需额外操作。
为其他 MCP 客户端配置
如果使用其他 MCP 客户端(非 Trae),可以运行以下命令获取 JSON 配置:
ida-pro-mcp --config
将输出的 JSON 配置复制到你的 MCP 客户端配置中。
配置示例
Trae CN 配置
通常 ida-pro-mcp --install 已经自动配置好了,无需手动操作。
其他客户端配置示例
运行 ida-pro-mcp --config 后,会输出类似这样的 JSON:
{
"mcpServers": {
"ida-pro-mcp": {
"command": "ida-pro-mcp",
"args": []
}
}
}
将此配置添加到你的 MCP 客户端配置文件中。
支持的 MCP 客户端
ida-pro-mcp 支持大量 MCP 客户端:
| 客户端 | 说明 | | — | — | | Trae | 本文推荐使用 | | Amazon Q Developer CLI | – | | Augment Code | – | | Claude / Claude Code | – | | Cline | – | | Codex | – | | Copilot CLI | – | | Crush | – | | Cursor | – | | Gemini CLI | – | | Kilo Code / Kiro | – | | LM Studio | – | | Opencode | – | | Qodo Gen | – | | Qwen Coder | – | | Roo Code | – | | VS Code / VS Code Insiders | – | | Warp / Windsurf / Zed | – |
对于其他 MCP 客户端,可以运行 ida-pro-mcp --config 获取 JSON 配置。
核心功能分类
ida-pro-mcp 提供了丰富的工具,按功能分类如下:
核心函数
| 工具 | 描述 |
| — | — |
| lookup_funcs | 通过地址或名称获取函数(自动检测) |
| int_convert | 数字格式转换(十进制、十六进制、字节、ASCII、二进制) |
| list_funcs | 列出函数(分页、过滤) |
| list_globals | 列出全局变量(分页、过滤) |
| imports | 列出所有导入符号 |
| decompile | 反编译指定地址的函数 |
| disasm | 反汇编函数(包含参数、栈帧等完整信息) |
| xrefs_to | 获取指向某地址的所有交叉引用 |
| xrefs_to_field | 获取指向特定结构体字段的交叉引用 |
| callees | 获取某函数调用的所有函数 |
修改操作
| 工具 | 描述 |
| — | — |
| set_comments | 在反汇编和反编译器视图中设置注释 |
| patch_asm | 修补汇编指令 |
| declare_type | 在本地类型库中声明 C 类型 |
| define_func | 在指定地址定义函数 |
| define_code | 将字节转换为代码指令 |
| undefine | 取消定义,转换回原始字节 |
内存读取操作
| 工具 | 描述 |
| — | — |
| get_bytes | 读取指定地址的原始字节 |
| get_int | 使用类型读取整数值(i8/u64/i16le/i16be 等) |
| get_string | 读取以 null 结尾的字符串 |
| get_global_value | 通过地址或名称读取全局变量值 |
栈帧操作
| 工具 | 描述 |
| — | — |
| stack_frame | 获取函数的栈帧变量 |
| declare_stack | 在指定偏移创建栈变量 |
| delete_stack | 按名称删除栈变量 |
结构体操作
| 工具 | 描述 |
| — | — |
| read_struct | 读取指定地址的结构体字段值 |
| search_structs | 按名称模式搜索结构体 |
模式匹配与搜索
| 工具 | 描述 |
| — | — |
| find_regex | 使用不区分大小写的正则表达式搜索字符串 |
| find_bytes | 在二进制中搜索字节模式(如 “48 8B ?? ??”) |
| find_insns | 在代码中搜索指令序列 |
| find | 高级搜索(立即数、字符串、数据/代码引用) |
控制流分析
| 工具 | 描述 |
| — | — |
| basic_blocks | 获取基本块及其前驱和后继 |
类型操作
| 工具 | 描述 |
| — | — |
| set_type | 为函数、全局变量、局部变量或栈变量应用类型 |
| infer_types | 使用 Hex-Rays 或启发式方法推断类型 |
导出操作
| 工具 | 描述 |
| — | — |
| export_funcs | 以指定格式导出函数(json、c_header、prototypes) |
图操作
| 工具 | 描述 |
| — | — |
| callgraph | 从根函数构建调用图,可配置深度 |
批处理操作
| 工具 | 描述 |
| — | — |
| rename | 统一的批处理重命名操作(函数、全局变量、局部变量、栈变量) |
| patch | 一次性修补多个字节序列 |
| put_int | 使用类型写入整数值 |
高级分析操作
| 工具 | 描述 |
| — | — |
| py_eval | 在 IDA 上下文中执行任意 Python 代码 |
| analyze_funcs | 综合函数分析(反编译、汇编、交叉引用、被调用者、调用者、字符串、常量、基本块) |
调试器操作(扩展)
调试器工具默认隐藏,使用 ?ext=dbg 查询参数启用:
控制:
- •
dbg_start– 启动调试器进程 - •
dbg_exit– 退出调试器进程 - •
dbg_continue– 继续执行 - •
dbg_run_to– 运行到指定地址 - •
dbg_step_into– 单步进入 - •
dbg_step_over– 单步跳过
断点:
- •
dbg_bps– 列出所有断点 - •
dbg_add_bp– 添加断点 - •
dbg_delete_bp– 删除断点 - •
dbg_toggle_bp– 启用/禁用断点
寄存器:
- •
dbg_regs– 当前线程的所有寄存器 - •
dbg_regs_all– 所有线程的所有寄存器 - •
dbg_gpregs– 当前线程的通用寄存器 - •
dbg_regs_named– 当前线程的命名寄存器
栈与内存:
- •
dbg_stacktrace– 带有模块/符号信息的调用栈 - •
dbg_read– 从调试进程读取内存 - •
dbg_write– 向调试进程写入内存
MCP 资源
资源代表可浏览的只读状态:
核心 IDB 状态
- •
ida://idb/metadata– IDB 文件信息(路径、架构、基址、大小、哈希) - •
ida://idb/segments– 带权限的内存段 - •
ida://idb/entrypoints– 入口点(main、TLS 回调等)
UI 状态
- •
ida://cursor– 当前光标位置和函数 - •
ida://selection– 当前选择范围
类型信息
- •
ida://types– 所有本地类型 - •
ida://structs– 所有结构体/联合体 - •
ida://struct/{name}– 带字段的结构体定义
查找
- •
ida://import/{name}– 按名称的导入详情 - •
ida://export/{name}– 按名称的导出详情 - •
ida://xrefs/from/{addr}– 从某地址出发的交叉引用
传输方式
ida-pro-mcp 支持多种传输方式:
标准 stdio 传输(默认)
- • 通过标准输入输出进行通信
- • 适合大多数本地场景
- • 无需额外配置
SSE (Server-Sent Events) 传输
uv run ida-pro-mcp --transport http://127.0.0.1:8744/sse
Headless SSE 服务器(需要 idalib)
uv run idalib-mcp --host 127.0.0.1 --port 8745 path/to/executable
提示词工程
LLM 容易产生幻觉(hallucinations),需要通过精确的提示词来引导。对于逆向分析,整数和字节之间的转换尤其容易出错。
重要提示
- 1. 使用 int_convert 工具:永远不要让 LLM 自己转换进制,告诉它使用
int_convertMCP 工具 - 2. 处理混淆代码:LLM 在混淆代码上表现不佳。在尝试使用 LLM 解决问题之前,先花时间(自动)移除以下内容:
- • 字符串加密
- • 导入哈希
- • 控制流平坦化
- • 代码加密
- • 反反编译技巧
- 3. 识别库代码:使用 Lumina 或 FLIRT 等工具尝试解析所有开源库代码和 C++ STL,这将进一步提高准确性
- 4. 数学运算:对于某些运算,可能需要结合 math-mcp
最小示例提示词(来自项目)
你的任务是在 IDA Pro 中分析一个 crackme。你可以使用 MCP 工具来获取信息。通常使用以下策略:
- 检查反编译代码并添加你的发现作为注释
- 将变量重命名为更合理的名称
- 如有必要,修改变量和参数类型(特别是指针和数组类型)
- 将函数名修改为更具描述性的名称
- 如需更多详细信息,反汇编该函数并添加你的发现作为注释
- 永远不要自己转换进制!如果需要,使用 `int_convert` MCP 工具!
- 不要尝试暴力破解,仅从反汇编和简单的 Python 脚本中得出任何解决方案
- 最后创建一个 report.md 文件,包含你的发现和采取的步骤
- 当你找到解决方案时,向用户询问你找到的密码的反馈
另一个提示词示例(by @can1357)
你的任务是创建一个完整和全面的逆向工程分析。参考 AGENTS.md 以理解项目目标并确保分析服务于我们的目的。
使用以下系统化方法论:
1. **反编译分析**
- 彻底检查反编译器的输出
- 添加详细的注释记录你的发现
- 专注于理解每个组件的实际功能和目的(不要依赖旧的、不正确的注释)
2. **提高数据库的可读性**
- 将变量重命名为合理的、描述性的名称
- 在必要时修改变量和参数类型(特别是指针和数组类型)
- 更新函数名称以描述其实际目的
3. **必要时深入探究**
- 如果需要更多详细信息,检查反汇编代码并添加发现的注释
- 记录仅从反编译中不清楚的任何低级行为
- 使用子代理执行详细分析
4. **重要约束**
- 永远不要自己转换进制 - 如果需要,使用 int_convert MCP 工具
- 必要时使用 MCP 工具获取信息
- 所有结论都来自实际分析,而非假设
5. **文档记录**
- 生成包含你的发现的全面 RE/*.md 文件
- 记录采取的步骤和使用的方法论
- 当用户要求时,确保比之前的分析文件更准确
- 以服务于 AGENTS.md 或 CLAUDE.md 中概述的项目目标的方式组织发现
实战使用示例
在 Trae CN 中使用
- 1. 确保所有软件已安装
- • Trae CN
- • IDA Pro 9.3+
- • ida-pro-mcp
- 2. 启动 IDA Pro 并加载二进制文件
- • 打开 IDA Pro
- • 加载你要分析的二进制文件
- • 等待分析完成
- 3. 在 Trae CN 中开始对话
- • 打开 Trae CN
- • 打开 AI 对话
- • 开始描述你的需求
- 4. 让 AI 使用 ida-pro-mcp 工具
- • 例如:”帮我分析这个二进制文件的 main 函数”
- • AI 会自动调用 ida-pro-mcp 的工具
- • 查看 AI 的分析结果
常用工作流示例
分析一个 crackme
帮我分析这个 crackme。使用 ida-pro-mcp 工具来获取信息。请按照以下步骤:
1. 先列出所有函数
2. 找到 main 函数并反编译
3. 分析逻辑,找出密码
4. 添加必要的注释
5. 重命名有意义的变量
查找加密算法
帮我在这个二进制文件中查找加密算法。请:
1. 搜索常见的加密常量
2. 查找类似 AES、DES、RSA 等算法的特征
3. 分析相关函数
4. 告诉我你发现了什么
批量分析
帮我批量分析这个目录下的所有函数。请:
1. 列出所有函数
2. 对每个函数进行简要分析
3. 生成分析报告
常见问题
安装问题
Q: pip install 失败? A: 请检查:
- 1. Python 版本是否 >= 3.11
- 2. 网络连接是否正常
- 3. 尝试使用国内镜像源
Q: ida-pro-mcp –install 命令找不到? A: 确保:
- 1. ida-pro-mcp 已正确安装
- 2. Python 的 Scripts 目录在 PATH 中
- 3. 尝试使用
python -m ida-pro-mcp --install
配置问题
Q: Trae CN 中找不到 ida-pro-mcp? A: 请确保:
- 1. 已运行
ida-pro-mcp --install - 2. 完全重启了 Trae CN 和 IDA Pro
- 3. IDA Pro 中已加载二进制文件
Q: 如何为其他 MCP 客户端配置?
A: 运行 ida-pro-mcp --config 获取 JSON 配置,然后复制到你的客户端配置中。
使用问题
Q: AI 不使用 MCP 工具? A: 请确保:
- 1. 在提示词中明确要求使用 MCP 工具
- 2. 告诉 AI 不要自己转换进制,使用
int_convert工具 - 3. 检查 MCP 连接是否正常
Q: 分析结果不准确? A: 可以尝试:
- 1. 使用更精确的提示词
- 2. 先移除混淆代码
- 3. 识别库代码
- 4. 提供更多上下文
Q: 如何调试 MCP 连接? A: 可以:
- 1. 检查 MCP 客户端的日志
- 2. 验证 ida-pro-mcp 插件在 IDA 中是否正常加载
- 3. 尝试使用 SSE 传输方式
性能问题
Q: 大型项目中操作很慢? A: ida-pro-mcp 使用了 MD5 缓存机制来避免重复调用,但大型项目仍可能较慢。可以:
- 1. 分批处理
- 2. 使用更精确的查询
- 3. 考虑使用无头模式
Q: 内存占用高? A: 这是正常的,IDA 本身就需要较多内存。建议:
- 1. 确保有足够的 RAM(推荐 32GB+)
- 2. 使用 SSD 硬盘
- 3. 关闭不需要的程序
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:利刃信安 利刃信安 利刃信安《【逆向分析】ida-pro-mcp 详细使用指南》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论