首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页
学习
活动
专区
圈层
工具
MCP广场
MCP广场 >详情页
binary_ninja_mcp2025-05-280分享
github
一种服务器,能够实现 Binary Ninja 的反向工程功能与 LLM 辅助的无缝集成,使像 Claude 这样的 AI 工具可以实时与二进制分析功能进行交互。
By fosdickio
2025-05-280
github
详情内容

Binary Ninja MCP

本仓库包含一个Binary Ninja插件、MCP服务器和桥接组件,能够实现Binary Ninja功能与您喜爱的LLM客户端的无缝集成。

功能特性

  • Binary Ninja与MCP客户端之间的无缝实时集成
  • 通过AI辅助增强逆向工程工作流程
  • 主要支持Claude Desktop作为MCP客户端,但可扩展至其他集成方案

使用示例

生成二进制分析报告

二进制分析报告生成

函数重命名

函数重命名演示

组件说明

本仓库包含两个独立组件:

  1. Binary Ninja插件:提供一个MCP服务器,通过HTTP端点暴露Binary Ninja的功能。该服务器可与任何实现MCP协议的客户端配合使用。
  2. MCP桥接组件:将您喜爱的MCP客户端连接到Binary Ninja MCP服务器。虽然Claude Desktop是主要集成路径,但MCP服务器也可与其他客户端配合使用。

支持的集成功能

下表详细列出了当前支持的Binary Ninja集成功能:

功能 描述
get_binary_status 获取已加载二进制文件的当前状态
list_classes 列出程序中的所有命名空间/类名
list_data_items 列出定义的数据标签及其值
list_exports 列出导出的函数/符号
list_imports 列出程序中导入的符号
list_methods 列出程序中的所有函数名
list_namespaces 列出程序中的所有非全局命名空间
list_segments 列出程序中的所有内存段
rename_data 重命名指定地址的数据标签
rename_function 将函数从当前名称重命名为用户定义的新名称
search_functions_by_name 搜索名称包含给定子字符串的函数
decompile_function 按名称反编译特定函数并返回反编译的C代码
set_comment 在指定地址设置注释
set_function_comment 为函数设置注释
get_comment 获取指定地址的注释
get_function_comment 获取函数的注释
delete_comment 删除指定地址的注释
delete_function_comment 删除函数的注释
get_assembly_function 按名称或地址获取函数的汇编表示
function_at 获取地址所属的函数名称
code_references 获取调用给定函数的函数名称和地址
get_user_defined_type 获取用户定义类型(结构体、枚举、typedef、联合体)的定义
rename_variable 重命名给定函数中的变量
retype_variable 更改给定函数中变量的类型
define_types 从C字符串类型定义添加类型定义
edit_function_signature 使用类型字符串编辑给定函数的签名

前提条件

安装指南

Binary Ninja插件

您可以通过Binary Ninja的插件管理器安装该插件(插件 > 管理插件)。

插件管理器列表

如需手动配置插件,可将此仓库复制到Binary Ninja的插件文件夹中。

Claude Desktop桥接(可选)

仅在使用Claude Desktop作为MCP客户端时需要此组件。请先确保已配置好虚拟环境:

git clone git@github.com:fosdickio/binary_ninja_mcp.git
cd binary_ninja_mcp

python3 -m venv .venv
source .venv/bin/activate   # macOS/Linux系统

pip install -r bridge/requirements.txt

Mac自动化配置

在Mac系统上,可通过运行以下命令自动化设置:

./scripts/setup_claude_desktop.py

其他系统手动配置

在其他操作系统或需要手动配置Claude Desktop集成时:

  1. 导航至设置 > 开发者 > 编辑配置
  2. 添加以下配置:
{
  "mcpServers": {
    "binary_ninja_mcp": {
      "command": "/ABSOLUTE/PATH/TO/binary_ninja_mcp/.venv/bin/python",
      "args": [
        "/ABSOLUTE/PATH/TO/binary_ninja_mcp/bridge/binja_mcp_bridge.py"
      ]
    }
  }
}

注意:请将/ABSOLUTE/PATH/TO替换为您项目目录的实际绝对路径。必须使用虚拟环境的Python解释器才能访问已安装的依赖项。

使用方法

Claude Desktop

  1. 打开Binary Ninja并安装Binary Ninja MCP插件
  2. 重启Binary Ninja后打开一个二进制文件
  3. 启动MCP服务器(插件 > MCP服务器 > 启动MCP服务器
  4. 启动Claude Desktop

打开Claude Desktop后,集成将自动可用。

Claude集成

现在您可以开始向Claude询问当前打开的二进制文件相关信息。示例提示:

  • "为当前二进制文件生成分析报告"
  • "将当前二进制文件中的函数X重命名为Y"
  • "列出当前二进制文件中的所有函数"
  • "已加载二进制文件的状态是什么?"

其他MCP客户端集成

通过实现适当的集成层,该桥接组件可与其他MCP客户端配合使用。

开发指南

项目结构如下:

binary_ninja_mcp/
├── bridge/                      # MCP客户端集成
├── plugin/                      # Binary Ninja插件
├── scripts/
│   └── setup_claude_desktop.py  # Claude Desktop设置脚本

贡献指南

欢迎贡献!请随时提交拉取请求。

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档