IDA-Script-MCP:基于 MCP 的二进制分析自动化方案
项目地址:https://github.com/SuZiXunYue/ida-script-mcp
最近在 GitHub 上看到一个挺有意思的项目,叫 IDA-Script-MCP。简单说,它能让 Claude 这类 AI 助手直接操作 IDA Pro。
以前用 IDA 分析二进制,遇到不懂的地方得切出去查资料,或者自己写 IDAPython 脚本。现在装上这个插件,直接跟 Claude 说"帮我反编译这个函数"、“找出所有调用 printf 的地方”,它就能在 IDA 里执行,把结果返回给你。
这篇文章介绍一下这个项目的原理和用法。
一、解决什么问题?
做逆向分析时,常见的一些麻烦:
- 分析不熟悉的二进制文件,要反复在 IDA 和浏览器之间切换
- 想批量处理,得写脚本,有时候就为了改几个函数名
- 新人接手老项目,不知道某个函数是做什么的
这个项目的思路是:既然 AI 能看懂代码、能解释逻辑,为什么不让它直接操作 IDA?把重复性的工作交给它,人专注于真正需要思考的部分。
二、什么是 IDA-Script-MCP?
IDA-Script-MCP 是一个基于 MCP(Model Context Protocol)协议的桥梁工具,它让 Claude、Cursor 等 AI 助手能够直接在 IDA Pro 中执行 IDAPython 脚本。
核心特性
| 特性 | 说明 |
|---|---|
| AI 驱动分析 | Claude 直接操作 IDA Pro,执行反编译、分析等任务 |
| 多实例支持 | 同时分析多个二进制文件,跨不同 IDA 实例 |
| 完整 API 访问 | 支持所有 IDA 模块(idaapi、ida_hexrays、idautils 等) |
| 一键安装 | 一条命令完成插件安装和 MCP 客户端配置 |
| 跨平台 | 支持 Windows、macOS、Linux |
三、技术架构解析
整体架构
┌─────────────────┐ MCP Protocol ┌─────────────────┐
│ AI Assistant │ ◄───────────────────► │ MCP Server │
│ (Claude/Cursor)│ │ (server.py) │
└─────────────────┘ └────────┬────────┘
│ HTTP
▼
┌─────────────────┐
│ IDA Plugin │
│ (ida_plugin.py) │
│ Inside IDA │
└─────────────────┘
三大核心组件
1. IDA Pro 插件 (ida_plugin.py)
运行在 IDA Pro 内部,提供 HTTP 服务端:
# 核心端点
GET /health # 健康检查
GET /metadata # 获取数据库信息
POST /execute # 执行 Python 代码
关键设计:
- 主线程执行:通过
execute_sync确保 IDA API 调用在主线程执行 - 实例注册:使用 JSON 文件记录多个 IDA 实例信息
- 端口自动分配:默认端口 13338,冲突时自动递增
2. MCP 服务器 (server.py)
提供四个核心工具给 AI 助手:
| 工具名 | 功能 |
|---|---|
list_ida_instances |
列出所有运行中的 IDA 实例 |
execute_idapython |
在 IDA 中执行 Python 代码 |
check_ida_connection |
检查连接状态 |
get_ida_database_info |
获取数据库元信息 |
3. 安装器 (installer.py)
一键安装插件并配置 MCP 客户端,支持:
- Claude Desktop
- Cursor
- VS Code
- Windsurf
- Claude Code
四、快速上手
环境要求
- IDA Pro 8.3+(不支持 IDA Free)
- Python 3.11+
- Windows / macOS / Linux
安装步骤
# 1. 安装 Python 包
pip install ida-script-mcp
# 2. 安装插件并配置 MCP 客户端
ida-script-mcp-install install claude
安装完成后:
- IDA 插件会被安装到
~/.idapro/plugins/(或 Windows 的%APPDATA%\Hex-Rays\IDA Pro\plugins\) - MCP 客户端的配置会自动写入
配置其他客户端
如果你用的是 Cursor、VS Code 等其他支持 MCP 的客户端,方法类似:
# 配置 Cursor
ida-script-mcp-install install cursor
# 配置 VS Code
ida-script-mcp-install install vscode
# 配置 Windsurf
ida-script-mcp-install install windsurf
# 同时配置多个客户端
ida-script-mcp-install install claude,cursor,vscode
查看预设支持的客户端:
ida-script-mcp-install --list-clients
输出示例:
Available MCP clients:
claude (found)
cursor (found)
vscode (found)
windsurf (found)
claude-code (found)
注意:--list-clients 列出的是有预设配置路径的客户端。实际上,任何支持 MCP 协议的客户端都可以使用本项目,只需手动添加 MCP 配置即可。
手动配置方法:在客户端的 MCP 配置文件中添加:
{
"mcpServers": {
"ida-script-mcp": {
"command": "python",
"args": ["-m", "ida_script_mcp.server"]
}
}
}
如果你使用虚拟环境,把 python 换成虚拟环境中的 Python 路径。
如果想在项目级别配置(适合团队协作),加上 --project 参数:
# 项目级配置,会在当前目录生成 .mcp.json
ida-script-mcp-install install --project claude
使用方法
第一步:启动 IDA 插件
- 打开 IDA Pro,加载目标二进制文件
- 点击
Edit → Plugins → IDA-Script-MCP(快捷键Ctrl+Alt+S) - 在输出窗口看到:
[IDA-Script-MCP] Server started at http://127.0.0.1:13338 [IDA-Script-MCP] Instance ID: 12345_crackme.exe
第二步:与 Claude 对话
现在你可以直接对 Claude 说:
- “列出这个二进制文件中的所有函数”
- “反编译 main 函数并解释它的逻辑”
- “找到所有调用 printf 的地方”
- “把地址 0x401000 的函数重命名为 decrypt_flag”
- “分析这个函数的栈帧结构”
五、实际案例演示
案例 1:快速了解二进制结构
用户: “帮我分析这个 crackme 的基本信息”
Claude 执行:
# 获取文件信息
print(f"文件名: {idaapi.get_root_filename()}")
print(f"架构: {'x64' if ida_ida.inf_is_64bit() else 'x86'}")
print(f"函数数量: {len(list(idautils.Functions()))}")
print(f"字符串数量: {len(list(idautils.Strings()))}")
案例 2:批量分析函数
用户: “找出所有名字包含 ‘encrypt’ 的函数”
Claude 执行:
import idautils
import ida_funcs
for ea in idautils.Functions():
name = ida_funcs.get_func_name(ea)
if 'encrypt' in name.lower():
func = ida_funcs.get_func(ea)
print(f"{name}: {func.start_ea:#x} - {func.end_ea:#x}")
案例 3:交叉引用分析
用户: “谁调用了地址 0x401000 的函数?”
Claude 执行:
import idautils
for xref in idautils.XrefsTo(0x401000):
caller = ida_funcs.get_func_name(xref.frm)
print(f"调用者: {caller} at {xref.frm:#x}")
案例 4:反编译分析
用户: “反编译 sub_401100 并解释它的逻辑”
Claude 执行:
import ida_hexrays
cfunc = ida_hexrays.decompile(0x401100)
if cfunc:
print(str(cfunc)) # 输出伪代码
六、高级用法
多实例管理
当你同时打开多个 IDA 实例时:
# AI 会自动检测所有实例
{
"count": 2,
"instances": {
"12345_crackme.exe": {"port": 13338, "database": "crackme.exe"},
"67890_malware.dll": {"port": 13339, "database": "malware.dll"}
}
}
你可以指定实例:
- “在 malware.dll 中查找导入函数”
- “在 crackme.exe 的 main 函数设置断点”
项目级配置
团队协作时,可以在项目目录创建 .mcp.json:
ida-script-mcp-install install --project claude
这样每个项目可以有不同的 IDA 实例配置。
七、安全注意事项
⚠️ 重要提醒:
此工具允许 AI 执行任意 Python 代码,请务必:
- 仅与可信的 AI 助手配合使用
- 插件默认绑定
127.0.0.1(仅本地访问) - 切勿将 HTTP 端口暴露到公网
- 在隔离环境中分析不可信的二进制文件
八、生态与扩展
支持的 MCP 客户端
| 客户端 | 配置位置 |
|---|---|
| Claude Desktop | claude_desktop_config.json |
| Cursor | .cursor/mcp.json |
| VS Code | settings.json |
| Windsurf | mcp_config.json |
IDAPython 文档支持
项目还包含完整的 IDAPython 模块文档(idapython/docs/),覆盖 50+ 个 ida_* 模块,让 AI 能够准确使用 IDA API。
九、总结
IDA-Script-MCP 打通了 AI 助手与 IDA Pro 之间的壁垒,让逆向工程师能够:
- 提升效率:告别手动编写脚本的繁琐
- 降低门槛:新人也能通过自然语言操作 IDA
- 增强协作:团队共享 AI 分析能力
- 解放双手:让 AI 完成重复性工作
项目地址: https://github.com/yourusername/ida-script-mcp
附录:常用命令速查
# 安装
pip install ida-script-mcp
# 安装插件 + 配置 Claude
ida-script-mcp-install install claude
# 配置多个客户端
ida-script-mcp-install install claude,cursor,vscode
# 查看支持的客户端
ida-script-mcp-install --list-clients
# 卸载
ida-script-mcp-install uninstall
声明:本文仅用于技术交流,请遵守相关法律法规,不要用于非法用途。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)