项目简介

本项目是一个 Model Context Protocol (MCP) 服务器的实现,它桥接了 Binary Ninja 强大的二进制分析能力,使得基于 LLM 的客户端(如 Cline)可以通过标准化的 MCP 协议调用 Binary Ninja 的功能,进行二进制文件的分析。该服务器可以部署为独立的后端服务,为各种 LLM 应用提供上下文信息和工具支持。

主要功能点

  • 二进制信息获取: 获取二进制文件的基本元数据,如架构、平台、入口点、文件大小等。
  • 函数列表: 列出二进制文件中的所有函数名称。
  • 函数反汇编: 获取指定函数的汇编代码。
  • 函数反编译: 将指定函数反编译为 C 代码 (尽力而为,受 Binary Ninja Personal License 功能限制)。
  • 资源管理: 通过 URI 访问二进制分析结果,例如函数反汇编内容。
  • 工具注册与调用: 注册并提供二进制分析工具,供 MCP 客户端调用。
  • 支持多种部署方式: 可通过 Python HTTP 服务器、Python Stdio 服务器或 Node.js 桥接方式运行。

安装步骤

  1. 安装 Binary Ninja 和 MCP Plugin:

    • 确保已安装 Binary Ninja 软件(Personal License 或更高版本)。
    • 安装 Binary Ninja MCP Plugin (https://github.com/fosdickio/binary_ninja_mcp)。
    • 在 Binary Ninja 中启动 MCP Server 插件。
  2. 克隆仓库:

    git clone https://github.com/opensensor/bn_cline_mcp.git
    cd bn_cline_mcp
  3. 选择并启动 MCP 服务器:

    • HTTP 服务器 (binaryninja_mcp_http_server.py): 推荐用于网络访问,需要 Python 环境。
      python binaryninja_mcp_http_server.py --port 8088  # 可自定义端口
    • Stdio 服务器 (binaryninja_server.py): 适用于本地客户端,通过标准输入输出通信,需要 Python 环境。
      python binaryninja_server.py
    • Node.js 桥接 (binaryninja-mcp-bridge.js): 如果需要 Node.js 环境集成,可以使用此桥接,它会将 MCP 请求转发到 Python HTTP 服务器 (binaryninja_mcp_http_server.py)。
      npm install  # 安装依赖 (如果首次运行)
      node binaryninja-mcp-bridge.js
      注意:使用 Node.js 桥接时,需要先运行 'binaryninja_mcp_http_server.py' 作为后端服务器。

服务器配置 (MCP 客户端)

以下为 MCP 客户端 (如 Cline) 的服务器配置示例,根据选择的服务器类型配置:

HTTP 服务器 (binaryninja_mcp_http_server.py):

{
  "serverName": "Binary Ninja MCP HTTP",
  "command": "python",
  "args": [
    "binaryninja_mcp_http_server.py",
    "--port",
    "8088"  // HTTP 服务器端口,与启动命令一致
  ]
}

Stdio 服务器 (binaryninja_server.py):

{
  "serverName": "Binary Ninja MCP Stdio",
  "command": "python",
  "args": [
    "binaryninja_server.py"
  ]
}

Node.js 桥接 (binaryninja-mcp-bridge.js):

{
  "serverName": "Binary Ninja MCP Bridge",
  "command": "node",
  "args": [
    "binaryninja-mcp-bridge.js"
  ]
}

注意:使用 Node.js 桥接时,请确保 'binaryninja_mcp_http_server.py' 后端服务器已在运行。MCP 客户端连接的是 Node.js 桥接服务器。

基本使用方法

  1. 启动选择的 MCP 服务器。
  2. 在 MCP 客户端 (如 Cline) 中,根据上述配置添加并连接到 Binary Ninja MCP 服务器。
  3. 在客户端中,可以使用 "get_binary_info", "list_functions", "disassemble_function", "decompile_function" 等工具,并指定二进制文件路径作为参数进行分析。例如,在 Cline 中,您可以创建一个工具配置,类型选择 "mcp",并配置 "tool" 字段为上述工具名称之一,然后在 "entry" 或 "args" 中指定二进制文件路径。

注意事项

  • 本项目依赖于 Binary Ninja 软件及其 MCP Plugin。
  • 反编译功能受 Binary Ninja Personal License 的功能限制。
  • 确保 Binary Ninja MCP Plugin 已在 Binary Ninja 中成功启动并运行。
  • 根据实际部署环境选择合适的服务器启动方式 (HTTP, Stdio, 或 Node.js 桥接)。

信息

分类

开发者工具