Binary Ninja MCP Server 插件

使用说明

项目简介

Binary Ninja MCP Server 是一个 Binary Ninja 插件,它在 Binary Ninja 内部启动一个 HTTP 服务器,作为 MCP 服务器,对外提供了一系列 API 接口,可以将 Binary Ninja 的二进制分析能力暴露给 LLM 客户端,例如 Claude Desktop。通过这些接口,LLM 可以获取二进制文件的信息,执行反编译、重命名函数等操作,从而实现 AI 辅助的逆向工程工作流。

主要功能点

  • 二进制文件信息查询: 获取二进制文件的状态、函数列表、类列表、段列表、导入导出表、命名空间、数据项等信息。
  • 函数操作: 根据名称或地址查找函数,获取函数信息,反编译函数,重命名函数。
  • 数据操作: 重命名数据项。
  • 集成 Claude Desktop: 提供与 Claude Desktop 的无缝集成,可以使用自然语言指令调用 Binary Ninja 的功能。

安装步骤

  1. 安装 Binary Ninja: 确保已安装 Binary Ninja 软件。
  2. 克隆仓库: 使用 'git clone [email protected]:fosdickio/binary_ninja_mcp.git' 命令克隆仓库到本地。
  3. 安装依赖: 进入仓库目录,使用 'uv venv' 创建虚拟环境,然后使用 'uv pip install -e .' 安装插件依赖。
    cd binary_ninja_mcp
    uv venv
    source .venv/bin/activate  # macOS/Linux
    uv pip install -e .
  4. 安装 Binary Ninja 插件: 将仓库 'plugins/binary_ninja_mcp' 目录下的 'binary_ninja_mcp' 文件夹复制到 Binary Ninja 的插件目录。插件目录通常位于 '~/.binaryninja/plugins/' (不同操作系统可能略有差异)。

服务器配置

对于 MCP 客户端 (例如 Claude Desktop),需要配置 MCP 服务器的启动命令。以下是 Claude Desktop 的配置示例,其他 MCP 客户端的配置方法类似。

在 Claude Desktop 的 'Settings > Developer > Edit Config' 中,添加以下 JSON 配置:

{
  "mcpServers": {
    "binaryninja_mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "ABSOLUTE_PATH_TO_DIR/binary_ninja_mcp/src",  //  请替换为 binary_ninja_mcp 仓库 src 目录的绝对路径
        "run",
        "binja_mcp_bridge.py"
      ]
    }
  }
}

配置参数说明:

  • 'server name': 'binaryninja_mcp' (服务器名称,客户端用于识别和调用)
  • 'command': 'uv' (启动命令,这里使用 'uv' 包管理器)
  • 'args': 启动参数列表
    • '--directory': 'ABSOLUTE_PATH_TO_DIR/binary_ninja_mcp/src' (指定工作目录为 'binary_ninja_mcp/src' 目录,请替换为实际的绝对路径)
    • 'run': 'run' 命令表示运行 Python 脚本
    • 'binja_mcp_bridge.py': 要运行的 Python 脚本为 'binja_mcp_bridge.py' (MCP 桥接脚本)

基本使用方法

  1. 启动 Binary Ninja 和 MCP Server: 打开 Binary Ninja,加载要分析的二进制文件。在 Binary Ninja 菜单栏中选择 'Plugins > MCP Server > Start MCP Server' 启动 MCP 服务器。
  2. 配置并启动 MCP 客户端: 配置 MCP 客户端连接到 Binary Ninja MCP Server。例如,对于 Claude Desktop,按照上述服务器配置步骤进行配置。启动 Claude Desktop 或其他 MCP 客户端。
  3. 使用 LLM 客户端进行交互: 在 LLM 客户端中,可以使用自然语言指令调用 Binary Ninja 的功能。例如,在 Claude Desktop 中,可以提问 "Decompile function main in Binary Ninja" 或 "Rename function sub_401000 to important_function in Binary Ninja"。

注意事项

  • 确保 Binary Ninja MCP Server 插件已正确安装并启动。
  • 确保 MCP 客户端配置的服务器启动命令和参数正确,工作目录和脚本路径需要替换为实际路径。
  • Binary Ninja MCP Server 通过 HTTP 协议与 MCP 客户端通信,默认端口为 9009。

服务器信息