使用说明
另一款适用于Binary Ninja的MCP服务器
二进制Ninja的MCP(模型上下文协议)服务器
英语| 中文
演示
这 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]...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
- 命令:
- SSE端点 (推荐):URL:
添加 --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
