另一款适用于Binary Ninja的MCP服务器
二进制Ninja的MCP(模型上下文协议)服务器
](https://www.python.org/downloads/) ](https://github.com/MCPPhalanx/binaryninja-mcp/discussions)
英语| 中文
演示
这 tests/binary/beleaf.elf 取自 CSAW'19:贝莱夫-噩梦. 您还可以从上面的链接中找到完整的文章!
…但为什么 _另一个_?
请参阅: 与现有插件的主要区别
安装
服务器安装程序
有两种方法可以运行MCP服务器:
- 二进制Ninja UI插件:
- 通过Binary Ninja的插件管理器安装插件 - 加载第一个文件时,MCP服务器将自动启动。 - 自动启动可通过以下方式配置 Settings - MCP Server - Auto Start - 监听端口可通过以下方式配置 Settings - MCP Server - Server port number - 所有打开的文件都暴露在单独的资源中,请参阅 可用资源 下节
- 二进制忍者无头模式:
uvx binaryninja-mcp install-api # only run once
uvx binaryninja-mcp server [filename]...- filename 可以是任何二进制文件或BNDB,就像在UI模式下一样,全部打开 文件可供MCP客户端使用。 - 服务器在默认端口7000上运行 - 使用 --port 标记以指定其他端口
MCP客户端设置
- 克劳德桌面(stdio中继客户端):配置客户端以通过连接
使用内置中继的stdio传输。
{
"mcpServers": {
"binaryninja": {
"command": "uvx",
"args": ["binaryninja-mcp", "client"]
}
}
}- 樱桃工作室:
- SSE端点 (推荐):URL: http://localhost:7000/sse - stdio客户端: - 命令: uvx - 论据:
binaryninja-mcp
client添加 --port 12345 如果您想运行,请同时运行服务器和客户端命令行 MCP服务器的端口不是默认端口。
MCP客户端可用工具
MCP服务器提供以下工具:
rename_symbol:重命名函数或数据变量pseudo_c:获取指定函数的伪C代码pseudo_rust:获取指定函数的伪Rust代码high_level_il:获取指定函数的高级ILmedium_level_il:获取指定函数的中级ILdisassembly:获取函数或指定范围的拆卸update_analysis_and_wait:更新二进制文件的分析并等待
完成
get_triage_summary:从BinaryNinja Triage视图获取基本信息get_imports:获取导入符号的字典get_exports:获取导出符号的字典get_segments:获取内存段列表get_sections:获取二进制部分列表get_strings:获取二进制文件中找到的字符串列表get_functions:获取函数列表get_data_variables:获取数据变量列表
MCP客户端的可用资源
MCP资源可以通过URI以以下格式访问: binaryninja://{filename}/{resource_type}
服务器为每个二进制文件提供以下资源类型:
triage_summary:BinaryNinja Triage视图的基本信息imports:导入符号/函数词典exports:导出符号/函数词典segments:内存段列表sections:二进制部分列表strings:二进制文件中找到的字符串列表functions:功能列表data_variables:数据变量列表
发展
紫外线 是推荐的包管理工具 对于这个项目。
将目录克隆到二进制Ninja插件目录
git clone https://github.com/MCPPhalanx/binaryninja-mcp.git "${env:APPDATA}\Binary Ninja\plugins\MCPPhalanx_binaryninja_mcp"设置Python环境
二进制Ninjaneneneba API必须手动安装到virtualenv中。
uv venv
uv sync --dev
# install binaryninja API
binaryninja-mcp install-api
# check API is correctly installed
uv run python -c 'import binaryninja as bn; assert bn._init_plugins() is None; assert bn.core_ui_enabled() is not None; print("BN API check PASSED!!")'设置MCP客户端以进行开发
对于像Claude Desktop这样具有stdio传输的MCP客户端,更改工作方式 目录到开发文件夹。
{
"mcpServers": {
"binaryninja": {
"command": "uv",
"args": [
"--directory",
"C:/path/to/binaryninja-mcp",
"run",
"binaryninja-mcp",
"client"
]
}
}
}启用SSE的MCP客户端可以使用以下方式连接: http://localhost:7000/sse
构建
uv build测试
pytest
# To update test snapshots:
pytest --snapshot-update版本颠簸
PyPI包版本是从Binary Ninja的 plugin.json (使用package.json格式),保持版本一致性 在BN插件和PyPI包之间。
# bump alpha version
uvx hatch version a
# bump release version
uvx hatch version minor,rc
uvx hatch version release请参阅: 版本控制-Hatch
发布
uv publish
