项目简介
本项目是一个 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 桥接方式运行。
安装步骤
-
安装 Binary Ninja 和 MCP Plugin:
- 确保已安装 Binary Ninja 软件(Personal License 或更高版本)。
- 安装 Binary Ninja MCP Plugin (https://github.com/fosdickio/binary_ninja_mcp)。
- 在 Binary Ninja 中启动 MCP Server 插件。
-
克隆仓库:
git clone https://github.com/opensensor/bn_cline_mcp.git cd bn_cline_mcp -
选择并启动 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)。
注意:使用 Node.js 桥接时,需要先运行 'binaryninja_mcp_http_server.py' 作为后端服务器。npm install # 安装依赖 (如果首次运行) node binaryninja-mcp-bridge.js
- HTTP 服务器 (binaryninja_mcp_http_server.py): 推荐用于网络访问,需要 Python 环境。
服务器配置 (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 桥接服务器。
基本使用方法
- 启动选择的 MCP 服务器。
- 在 MCP 客户端 (如 Cline) 中,根据上述配置添加并连接到 Binary Ninja MCP 服务器。
- 在客户端中,可以使用 "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 桥接)。
信息
分类
开发者工具