一、IDA Pro MCP 是什么?
IDA Pro MCP 是一个 Model Context Protocol (MCP) 的服务器,它允许 LLM 实时获取 IDA Pro 中的逆向信息(函数、地址、伪代码等),并将处理结果直接反馈给 IDA。
也就是说,我们可以通过一个 LLM,比如 ChatGPT、Claude、Roo Code 等,直接“对话” IDA Pro。
例如:
- 获取函数伪代码
- 添加注释
- 重命名变量/函数
- 设置类型/原型
- 搜索字符串/入口点/Xrefs 等
这大大降低了静态分析的门槛,并提升了效率。
二、功能清单详解
ida-pro-mcp 目前支持的接口如下:
🧠 信息查询
方法 | 功能 |
---|---|
check_connection() | 检查插件是否正常运行 |
get_metadata() | 获取 IDB 元数据 |
get_function_by_name(name) | 通过名称查找函数 |
get_function_by_address(address) | 通过地址查找函数 |
get_current_address() | 获取当前光标所在地址 |
get_current_function() | 获取当前选中的函数 |
list_functions(offset, count) | 分页列出所有函数 |
list_strings(offset, count) | 分页列出所有字符串 |
search_strings(pattern, offset, count) | 模糊搜索字符串 |
get_xrefs_to(address) | 获取某地址的所有交叉引用 |
get_entry_points() | 获取所有入口点 |
🔎 静态分析辅助
方法 | 功能 |
---|---|
decompile_function(address) | 获取指定函数的伪 C 代码 |
disassemble_function(start_address) | 获取指定函数的汇编 |
✍️ 注释与重命名
方法 | 功能 |
---|---|
set_comment(address, comment) | 给地址加注释(支持 Pseudocode 和 ASM) |
rename_function(address, new_name) | 重命名函数 |
rename_local_variable(func_addr, old, new) | 重命名局部变量 |
rename_global_variable(old, new) | 重命名全局变量 |
🧬 类型定义和转换
方法 | 功能 |
---|---|
set_function_prototype(addr, prototype) | 设置函数原型(签名) |
declare_c_type(c_decl) | 定义局部结构体/类型 |
set_local_variable_type(addr, var, new_type) | 设置局部变量类型 |
set_global_variable_type(name, new_type) | 设置全局变量类型 |
convert_number(text, size) | 进制转换(十进制、十六进制等) |
三、安装与使用
1️⃣ 安装 MCP 服务
pip install --upgrade git+https://github.com/mrexodia/ida-pro-mcp
2️⃣ 一键安装 IDA 插件与服务
ida-pro-mcp --install
⚠️注意:安装后请 彻底重启 IDA Pro/VSCode/Claude,否则插件可能不会生效。
3️⃣ 配套客户端(任选其一)
- 🧠 Cline(推荐)
- 🧠 Roo Code(VSCode 插件)
- 🧠 Claude
这些客户端会自动识别 MCP 服务器并发送代码分析请求。
四、Prompt 编写技巧
虽然 LLM 功能强大,但提示词仍然非常关键。以下是一些技巧:
- 尽量提供准确地址、函数名、变量名
- 指定结构体或类型定义(例如 union、bitfield)
- 避免模糊词汇(如“处理这里的逻辑”,应明确“0x401000 的入口函数”)
- 对于整数与字节的转换逻辑,要具体说明“Big-endian 4 字节转 int32”等需求
五、实战:用 ChatGPT 为 IDA 自动分析
假设你在分析某个病毒样本,你可以像这样使用 ChatGPT + ida-pro-mcp:
你现在连接了 IDA Pro,请帮我反编译地址 0x403210 的函数,并解释每一句汇编在做什么
ChatGPT 会返回伪 C 代码、汇编代码,并解释:
- 寄存器用法
- 调用关系
- 关键字符串引用
- 可疑行为(如 API Hook、反调试等)
还能进一步自动命名变量并标注注释!
六、与其他逆向自动化方案对比
项目 | 特点 |
---|---|
Ghidra + Sleigh | 内置分析强,但接口复杂 |
IDA Python 脚本 | 灵活但需熟悉 API |
IDA Pro MCP + LLM | 上手简单、AI 加持,未来趋势 |
MCP 提供了统一协议规范,未来也可以拓展至 Ghidra、Binary Ninja 等平台。
七、总结与展望
ida-pro-mcp 是 AI 与逆向工程结合的一个典范,具备:
- 强大的 API 支持
- 快速安装与部署
- 丰富的 LLM 客户端支持
- 开源 & 活跃维护
如果你是一名安全研究员、病毒分析师或 CTF 玩家,现在就可以开始尝试用自然语言控制 IDA,让 AI 成为你的“副驾驶”。