二进制忍者MCP
此仓库包含一个Binary Ninja插件、MCP服务器和桥接器,能够将Binary Ninja的功能与您喜欢的LLM客户端无缝集成。它支持实时交互,并通过AI辅助增强逆向工程工作流程,主要支持Claude Desktop作为MCP客户端,但也可以扩展到其他集成。
服务介绍
Binary Ninja MCP
此仓库包含一个Binary Ninja插件、MCP服务器和桥接器,可实现Binary Ninja功能与您喜欢的LLM客户端之间的无缝集成。
功能
- Binary Ninja与MCP客户端之间无缝、实时的集成
- 增强的反向工程工作流,辅以AI支持
- 主要支持Claude Desktop作为MCP客户端,但也可扩展至其他集成
示例
生成二进制分析报告

重命名函数

组件
此仓库包含两个独立的组件:
- 一个Binary Ninja插件,提供了一个MCP服务器,通过HTTP端点暴露Binary Ninja的功能。这可以与任何实现了MCP协议的客户端一起使用。
- 一个单独的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
- Python 3.12+
- Claude Desktop(或您的首选集成)
安装
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 集成时:
- 导航到
设置 > 开发者 > 编辑配置 - 添加以下配置:
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
- 打开 Binary Ninja 并安装
Binary Ninja MCP插件 - 重启 Binary Ninja 然后打开一个二进制文件
- 启动 MCP 服务器 (
插件 > MCP 服务器 > 启动 MCP 服务器) - 启动 Claude Desktop
在打开 Claude Desktop 后,集成会自动可用。

现在您可以开始向 Claude 提问有关当前打开的二进制文件的问题。示例提示:
- "为当前二进制文件生成分析报告。"
- "将当前二进制文件中的函数 X 重命名为 Y。"
- "列出当前二进制文件中的所有函数。"
- "加载的二进制文件的状态是什么?"
其他 MCP 客户端集成
通过实现相应的集成层,该桥接可以与其他 MCP 客户端一起使用。
开发
项目结构如下所示:
binary_ninja_mcp/
├── bridge/ # MCP 客户端集成
├── plugin/ # Binary Ninja 插件
├── scripts/
│ └── setup_claude_desktop.py # Claude Desktop 的设置脚本
贡献
欢迎贡献代码。请随时提交拉取请求。