本仓库包含一个Binary Ninja插件、MCP服务器和桥接组件,能够实现Binary Ninja功能与您喜爱的LLM客户端的无缝集成。
本仓库包含两个独立组件:
下表详细列出了当前支持的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的插件文件夹中。
仅在使用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系统上,可通过运行以下命令自动化设置:
./scripts/setup_claude_desktop.py
在其他操作系统或需要手动配置Claude Desktop集成时:
设置 > 开发者 > 编辑配置
{
"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解释器才能访问已安装的依赖项。
Binary Ninja MCP
插件插件 > MCP服务器 > 启动MCP服务器
)打开Claude Desktop后,集成将自动可用。
现在您可以开始向Claude询问当前打开的二进制文件相关信息。示例提示:
通过实现适当的集成层,该桥接组件可与其他MCP客户端配合使用。
项目结构如下:
binary_ninja_mcp/ ├── bridge/ # MCP客户端集成 ├── plugin/ # Binary Ninja插件 ├── scripts/ │ └── setup_claude_desktop.py # Claude Desktop设置脚本
欢迎贡献!请随时提交拉取请求。