Binary Ninja MCP 是一个 Binary Ninja 插件,包含 MCP 服务器和桥接器,旨在将 Binary Ninja 的二进制分析能力与用户常用的 LLM/MCP 客户端无缝集成。
用途: 该工具用于增强逆向工程工作流,通过 AI 辅助实现 Binary Ninja 与 MCP 客户端的实时集成。它支持所有 MCP 客户端(如 Cline、Claude desktop、Roo Code 等),可打开多个二进制文件并自动切换活动目标。官方提供了一个演示视频,展示使用该扩展解决 CTF 挑战。
主要能力: 仓库包含两个独立组件:
- Binary Ninja 插件:提供 MCP 服务器,通过 HTTP 端点暴露 Binary Ninja 的能力,可与任何实现 MCP 协议的客户端配合使用。
- MCP 桥接器:将用户常用的 MCP 客户端连接到 Binary Ninja MCP 服务器。
支持的 HTTP 端点包括:
- /allStrings:一次性返回所有字符串。
- /formatValue?address=<addr>&text=<value>&size=<n>:在指定地址转换并设置注释。
- /getXrefsTo?address=<addr>:获取指向地址的交叉引用(代码+数据)。
- /getDataDecl?name=<symbol>|address=<addr>&length=<n>:返回数据符号或地址的声明式字符串和十六进制转储的 JSON。
- /hexdump?address=<addr>&length=<n>:按地址对齐的文本十六进制转储。
- /hexdumpByName?name=<symbol>&length=<n>:按符号名称的文本十六进制转储。
- /makeFunctionAt?address=<addr>&platform=<name|default>:在地址处创建函数(幂等)。
- /platforms:列出所有可用平台名称。
- /binaries 或 /views:列出托管/打开的二进制文件及其 ID 和活动标志。
- /selectBinary?view=<id|filename>:选择后续操作的活动二进制文件。
- /data?offset=<n>&limit=<m>&length=<n>:带预览的已定义数据项。
- /getXrefsToEnum?name=<enum>:通过匹配成员常量获取枚举使用情况。
- /getXrefsToField?struct=<name>&field=<name>:获取结构体字段的交叉引用。
- /getXrefsToType?name=<type>:获取与结构体/类型名称相关的交叉引用/使用情况。
- /getTypeInfo?name=<type>:解析类型并返回声明和详细信息。
- /getXrefsToUnion?name=<union>:联合体交叉引用/使用情况。
- /getStackFrameVars?name=<function>|address=<addr>:获取函数的栈帧变量信息。
- /getCallers?identifiers=<name|addr>[,...]:返回一个或多个标识符的调用者摘要。
- /getCallees?identifiers=<name|addr>[,...]:返回被调用者摘要。
- /localTypes?offset=<n>&limit=<m>:列出本地类型。
- /strings?offset=<n>&limit=<m>:分页字符串。
- /strings/filter?offset=<n>&limit=<m>&filter=<substr>:过滤字符串。
- /searchTypes?query=<substr>&offset=<n>&limit=<m>:按子字符串搜索本地类型。
- /patch 或 /patchBytes?address=<addr>&data=<hex>&save_to_file=<bool>:在地址处修补原始字节。
- /renameVariables:批量重命名函数中的局部变量。
使用方式:
- 先安装 MCP 客户端(支持自动设置的客户端包括 Cline、Claude desktop、Roo Code 等),以便自动配置。
- 通过 Binary Ninja 插件管理器(Plugins > Manage Plugins)或手动安装扩展。手动安装可将仓库复制到 Binary Ninja 插件文件夹。
- 可选:手动设置 MCP 客户端。推荐使用官方 npm 包进行设置。对于其他 MCP 客户端,可直接使用 Python 桥接器。注意替换 /ABSOLUTE/PATH/TO 为项目目录的实际绝对路径,并使用虚拟环境的 Python 解释器。
- 打开 Binary Ninja 并加载二进制文件。
- 点击左下角显示的按钮。
- 通过 MCP 客户端开始使用,可向 LLM 提示关于当前打开的二进制文件的问题。
适用场景:
- 恶意软件分析
- CTF 挑战
- 逆向工程工作流中的 AI 辅助
限制: 暂未提供关于收费、价格、平台兼容性、效果保证等方面的信息。