IDA-Script-MCP:基于 MCP 的二进制分析自动化方案

张开发
2026/4/11 8:17:05 15 分钟阅读

分享文章

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-MCPIDA-Script-MCP是一个基于 MCPModel 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 DesktopCursorVS CodeWindsurfClaude Code四、快速上手环境要求IDA Pro 8.3不支持 IDA FreePython 3.11Windows / macOS / Linux安装步骤# 1. 安装 Python 包pipinstallida-script-mcp# 2. 安装插件并配置 MCP 客户端ida-script-mcp-installinstallclaude安装完成后IDA 插件会被安装到~/.idapro/plugins/或 Windows 的%APPDATA%\Hex-Rays\IDA Pro\plugins\MCP 客户端的配置会自动写入配置其他客户端如果你用的是 Cursor、VS Code 等其他支持 MCP 的客户端方法类似# 配置 Cursorida-script-mcp-installinstallcursor# 配置 VS Codeida-script-mcp-installinstallvscode# 配置 Windsurfida-script-mcp-installinstallwindsurf# 同时配置多个客户端ida-script-mcp-installinstallclaude,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.jsonida-script-mcp-installinstall--projectclaude使用方法第一步启动 IDA 插件打开 IDA Pro加载目标二进制文件点击Edit → Plugins → IDA-Script-MCP快捷键CtrlAltS在输出窗口看到[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架构:{x64ifida_ida.inf_is_64bit()elsex86})print(f函数数量:{len(list(idautils.Functions()))})print(f字符串数量:{len(list(idautils.Strings()))})案例 2批量分析函数用户: “找出所有名字包含 ‘encrypt’ 的函数”Claude 执行:importidautilsimportida_funcsforeainidautils.Functions():nameida_funcs.get_func_name(ea)ifencryptinname.lower():funcida_funcs.get_func(ea)print(f{name}:{func.start_ea:#x}-{func.end_ea:#x})案例 3交叉引用分析用户: “谁调用了地址 0x401000 的函数”Claude 执行:importidautilsforxrefinidautils.XrefsTo(0x401000):callerida_funcs.get_func_name(xref.frm)print(f调用者:{caller}at{xref.frm:#x})案例 4反编译分析用户: “反编译 sub_401100 并解释它的逻辑”Claude 执行:importida_hexrays cfuncida_hexrays.decompile(0x401100)ifcfunc: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.jsonida-script-mcp-installinstall--projectclaude这样每个项目可以有不同的 IDA 实例配置。七、安全注意事项⚠️重要提醒此工具允许 AI 执行任意 Python 代码请务必仅与可信的 AI 助手配合使用插件默认绑定127.0.0.1仅本地访问切勿将 HTTP 端口暴露到公网在隔离环境中分析不可信的二进制文件八、生态与扩展支持的 MCP 客户端客户端配置位置Claude Desktopclaude_desktop_config.jsonCursor.cursor/mcp.jsonVS Codesettings.jsonWindsurfmcp_config.jsonIDAPython 文档支持项目还包含完整的 IDAPython 模块文档idapython/docs/覆盖 50 个ida_*模块让 AI 能够准确使用 IDA API。九、总结IDA-Script-MCP 打通了 AI 助手与 IDA Pro 之间的壁垒让逆向工程师能够提升效率告别手动编写脚本的繁琐降低门槛新人也能通过自然语言操作 IDA增强协作团队共享 AI 分析能力解放双手让 AI 完成重复性工作项目地址: https://github.com/yourusername/ida-script-mcp附录常用命令速查# 安装pipinstallida-script-mcp# 安装插件 配置 Claudeida-script-mcp-installinstallclaude# 配置多个客户端ida-script-mcp-installinstallclaude,cursor,vscode# 查看支持的客户端ida-script-mcp-install --list-clients# 卸载ida-script-mcp-install uninstall声明本文仅用于技术交流请遵守相关法律法规不要用于非法用途。

更多文章