IDA Pro MCP 配置指南

2026-10-13

📋 概述

IDA Pro MCP(Model Context Protocol)是一个强大的工具,允许 AI 助手直接与 IDA Pro 交互,实现"低门槛逆向分析"。通过 MCP,AI 可以自动完成反汇编分析、变量重命名、类型推断等复杂任务。

🔧 环境准备

必需工具

  1. IDA Pro
  2. 版本要求:8.3 或更高(推荐 9.0+)
  3. ⚠️ 注意:IDA Free 版本不支持

  4. Python

  5. 版本要求:3.11 或更高
  6. 下载地址:https://www.python.org/downloads/

  7. MCP 客户端(选择其中一个)

  8. Windsurf(当前使用)
  9. VS Code + Copilot 扩展
  10. Cursor
  11. Cline
  12. Roo Code
  13. 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 环境

  1. 打开 IDA Pro 安装目录
  2. 运行 idapyswitch.exe
  3. 选择 Python 3.11 或更高版本
  4. 确认后重新启动 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: 项目级配置

  1. 在项目根目录创建 .vscode 文件夹
  2. 在 .vscode 文件夹中创建 mcp.json 文件
  3. 将步骤 4 获取的配置粘贴到 mcp.json 中

方法 B: 全局配置

  1. 打开 Windsurf/VS Code 设置
  2. 搜索 "mcp"
  3. 编辑全局 MCP 配置文件
  4. 添加 IDA Pro MCP 服务器配置

🚀 使用流程

1. 启动 IDA Pro

  1. 在 IDA Pro 中打开要分析的二进制文件(.exe, .dll 等)
  2. 等待 IDA 完成初始分析
  3. 点击菜单:Edit → Plugins → IDA Pro MCP
  4. 检查 IDA 底部输出窗口,确认 MCP 服务端已启动

2. 连接 MCP 客户端

  1. 打开 Windsurf/VS Code
  2. 确保 MCP 配置已正确加载
  3. 打开 AI 助手(Cascade/Copilot Chat)
  4. 选择支持 MCP 的 AI 模型(推荐:Claude 3.7, Gemini 2.5 Pro)
  5. 切换到 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 格式"

分析策略

  1. 自顶向下:从入口点开始,逐步深入关键函数
  2. 关注字符串:字符串常常提供重要线索
  3. 交叉引用:使用 xref 追踪数据流和控制流
  4. 类型推断:正确的类型信息能大幅提升反编译质量
  5. 增量分析:让 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 的输出结果

祝您逆向分析顺利! 🎉

← 返回文章列表