返回 MCP 目录
public公开dns本地运行

binaryninja-mcp

这是一个为Binary Ninja逆向分析工具开发的MCP(模型上下文协议)服务器插件,提供多种反汇编和分析功能,支持通过MCP协议与客户端交互,实现二进制文件分析自动化。

article

README

🚀 Another™ MCP 服务器用于 Binary Ninja

Another™ MCP 服务器是一款为 Binary Ninja 打造的插件,它能为每个分析的二进制文件配备强大的 Web 服务器。该服务器功能丰富,可实现重命名符号、生成伪代码和中间表示(IR)、提取字符串、查找段和节等操作。

🚀 快速开始

要使用 Another™ MCP 服务器,你需要进行服务器和客户端的设置,具体步骤如下:

服务器设置

  1. 克隆仓库到 Binary Ninja 插件目录
git clone https://github.com/MCPPhalanx/binaryninja-mcp.git "${env:APPDATA}\Binary Ninja\plugins\MCPPhalanx_binaryninja_mcp"
  1. 安装 Python 环境: 使用 uv 工具管理 Python 环境:
uv venv
uv sync --dev
binaryninja-mcp install-api
  1. 运行服务器: 在插件目录中,使用以下命令启动服务器:
uv run python -m binaryninja_mcp.server

客户端设置

  1. 配置 MCP 客户端(例如 Claude Desktop)的 config.json 文件
{
  "mcpServers": {
    "binaryninja": {
      "command": "uv",
      "args": [
        "--directory",
        "C:/path/to/binaryninja-mcp",
        "run",
        "binaryninja-mcp",
        "client"
      ]
    }
  }
}
  1. SSE 客户端连接: 使用以下 URL 连接到 SSE(服务器发送事件)服务:
http://localhost:7000/sse

✨ 主要特性

可用工具

  • 重命名符号
import binaryninja as bn

# 示例:将函数重命名为 "main"
func = bn.current_function()
func.name = "main"
  • 生成伪代码和 IR
# 获取当前函数的伪代码
pseudo_code = bn.current_function().get_pseudo_code()

# 获取中间表示(LLVM IR)
ir = bn.current_function().get_llil()

资源

MCP 服务器为每个二进制文件提供以下资源类型:

  • triage_summary:Binary Ninja 分析视图的基本信息
  • imports:导入的符号/函数字典
  • exports:导出的符号/函数字典
  • segments:内存段列表
  • sections:二进制部分列表
  • strings:二进制中提取的字符串列表
  • functions:函数列表
  • data_variables:数据变量列表

📦 安装指南

服务器设置

  1. 克隆仓库到 Binary Ninja 插件目录
git clone https://github.com/MCPPhalanx/binaryninja-mcp.git "${env:APPDATA}\Binary Ninja\plugins\MCPPhalanx_binaryninja_mcp"
  1. 安装 Python 环境: 使用 uv 工具管理 Python 环境:
uv venv
uv sync --dev
binaryninja-mcp install-api
  1. 运行服务器: 在插件目录中,使用以下命令启动服务器:
uv run python -m binaryninja_mcp.server

客户端设置

  1. 配置 MCP 客户端(例如 Claude Desktop)的 config.json 文件
{
  "mcpServers": {
    "binaryninja": {
      "command": "uv",
      "args": [
        "--directory",
        "C:/path/to/binaryninja-mcp",
        "run",
        "binaryninja-mcp",
        "client"
      ]
    }
  }
}
  1. SSE 客户端连接: 使用以下 URL 连接到 SSE(服务器发送事件)服务:
http://localhost:7000/sse

💻 使用示例

基础用法

import binaryninja as bn

# 示例:将函数重命名为 "main"
func = bn.current_function()
func.name = "main"

高级用法

# 获取当前函数的伪代码
pseudo_code = bn.current_function().get_pseudo_code()

# 获取中间表示(LLVM IR)
ir = bn.current_function().get_llil()

📚 详细文档

开发

环境搭建

  1. 克隆仓库并安装依赖:
git clone https://github.com/MCPPhalanx/binaryninja-mcp.git
cd binaryninja-mcp
uv install
  1. 运行开发服务器:
uv run python -m binaryninja_mcp.server --dev
  1. 测试:
pytest
pytest --snapshot-update  # 更新测试快照

版本控制

使用 uvxhatch 进行版本管理:

uvx hatch version a       # 增加测试版
uvx hatch version minor,rc  # 发布候选版本
uvx hatch version release   # 发布正式版本

发布

uv publish

📄 许可证

本项目采用 Apache 2.0 许可证。

演示

演示图片

项目地址: https://github.com/MCPPhalanx/binaryninja-mcp

[![PyPI][pypi-badge]][pypi-url] [![Apache 许可证][license-badge]][license-url] [![Python 版本][python-badge]][python-url] [![GitHub 讨论][discussions-badge]][discussions-url]
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端