binary_ninja_mcp
Binary Ninja 的 MCP 协议桥接器,让 AI 大模型通过自然语言驱动专业逆向分析工具
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Binary Ninja 的 MCP 协议桥接器,让 AI 大模型通过自然语言驱动专业逆向分析工具
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:Claude Desktop 中集成 Binary Ninja MCP 后的工作界面,AI 可直接调用 Binary Ninja 的逆向分析能力
2024 年的某场 CTF 比赛中,一位参赛选手面对一道加了强壳保护的 CrackMe 题目。以往他需要手动翻阅汇编代码、追踪函数调用,手动理解复杂控制流——这道题至少要花两三个小时。但这一次,他打开 Claude Desktop,在聊天框里输入:「帮我分析这个二进制,找出验证 flag 的核心逻辑。」几秒钟后,AI 返回了完整的函数调用图、关键汇编代码的伪 C 表示,以及 flag 验证函数的具体实现。整个过程不到十分钟。
这背后依赖的工具,就是 Binary Ninja MCP——一款将专业级二进制逆向分析平台 Binary Ninja 的核心能力,通过 MCP(Model Context Protocol)协议无缝桥接到 AI 大模型的插件系统。
Binary Ninja 是一款由 Vector35 公司开发的专业二进制逆向工程分析平台,与 IDA Pro、Ghidra 并称为三大主流逆向分析工具。相比 IDA,它提供了更现代的 API、更灵活的 Python/TypeScript 脚本接口,以及一个更友好的低层中间语言(Low-Level IL)表示体系。Binary Ninja 有商业版和免费版(社区版),对个人学习者和学术研究者免费开放。
Binary Ninja 的核心优势在于其 可编程性。它的 API 可以直接访问反汇编、函数分析、数据流分析等核心能力,开发者可以用 Python 或 TypeScript 编写脚本,实现自动化逆向分析任务。

图2:Binary Ninja 的插件管理器可直接安装 Binary Ninja MCP 插件
MCP(Model Context Protocol)是 Anthropic 在 2024 年底推出的一种标准化协议,旨在解决 AI 助手与外部工具之间的连接问题。在 MCP 之前,每个 AI 客户端(如 Claude Desktop、Cline、Cursor)如果要调用外部工具,都需要各自实现一套专用的插件机制,导致重复造轮子和生态割裂。MCP 的出现让这一切变得简单:只要实现了 MCP 服务器,任意 MCP 客户端都可以无缝调用其提供的工具集。
Binary Ninja MCP 的作者 fosdickio 正是看中了这一点:Binary Ninja 本身就拥有强大的二进制分析能力,而 MCP 协议为这些能力提供了一条通往 AI 大模型的标准化桥梁。
Binary Ninja MCP 的代码库包含三个核心组件,分层协作:
plugin/ 目录包含 Binary Ninja 的原生插件代码,以 Python 编写。核心文件:
plugin/core/binary_operations.py:封装 Binary Ninja 的核心 API,包括二进制文件加载(支持 bn.open_view 和传统 BinaryViewType.get_view_of_file 两种方式)、函数列表获取、反编译、符号搜索等操作。值得关注的是,多二进制支持通过 weakref 机制实现——关闭的视图会被自动清理,避免内存泄漏。
plugin/server/http_server.py:基于 Python 标准库 http.server 实现的 HTTP 服务器,监听本地 9009 端口(默认)。这是一个无框架的轻量实现,所有请求处理都在 MCPRequestHandler 类中,通过 JSON 格式与客户端通信。服务器通过 Access-Control-Allow-Origin: * 允许跨域调用,体现了对多客户端场景的考虑。
plugin/api/endpoints.py:定义所有可调用的 API 端点,包括 get_status(获取当前二进制状态)、get_entry_points(获取入口点)、list_binaries(多二进制管理)等。_format_binary_listing 方法展示了良好的 API 设计思路——将原始数据规范化,生成顺序 ID 和多种选择器,方便 AI 客户端精确引用目标二进制。
bridge/binja_mcp_bridge.py 是一个独立的 Python MCP 服务器,基于 mcp[cli]>=1.6.0 和 FastMCP 框架。它充当中间层:将来自 MCP 客户端的工具调用请求,转换为对第一层 HTTP 服务器的请求,并把结果以 MCP 工具定义的形式暴露出去。
这是一个经典的适配器模式:第一层负责 Binary Ninja API 的 HTTP 化,第二层负责 MCP 协议的适配,两层之间通过 HTTP RESTful 接口通信。
代码中的错误处理值得注意——safe_get、get_json、get_text 三个 helper 方法对网络异常、HTTP 错误码、非 JSON 响应等边界情况都做了妥善处理,返回结构化的错误信息给 AI 层。
bridge/src/ 目录下是 TypeScript 版本的独立 MCP 服务器实现。这是一个完整独立的服务,可以不依赖 Binary Ninja Python 插件,直接通过 npx -y binary-ninja-mcp 运行。这种双实现策略让用户可以根据偏好选择:
TypeScript 版本使用 @modelcontextprotocol/sdk 和 zod 做类型验证,代码质量更高,类型安全更好。
MCP 插件对外暴露了 50 多个工具,覆盖二进制逆向分析的各个环节:
| 工具类别 | 代表工具 | 功能描述 |
|---|---|---|
| 函数分析 | list_methods | 分页列出所有函数名 |
decompile_function | 按名称或地址反编译函数 | |
search_functions_by_name | 搜索函数名 | |
| 结构分析 | get_structs | 列出所有结构体定义 |
get_struct_info | 获取结构体详细信息 | |
| 数据浏览 | get_strings | 提取二进制中的字符串 |
search_data | 搜索特定数据 | |
| 入口点分析 | get_entry_points | 获取程序入口点 |
| 多二进制管理 | list_binaries | 列出所有已加载二进制 |
switch_binary | 切换活动二进制 |

图3:Binary Ninja 逆向分析界面,可对函数、控制流、数据结构进行深度分析
Binary Ninja MCP 并非零门槛工具,使用者需要:
纯新手用户请先学习 Binary Ninja 基础操作,否则即使有 AI 辅助也无法有效利用分析结果。
Binary Ninja MCP 目前存在以下局限:
平台依赖 Binary Ninja 即平台依赖:插件需要 Binary Ninja 运行,而 Binary Ninja 对 ARM 架构 Mac 的支持尚不稳定,部分用户反馈在 Apple Silicon 上偶发崩溃。
HTTP Server 安全考量:默认监听 localhost:9009,若需远程调用需额外配置网络访问策略,生产环境中暴露 HTTP 服务存在安全风险。
Binary Ninja API 版本兼容性:plugin.json 声明最低 Binary Ninja 版本为 4000(对应 v4.0),旧版本用户需要升级。
MCP 协议仍在演进:MCP 协议本身仍处于快速迭代期,部分 API 行为可能随版本更新发生变化,维护成本不可忽视。
无法替代专业人工分析:AI 能加速理解代码逻辑,但对于对抗性混淆、虚拟机保护等高级逆向技术,仍需人工深度介入。
Binary Ninja MCP 的出现,代表了逆向工程领域的一个趋势性变化:将 AI 大模型的推理能力,与专业二进制分析工具的底层能力深度融合。
传统的逆向工作流是纯手工的:阅读汇编 → 理解逻辑 → 写笔记 → 继续深入。AI 的介入改变了这个循环——AI 可以作为"逆向分析助手",帮你快速定位关键函数、总结代码逻辑、生成分析假设,而人则负责验证这些假设和处理最复杂的对抗性场景。
从 GitHub 392 星、82 Fork 的数据来看,该项目已经获得了相当数量的关注,且已支持 Cline、Claude Desktop、Cursor、Windsurf、Claude Code、LM Studio 等主流 MCP 客户端,形成了初步的生态覆盖。随着 MCP 协议的持续演进和 Binary Ninja MCP 的功能完善,这一工具链有望成为逆向工程师的标准装备之一。
步骤一:安装 Binary Ninja(https://binary.ninja/)
步骤二:在 Binary Ninja 插件管理器中安装 "Binary Ninja MCP"
步骤三:安装 MCP 客户端(如 Claude Desktop 或 Cline)
步骤四:MCP 客户端会自动检测并配置,无需手动配置
如需手动配置 Claude Desktop,在 ~/.config/claude-desktop/claude_desktop_config.json 添加 MCP Server 配置即可。