项目地址: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 插件
  1. 打开 IDA Pro,加载目标二进制文件
  2. 点击 Edit → Plugins → IDA-Script-MCP(快捷键 Ctrl+Alt+S
  3. 在输出窗口看到:
    [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 代码,请务必:

  1. 仅与可信的 AI 助手配合使用
  2. 插件默认绑定 127.0.0.1(仅本地访问)
  3. 切勿将 HTTP 端口暴露到公网
  4. 在隔离环境中分析不可信的二进制文件

八、生态与扩展

支持的 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

声明:本文仅用于技术交流,请遵守相关法律法规,不要用于非法用途。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐