关于 IDA Pro MCP Server
IDA Pro MCP Server 是一个 IDA Pro 插件,通过 MCP 的 SSE 接口远程查询和控制 IDA Pro。适用于希望让 AI 助手协助二进制分析的逆向工程人员。
主要功能
- 01读取指定地址的字节与反汇编
- 02获取函数反编译伪代码
- 03列出函数、段、导入与导出表
- 04查询交叉引用与字符串
- 05定义或取消定义函数
- 06通过 SSE 连接 MCP 客户端
适用场景
- 01借助 AI 助手辅助分析二进制文件
- 02查询函数交叉引用以理解调用关系
- 03按入口点、导入表和字符串逐步梳理程序
MCP 相关
作为服务端,该插件在 IDA Pro 中启动本地 SSE 形式的 MCP 服务(默认端口 3000),向 Claude 等客户端暴露分析工具。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
http://127.0.0.1:3000/sseclaude mcp add --transport http ida-mcp-server-plugin http://127.0.0.1:3000/sse{"mcpServers":{"ida-mcp-server-plugin":{"type":"http","url":"http://127.0.0.1:3000/sse"}}}在 Cursor 中打开{"servers":{"ida-mcp-server-plugin":{"type":"http","url":"http://127.0.0.1:3000/sse"}}}在 VS Code 中打开{"mcpServers":{"ida-mcp-server-plugin":{"type":"http","url":"http://127.0.0.1:3000/sse"}}}{"mcpServers":{"ida-mcp-server-plugin":{"serverUrl":"http://127.0.0.1:3000/sse"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
IDA Pro MCP 服务
IDA Pro MCP 服务是一个插件,可通过模型上下文协议(MCP)接口远程查询和控制 IDA Pro。该插件支持 AI 助手(例如 Claude)直接与 IDA Pro 交互,执行二进制分析任务。
概述
此服务提供了一系列工具,支持 AI 助手执行以下操作:
- 获取指定地址的字节数据
- 获取反汇编代码
- 获取反编译伪代码
- 查询函数名称
- 获取段信息
- 列出所有函数
- 查找交叉引用
- 获取导入表/导出表
- 获取入口点
- 定义/取消定义函数
- 获取各种数据类型(dword、word、byte、qword、float、double、字符串)
- 获取二进制文件中的所有字符串
- 获取指定地址处指令的长度
安装
注意: 此插件专为 IDA Pro 9.0+ 版本设计并经过测试。
- 确保已安装 Python 和相关依赖项:
pip install -r requirements.txt
- 将
ida-mcp-server.py文件复制到 IDA Pro 插件目录:- Windows:
%Programfiles%\IDA Pro 9.0\plugins\ - Linux:
~/.idapro/plugins/ - macOS:
~/Library/Application Support/IDA Pro/plugins/
- Windows:
配置 Claude / VSCode
将以下配置添加到 Claude 或 VSCode 中的 mcp.json 文件:
{
"mcpServers": {
"IDAPro": {
"url": "http://127.0.0.1:3000/sse",
"type": "sse"
}
}
}
用法
- 在 IDA Pro 中打开一个二进制文件
- 插件会自动加载并在本地启动 MCP 服务(端口 3000)
- 将 AI 助手(例如 Claude)连接到此服务
- 使用 AI 助手执行二进制分析任务
可用的分析工具
IDA Pro MCP 服务提供以下工具:
get_bytes:获取指定地址处的字节get_disasm:获取指定地址处的反汇编代码get_decompiled_func:获取包含指定地址的函数的伪代码get_function_name:获取指定地址处的函数名称get_segments:获取所有段信息get_functions:获取二进制文件中的所有函数get_xrefs_to:获取指向指定地址的所有交叉引用get_imports:获取所有导入函数get_exports:获取所有导出函数get_entry_point:获取二进制文件的入口点make_function:在指定地址创建函数undefine_function:取消定义指定地址处的函数get_dword_at:获取指定地址处的 dwordget_word_at:获取指定地址处的 wordget_byte_at:获取指定地址处的 byteget_qword_at:获取指定地址处的 qwordget_float_at:获取指定地址处的 floatget_double_at:获取指定地址处的 doubleget_string_at:获取指定地址处的字符串get_string_list:获取二进制文件中的所有字符串get_strings:获取二进制文件中的所有字符串(包含地址)
最佳实践
分析二进制文件时,建议遵循以下步骤:
- 检查入口点
- 分析导入表
- 查看字符串
- 跟踪关键 API 调用
- 识别主要功能模块
- 分析控制流
- 识别恶意行为
- 分析算法和加密例程
- 记录分析结果
- 使用高级技术
许可证
MIT 许可证
版权所有 (c) 2023
特此免费授予任何获得本软件及相关文档文件(“软件”)副本的人不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,并允许向其提供本软件的人这样做,但须遵守以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。
本软件按“原样”提供,不附带任何明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权所有者均不对因本软件或其使用或其他交易而引起或与之相关的任何索赔、损害或其他责任承担责任,无论该责任是基于合同、侵权行为还是其他原因。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
