mcpField
A
Another™ MCP Server for Binary Ninja

Another™ MCP Server for Binary Ninja

本地服务
github.com/MCPPhalanx安全5176 周前更新

关于 Another™ MCP Server for Binary Ninja

Another MCP Server for Binary Ninja 是一个为 Binary Ninja 提供的 MCP 服务,可将已加载的二进制文件暴露给 AI 客户端进行逆向分析。它既可作为 Binary Ninja UI 插件运行,也可通过命令行以无界面模式启动,适合安全研究和逆向工程人员使用。

主要功能

  1. 01重命名函数与数据变量
  2. 02获取伪 C、伪 Rust 与中间语言代码
  3. 03查看反汇编、导入导出与段、节信息
  4. 04提取字符串、函数和数据变量列表
  5. 05支持 SSE 与 stdio 两种连接方式

适用场景

  1. 01让 AI 客户端辅助分析函数的伪代码
  2. 02在无界面服务器上批量加载二进制并提供分析接口
  3. 03在 Claude Desktop 或 Cherry Studio 中查询二进制结构

MCP 相关

该项目是一个 MCP 服务,将 Binary Ninja 中打开的每个文件以资源形式(binaryninja:// URI)暴露,并提供 pseudo_c、disassembly 等工具供 MCP 客户端调用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"binaryninja": {
"command": "uvx",
"args": [
"binaryninja-mcp"
]
}
}
}
启动命令uvx binaryninja-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypibinaryninja-mcp

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Another™ MCP Server for Binary Ninja

Binary Ninja 的 MCP(Model Context Protocol)服务

PyPI Apache licensed Python Version GitHub Discussions

English | 中文

演示

tests/binary/beleaf.elf 取自 CSAW'19:Beleaf - Nightmare。 你也可以通过上面的链接查看完整的分析文章!

演示

……但为什么是 Another?

请参阅: 与现有插件的主要区别

安装

服务端设置

有两种方式可以运行 MCP 服务:

  1. Binary Ninja UI 插件:

    • 通过 Binary Ninja 的插件管理器安装插件
    • 首次加载文件时,MCP 服务会自动启动。
      • 可通过 Settings - MCP Server - Auto Start 配置自动启动
      • 可通过 Settings - MCP Server - Server port number 配置监听端口
    • 所有已打开的文件都会作为独立资源公开,详见下方的 可用资源部分
  2. Binary Ninja 无头模式:

    uvx binaryninja-mcp install-api  # only run once
    uvx binaryninja-mcp server <filename> [filename]...
    
    • filename 可以是任意二进制文件或 BNDB;与 UI 模式类似,所有已打开的 文件都可供 MCP 客户端使用。
    • 服务默认运行在端口 7000
    • 使用 --port 标志指定其他端口

MCP 客户端设置

  1. Claude Desktop(stdio 中继客户端):配置客户端,通过内置中继使用 stdio 传输进行连接。

    {
      "mcpServers": {
        "binaryninja": {
          "command": "uvx",
          "args": ["binaryninja-mcp", "client"]
        }
      }
    }
    
  2. Cherry Studio:

    • SSE 端点(推荐):URL:http://localhost:7000/sse
    • stdio 客户端:
      • 命令:uvx
      • 参数:
        binaryninja-mcp
        client
        

如果希望 MCP 服务使用非默认端口,请在服务端和客户端的命令行中都添加 --port 12345。

MCP 客户端可用工具

MCP 服务提供以下工具:

  • rename_symbol:重命名函数或数据变量
  • pseudo_c:获取指定函数的伪 C 代码
  • pseudo_rust:获取指定函数的伪 Rust 代码
  • high_level_il:获取指定函数的高级 IL
  • medium_level_il:获取指定函数的中级 IL
  • disassembly:获取函数或指定范围的反汇编
  • update_analysis_and_wait:更新二进制文件的分析并等待完成
  • get_triage_summary:获取 BinaryNinja Triage 视图的基本信息
  • get_imports:获取导入符号的字典
  • get_exports:获取导出符号的字典
  • get_segments:获取内存段列表
  • get_sections:获取二进制文件的节列表
  • get_strings:获取二进制文件中的字符串列表
  • get_functions:获取函数列表
  • get_data_variables:获取数据变量列表

MCP 客户端可用资源

MCP 资源可通过以下格式的 URI 访问: binaryninja://{filename}/{resource_type}

对于每个二进制文件,服务会提供以下资源类型:

  • triage_summary:BinaryNinja Triage 视图中的基本信息
  • imports:导入符号/函数的字典
  • exports:导出符号/函数的字典
  • segments:内存段列表
  • sections:二进制文件节列表
  • strings:在二进制文件中找到的字符串列表
  • functions:函数列表
  • data_variables:数据变量列表

开发

uv 是此项目推荐的包管理工具。

将目录克隆到 Binary Ninja 插件目录

git clone https://github.com/MCPPhalanx/binaryninja-mcp.git "${env:APPDATA}\Binary Ninja\plugins\MCPPhalanx_binaryninja_mcp"

设置 Python 环境

必须手动将 Binary Ninja API 安装到 virtualenv 中。

uv venv
uv sync --dev
# install binaryninja API
binaryninja-mcp install-api
# check API is correctly installed
uv run python -c 'import binaryninja as bn; assert bn._init_plugins() is None; assert bn.core_ui_enabled() is not None; print("BN API check PASSED!!")'

为开发设置 MCP 客户端

对于使用 stdio 传输的 MCP 客户端(如 Claude Desktop),请将工作目录切换到开发文件夹。

{
  "mcpServers": {
    "binaryninja": {
      "command": "uv",
      "args": [
        "--directory",
        "C:/path/to/binaryninja-mcp",
        "run",
        "binaryninja-mcp",
        "client"
      ]
    }
  }
}

启用了 SSE 的 MCP 客户端可以通过以下地址连接:http://localhost:7000/sse

构建

uv build

测试

pytest
# To update test snapshots:
pytest --snapshot-update

版本更新

PyPI 包版本会根据 Binary Ninja 的 plugin.json(采用 package.json 格式)自动派生,以保持 BN 插件和 PyPI 包的版本一致。

# bump alpha version
uvx hatch version a

# bump release version
uvx hatch version minor,rc
uvx hatch version release

参见:版本管理 - Hatch

发布

uv publish

许可证

Apache 2.0

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。