IDA Pro MCP 配置指南
2026-10-13
📋 概述
IDA Pro MCP(Model Context Protocol)是一个强大的工具,允许 AI 助手直接与 IDA Pro 交互,实现"低门槛逆向分析"。通过 MCP,AI 可以自动完成反汇编分析、变量重命名、类型推断等复杂任务。
🔧 环境准备
必需工具
- IDA Pro
- 版本要求:8.3 或更高(推荐 9.0+)
-
⚠️ 注意:IDA Free 版本不支持
-
Python
- 版本要求:3.11 或更高
-
下载地址:https://www.python.org/downloads/
-
MCP 客户端(选择其中一个)
- Windsurf(当前使用)
- VS Code + Copilot 扩展
- Cursor
- Cline
- Roo Code
- Claude Desktop
📦 安装步骤
步骤 1:安装 IDA Pro MCP 包
打开命令行(PowerShell 或 CMD),执行以下命令:
# 卸载旧版本(如果存在)
pip uninstall ida-pro-mcp
# 安装最新版本
pip install https://github.com/mrexodia/ida-pro-mcp/archive/refs/heads/main.zip
或者使用 Git 方式安装:
pip install --upgrade git+https://github.com/mrexodia/ida-pro-mcp
步骤 2:安装 IDA Pro 插件
执行以下命令,自动配置 MCP 服务器并安装 IDA 插件:
ida-pro-mcp --install
这个命令会: - 自动配置 MCP 服务器 - 在 IDA Pro 中安装必要的插件 - 生成配置文件
⚠️ 重要:安装完成后必须完全重启 IDA Pro 和 IDE 才能生效!
步骤 3:配置 IDA Pro 的 Python 环境
- 打开 IDA Pro 安装目录
- 运行
idapyswitch.exe - 选择 Python 3.11 或更高版本
- 确认后重新启动 IDA Pro
步骤 4:获取 MCP 配置
运行以下命令获取 MCP 服务端配置:
ida-pro-mcp --config
这会输出类似以下的 JSON 配置:
{
"servers": {
"github.com/mrexodia/ida-pro-mcp": {
"command": "C:\\Users\\YourName\\Python\\python.exe",
"args": [
"C:\\Users\\YourName\\Python\\Lib\\site-packages\\ida_pro_mcp\\server.py"
],
"timeout": 1800,
"disabled": false
}
}
}
步骤 5:配置 Windsurf/VS Code
方法 A: 项目级配置
- 在项目根目录创建
.vscode文件夹 - 在
.vscode文件夹中创建mcp.json文件 - 将步骤 4 获取的配置粘贴到
mcp.json中
方法 B: 全局配置
- 打开 Windsurf/VS Code 设置
- 搜索 "mcp"
- 编辑全局 MCP 配置文件
- 添加 IDA Pro MCP 服务器配置
🚀 使用流程
1. 启动 IDA Pro
- 在 IDA Pro 中打开要分析的二进制文件(.exe, .dll 等)
- 等待 IDA 完成初始分析
- 点击菜单:
Edit→Plugins→IDA Pro MCP - 检查 IDA 底部输出窗口,确认 MCP 服务端已启动
2. 连接 MCP 客户端
- 打开 Windsurf/VS Code
- 确保 MCP 配置已正确加载
- 打开 AI 助手(Cascade/Copilot Chat)
- 选择支持 MCP 的 AI 模型(推荐:Claude 3.7, Gemini 2.5 Pro)
- 切换到 Agent 模式(重要!)
3. 测试连接
在 AI 助手中输入:
请检查IDA Pro MCP连接状态
AI 会调用 check_connection() 工具验证连接。
4. 开始逆向分析
使用以下提示词模板:
你的任务是分析IDA Pro中的二进制文件。请使用MCP工具进行分析,遵循以下策略:
1. 检查反编译代码并添加注释说明你的发现
2. 将变量重命名为更有意义的名称
3. 根据需要修改变量和参数类型(特别是指针和数组类型)
4. 将函数名改为更具描述性的名称
5. 如果需要更多细节,反汇编函数并添加详细注释
6. 永远不要手动转换数字进制,使用convert_number MCP工具!
7. 不要尝试暴力破解,仅从反汇编和简单Python脚本推导解决方案
8. 最后创建一个report.md文件,记录你的发现和采取的步骤
9. 找到解决方案后,向用户提示你发现的密码或关键信息
🛠️ 可用功能
基础信息获取
check_connection()- 检查 IDA 插件连接状态get_metadata()- 获取当前 IDB 的元数据get_current_address()- 获取用户当前选中的地址get_current_function()- 获取用户当前选中的函数
函数分析
get_function_by_name(name)- 按名称获取函数get_function_by_address(address)- 按地址获取函数decompile_function(address)- 反编译指定函数disassemble_function(start_address)- 获取函数汇编代码list_functions(offset, count)- 列出所有函数(分页)
交叉引用
get_xrefs_to(address)- 获取指向地址的所有交叉引用get_callees(function_address)- 获取函数调用的所有函数get_callers(function_address)- 获取调用该函数的所有函数
数据分析
list_strings(offset, count)- 列出所有字符串list_strings_filter(offset, count, filter)- 按过滤器列出字符串list_globals(offset, count)- 列出全局变量list_imports(offset, count)- 列出导入符号
代码修改
rename_function(function_address, new_name)- 重命名函数rename_local_variable(function_address, old_name, new_name)- 重命名局部变量rename_global_variable(old_name, new_name)- 重命名全局变量set_comment(address, comment)- 设置注释set_function_prototype(function_address, prototype)- 设置函数原型set_local_variable_type(function_address, variable_name, new_type)- 设置变量类型
工具函数
convert_number(text, size)- 转换数字表示(十进制、十六进制等)declare_c_type(c_declaration)- 从 C 声明创建或更新类型
结构体分析
get_defined_structures()- 获取所有定义的结构体analyze_struct_detailed(name)- 详细分析结构体search_structures(filter)- 按名称模式搜索结构体
⚠️ 常见问题
1. AI 幻觉问题
问题:LLM 在处理整数、字节转换时容易出错
解决方案:
- 在提示词中明确要求使用 convert_number 工具
- 检查 report.md 中的分析步骤,验证逻辑正确性
- 考虑使用 math-mcp 辅助数学计算
2. 连接失败
问题:MCP 客户端无法连接到 IDA Pro
解决方案: - 确认 IDA Pro 中已加载二进制文件(插件菜单才会显示) - 检查 IDA Pro 底部输出窗口的 MCP 服务状态 - 完全重启 IDA Pro 和 IDE - 验证 Python 路径配置正确
3. 混淆代码分析效果差
问题:AI 对混淆代码的分析效果不佳
解决方案: 在使用 AI 分析前,先手动或自动移除: - 字符串加密 - 导入哈希 - 控制流平坦化 - 代码加密 - 反反编译技巧
使用 Lumina 或 FLIRT 工具识别开源库代码和 C++ STL,提高准确性。
4. Python 版本问题
问题:IDA Pro 使用的 Python 版本不正确
解决方案:
1. 运行 idapyswitch.exe
2. 选择 Python 3.11+版本
3. 重启 IDA Pro
💡 最佳实践
提示词优化
根据不同类型的题目调整提示词:
- 加密算法分析:"重点分析加密函数和密钥生成逻辑"
- 勒索病毒分析:"关注文件操作、加密流程和 C2 通信"
- CTF Crackme:"寻找输入验证逻辑和正确的 flag 格式"
分析策略
- 自顶向下:从入口点开始,逐步深入关键函数
- 关注字符串:字符串常常提供重要线索
- 交叉引用:使用 xref 追踪数据流和控制流
- 类型推断:正确的类型信息能大幅提升反编译质量
- 增量分析:让 AI 逐步完善分析,而不是一次性完成
模型选择
- 推荐:Claude 3.7, Gemini 2.5 Pro
- 备选:GPT-4(但效果可能较差)
- 关键:必须使用 Agent 模式以调用 MCP 工具
📚 参考资源
🎯 实战示例
示例 1:分析 Crackme
请分析当前IDA中的crackme程序:
1. 找到main函数并反编译
2. 识别输入验证逻辑
3. 分析密码生成算法
4. 推导正确的密码
5. 生成详细的分析报告
示例 2:查找关键字符串
请在当前二进制文件中:
1. 列出所有包含"password"或"key"的字符串
2. 找到引用这些字符串的函数
3. 分析这些函数的逻辑
4. 总结可能的认证机制
示例 3:追踪函数调用
请分析地址0x401000处的函数:
1. 反编译该函数
2. 列出它调用的所有子函数
3. 列出所有调用它的父函数
4. 绘制调用关系图
5. 说明该函数在程序中的作用
🔄 高级功能
SSE 传输模式
运行 SSE 服务器以连接到用户界面:
uv run ida-pro-mcp --transport http://127.0.0.1:8744/sse
无头模式(Headless)
安装 idalib 后可运行无头 SSE 服务器:
uv run idalib-mcp --host 127.0.0.1 --port 8745 path/to/executable
不安全功能(调试器)
使用 --unsafe 标志启用调试器功能:
- 获取寄存器值
- 查看调用栈
- 设置断点
- 单步执行
⚠️ 注意:这些功能可能影响系统稳定性,谨慎使用!
📝 总结
IDA Pro MCP 将 AI 的智能与 IDA Pro 的强大功能结合,大幅降低了逆向工程的门槛。通过正确的配置和提示词工程,即使是逆向新手也能完成复杂的二进制分析任务。
关键要点: - ✅ 确保 Python 3.11+和 IDA Pro 8.3+ - ✅ 正确配置 MCP 服务器 - ✅ 使用 Agent 模式和支持 MCP 的 AI 模型 - ✅ 编写清晰具体的提示词 - ✅ 让 AI 使用工具而不是猜测 - ✅ 验证 AI 的输出结果
祝您逆向分析顺利! 🎉