SuperAPI AI 工具集

binary_ninja_mcp

Binary Ninja MCP 是一个 Binary Ninja 插件,内含 MCP 服务器,可将 Binary Ninja 的二进制分析能力通过 HTTP 端点暴露给支持 MCP 协议的 LLM 客户端,实现实时集成与 AI 辅助逆向工程。它包含两个组件:提供 MCP 服务器的 Binary Ninja 插件,以及连接 MCP 客户端与服务器的 MCP 桥接器。支持多种 MCP 客户端(如 Cline、Claude desktop、Roo Code 等),可打开多个二进制文件并自动切换活动目标。提供丰富的 HTTP 端点,涵盖字符串获取、交叉引用、反汇编、类型信息、函数调用关系、变量重命名、字节补丁等操作,适用于恶意软件分析、CTF 挑战等场景。

访问官网

工具介绍

Binary Ninja MCP 是一个 Binary Ninja 插件,包含 MCP 服务器和桥接器,旨在将 Binary Ninja 的二进制分析能力与用户常用的 LLM/MCP 客户端无缝集成。

用途: 该工具用于增强逆向工程工作流,通过 AI 辅助实现 Binary Ninja 与 MCP 客户端的实时集成。它支持所有 MCP 客户端(如 Cline、Claude desktop、Roo Code 等),可打开多个二进制文件并自动切换活动目标。官方提供了一个演示视频,展示使用该扩展解决 CTF 挑战。

主要能力: 仓库包含两个独立组件:

  1. Binary Ninja 插件:提供 MCP 服务器,通过 HTTP 端点暴露 Binary Ninja 的能力,可与任何实现 MCP 协议的客户端配合使用。
  2. 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:批量重命名函数中的局部变量。

使用方式:

  1. 先安装 MCP 客户端(支持自动设置的客户端包括 Cline、Claude desktop、Roo Code 等),以便自动配置。
  2. 通过 Binary Ninja 插件管理器(Plugins > Manage Plugins)或手动安装扩展。手动安装可将仓库复制到 Binary Ninja 插件文件夹。
  3. 可选:手动设置 MCP 客户端。推荐使用官方 npm 包进行设置。对于其他 MCP 客户端,可直接使用 Python 桥接器。注意替换 /ABSOLUTE/PATH/TO 为项目目录的实际绝对路径,并使用虚拟环境的 Python 解释器。
  4. 打开 Binary Ninja 并加载二进制文件。
  5. 点击左下角显示的按钮。
  6. 通过 MCP 客户端开始使用,可向 LLM 提示关于当前打开的二进制文件的问题。

适用场景:

  • 恶意软件分析
  • CTF 挑战
  • 逆向工程工作流中的 AI 辅助

限制: 暂未提供关于收费、价格、平台兼容性、效果保证等方面的信息。