Binaryninja Mcp

Binaryninja Mcp

🚀 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]
  • 0 关注
  • 0 收藏,10 浏览
  • system 提出于 2025-09-29 22:51

相似服务问题