二进制忍者MCP

fishke22/binary_ninja_mcp
0 Stars 33 次浏览 kittyo5o2 更新于 2026-08-23

此仓库包含一个Binary Ninja插件、MCP服务器和桥接器,能够将Binary Ninja的功能与您喜欢的LLM客户端无缝集成。它支持实时交互,并通过AI辅助增强逆向工程工作流程,主要支持Claude Desktop作为MCP客户端,但也可以扩展到其他集成。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

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的插件管理器安装该插件(Plugins > Manage Plugins)。

插件管理器列表

若要手动配置插件,可以将此仓库复制到Binary Ninja插件文件夹中。

Claude Desktop桥接器(可选)

仅当您希望使用Claude Desktop作为MCP客户端时才需要此步骤。请确保首先配置好虚拟环境:

bash
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 上,您可以通过运行以下命令来自动化设置:

bash
./scripts/setup_claude_desktop.py

手动配置

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

  1. 导航到 设置 > 开发者 > 编辑配置
  2. 添加以下配置:

json
{
"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 Integration

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

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

其他 MCP 客户端集成

通过实现相应的集成层,该桥接可以与其他 MCP 客户端一起使用。

开发

项目结构如下所示:

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

贡献

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

相关 MCP 服务