免责声明:本文仅用于技术介绍与学习交流。该工具涉及在 IDA Pro 中执行任意 Python 代码,请务必在可信环境中使用,切勿将服务端口暴露至公网。
项目概览
在逆向工程领域,IDA Pro 一直是二进制分析的核心工具,但分析过程高度依赖人工经验:手动标注函数、逐个阅读反编译代码、追踪交叉引用。这些重复且耗时的操作占据了分析人员大量精力。
ida-script-mcp 项目的出现改变了这一局面。它通过 MCP 协议在 AI 助手与 IDA Pro 之间搭建了一座桥梁,让 Claude、Cursor 等 AI 工具能够直接在 IDA Pro 中执行 IDAPython 脚本,完成函数列举、反编译、交叉引用查询、重命名等操作。分析人员只需用自然语言描述需求,AI 即可在 IDA 中完成实际操作。
项目基于 MIT 协议开源,支持 Windows、macOS、Linux 三大平台,要求 IDA Pro 8.3 及以上版本。
架构设计
整个系统由三个层次组成,数据在 AI 助手、MCP 服务器和 IDA 插件之间单向流转:
AI 助手 (Claude / Cursor / VS Code)
↕ MCP 协议 (stdio / SSE)
MCP 服务器 (独立 Python 进程)
↕ HTTP 请求 (localhost)
IDA 插件 (运行在 IDA Pro 内部)
当用户向 AI 助手发出指令时,MCP 服务器接收工具调用请求,解析目标 IDA 实例,通过 HTTP 将代码发送至 IDA 内部的插件服务。插件在 IDA 主线程上执行代码,将结果沿原路返回给 AI 助手。
IDA 插件端
插件以 plugin_t 形式运行在 IDA Pro 内部,加载后常驻内存。用户通过菜单 Edit → Plugins → IDA-Script-MCP 或快捷键 Ctrl+Alt+S 启动,再次触发则停止服务。
启动时,插件在 127.0.0.1:13338 上创建 HTTP 服务器,基于 Python 标准库 http.server 实现,若端口被占用则自动递增,最多尝试 100 个端口。服务运行在守护线程中,不阻塞 IDA 的正常使用。
插件提供三个 HTTP 端点:
GET /health— 返回服务状态和实例标识GET /metadata— 返回当前数据库的文件名、路径、平台信息POST /execute— 接收并执行 Python 代码,返回执行结果
代码执行使用 idaapi.execute_sync 调度到 IDA 主线程,确保所有 API 调用的线程安全。执行引擎会自动构建包含 30 余个 IDA 模块的全局命名空间,并以懒加载方式处理可选模块,避免因缺少反编译器导致导入失败。
一个值得注意的细节是执行引擎的表达式求值机制。它使用 Python 的 ast 模块解析代码,判断最后一条语句是否为表达式。若是,则单独求值并作为返回值输出,行为与 Jupyter Notebook 一致。这意味着直接执行 ida_funcs.get_func_name(0x401000) 就能获得函数名作为结果,而不需要 print。
MCP 服务器端
MCP 服务器基于 FastMCP 框架构建,是 AI 助手与 IDA 之间的中间层。它向 AI 暴露四个工具:
| 工具名称 | 权限 | 功能 |
|---|---|---|
list_ida_instances |
只读 | 列出所有运行中的 IDA 实例 |
execute_idapython |
读写 | 在指定 IDA 实例中执行 Python 代码 |
check_ida_connection |
只读 | 检查与 IDA 实例的连接状态 |
get_ida_database_info |
只读 | 获取 IDA 数据库信息 |
实例发现机制依赖一个共享文件 ~/.ida_script_mcp_instances.json。IDA 插件在启动时将自身的 PID、端口、数据库名称等信息写入该文件,MCP 服务器通过读取文件并验证进程存活性来发现可用实例。这种基于文件的协调方式简单可靠,无需额外的服务注册中心。
在目标实例的选择上,服务器按照优先级依次尝试:显式指定的端口 > 实例 ID 匹配 > 仅有一个实例时自动选择 > 多实例时报错并列出可用列表。
每个工具都标注了语义注解,帮助 AI 客户端理解工具行为特征,做出更合理的调用决策。
传输层支持 stdio 和 SSE 两种模式。stdio 模式适用于 Claude Desktop 等桌面客户端,SSE 模式适用于基于浏览器的客户端。
安装与配置
安装过程被简化为两条命令:
pip install ida-script-mcp
ida-script-mcp-install install claude
第一条安装 Python 包,第二条完成两件事:将 IDA 插件以符号链接或拷贝方式部署到 IDA 的用户插件目录,同时将 MCP 服务器配置写入 Claude Desktop 的配置文件。
安装工具还支持一次性配置多个客户端:
ida-script-mcp-install install claude,cursor,vscode
支持的全部客户端包括 Claude Desktop、Cursor、Claude Code、VS Code、Windsurf。每个客户端的配置文件路径因平台而异,安装工具会自动检测操作系统并写入正确位置。
安装工具会检测是否存在 IDA Free 的授权文件,若检测到则拒绝安装,因为该项目仅支持 IDA Pro 8.3+。
多实例并行
一个实用的特性是多实例支持。当同时打开多个 IDA Pro 窗口分析不同二进制文件时,每个插件实例会自动分配不同的端口,并将自身注册到共享实例文件中。AI 助手可以查询所有实例列表,针对特定实例执行代码,实现多目标并行分析。
实例标识格式为 {PID}_{数据库文件名},例如 38271_crackme.exe,支持精确匹配和子串模糊匹配。已退出的实例通过 PID 存活检测自动清理。
使用场景
配置完成后,用户可以直接对 AI 助手说:
- 列出这个二进制文件中的所有函数
- 反编译 main 函数
- 查找地址 0x401000 的所有交叉引用
- 将地址 0x401000 的函数重命名为 my_function
- 显示二进制文件中的所有字符串
AI 助手会将自然语言指令翻译为 IDAPython 脚本,通过 MCP 服务器发送到 IDA Pro 执行,并将结果以可读的形式返回。
安全机制
该项目允许 AI 在 IDA 中执行任意 Python 代码,因此安全设计集中在两个层面:
- HTTP 服务绑定在
127.0.0.1,仅接受本地连接,服务间通信完全在本地回环完成 - 启动时注册的 PID 信息用于进程存活检测,自动清理已终止的实例记录
项目在文档中反复强调,不应将服务端口暴露到公网,且应仅与可信的 AI 助手配合使用。
环境要求
| 项目 | 要求 |
|---|---|
| IDA Pro | 8.3 及以上,不支持 IDA Free |
| Python | 3.11 及以上 |
| 核心依赖 | mcp >= 1.25.0, pydantic >= 2.0.0 |
| 操作系统 | Windows / macOS / Linux |
IDAPython 知识库
项目中附带了一份 IDAPython API 参考文档,覆盖 52 个模块,以 Markdown 和 reStructuredText 两种格式提供。此外还有一份 SKILL.md 文件,包含模块路由、代码模板、关键常量和常见错误模式。这些文档可作为 AI 助手的上下文注入材料,提升 AI 生成 IDAPython 代码的准确性。
本公众号非本项目作者,仅为推荐介绍。项目地址:
https://github.com/SuZiXunYue/ida-script-mcp
广告时间

☟上下滑动查看更多

夜雨聆风