使用说明
项目简介
Binary Ninja MCP Server 是一个 MCP 服务器的实现,它基于 Binary Ninja 这一强大的逆向工程平台,通过 MCP 协议将 Binary Ninja 的二进制分析能力暴露出来。该服务器允许 LLM 客户端通过标准化的 MCP 接口,获取二进制文件的各种信息(如文件元数据、函数、字符串、反汇编代码等),并调用 Binary Ninja 的分析工具(如重命名符号、获取伪代码等)。这使得 LLM 能够理解和分析二进制程序,从而实现更高级的自动化分析任务,例如漏洞分析、恶意代码检测、逆向工程辅助等。
主要功能点
- 资源 (Resources) 访问:
- 提供二进制文件的 triage 摘要信息 (Triage Summary)。
- 获取二进制文件的导入表 (Imports)、导出表 (Exports)。
- 列出二进制文件的段 (Segments) 和节 (Sections)。
- 提取二进制文件中的字符串 (Strings)。
- 获取函数 (Functions) 列表及其基本信息。
- 获取数据变量 (Data Variables) 列表及其信息。
- 工具 (Tools) 调用:
- 'rename_symbol': 重命名函数或数据变量的符号。
- 'pseudo_c': 获取函数的伪 C 代码。
- 'pseudo_rust': 获取函数的伪 Rust 代码 (如果 Binary Ninja 支持)。
- 'high_level_il': 获取函数的高级中间语言 (HLIL)。
- 'medium_level_il': 获取函数的中级中间语言 (MLIL)。
- 'disassembly': 获取函数或指定地址范围的反汇编代码。
- 'update_analysis_and_wait': 强制 Binary Ninja 重新分析二进制文件并等待完成。
安装步骤
- 安装 Binary Ninja: 确保您已安装 Binary Ninja 软件,并且拥有有效的许可证。
- 安装插件:
- 打开 Binary Ninja。
- 点击菜单 'Plugins -> Manage Plugins'。
- 点击 '[+]' 按钮,选择 'binaryninja-mcp' 仓库的根目录作为插件目录添加。
- 插件将会被自动加载。您可以在 'Plugins' 菜单下看到 'MCPServer' 菜单项。
服务器配置
MCP 客户端需要配置以下信息以连接到 Binary Ninja MCP Server。以下提供两种启动服务器的方式的配置示例:
配置示例 1: 使用 Binary Ninja 插件启动 (推荐)
这种方式最简单,服务器集成在 Binary Ninja 内部,无需额外命令行操作。
{ "serverName": "BinaryNinjaMCP", "command": ["binaryninja"], "args": [], "capabilities": [ "resources", "tools" ] }
参数注释:
- 'serverName': MCP 服务器的名称,可以自定义。
- 'command': 启动服务器的命令,这里使用 'binaryninja',表示通过 Binary Ninja 插件启动。实际由插件在后台运行,客户端无需直接执行命令。
- 'args': 启动参数,这里为空数组,因为插件在 Binary Ninja 内部运行,不需要额外的命令行参数。
- 'capabilities': 声明服务器提供的能力,包括 'resources' 和 'tools'。
配置示例 2: 使用命令行 CLI 工具启动
这种方式需要在命令行中手动启动服务器,适用于希望独立运行服务器的场景。
首先,确保安装了项目依赖 (虽然仓库中没有明确 requirements.txt,但根据代码推测可能需要 'uvicorn', 'anyio', 'click', 'starlette', 'mcp' 等 Python 包,建议使用 'pip install -r requirements.txt' 安装,如果仓库提供了 requirements.txt 的话。如果仓库没有提供,可以尝试手动安装这些包)。
假设您已经将仓库克隆到本地,并且位于 '/path/to/binaryninja-mcp' 目录。
{ "serverName": "BinaryNinjaMCP-CLI", "command": ["python"], "args": ["/path/to/binaryninja-mcp/src/binaryninja_mcp/cli.py", "server", "{binary_file_path}"], "capabilities": [ "resources", "tools" ] }
参数注释:
-
'serverName': MCP 服务器的名称,可以自定义。
-
'command': 启动服务器的命令,这里使用 'python'。
-
'args': 启动参数,为一个字符串数组,依次为:
- '/path/to/binaryninja-mcp/src/binaryninja_mcp/cli.py': 'cli.py' 脚本的绝对路径。
- '"server"': 指定 'cli.py' 运行 'server' 子命令。
- '"{binary_file_path}"': 占位符,需要替换为实际要分析的二进制文件路径。 MCP 客户端通常会提供机制让用户指定或动态替换这个占位符。
-
'capabilities': 声明服务器提供的能力,包括 'resources' 和 'tools'。
注意: '/path/to/binaryninja-mcp' 和 '"{binary_file_path}"' 需要根据实际情况替换为正确的路径。
基本使用方法
-
启动服务器:
- 插件方式: 打开 Binary Ninja,加载要分析的二进制文件。如果启用了自动启动,服务器应该会自动启动。否则,可以通过 'Plugins -> MCPServer -> Start/Stop Server' 菜单手动启动。
- CLI 方式: 在命令行中,导航到仓库目录,并执行类似 'python src/binaryninja_mcp/cli.py server <二进制文件路径>' 的命令来启动服务器。
-
配置 MCP 客户端: 根据您使用的 MCP 客户端的文档,配置服务器连接信息,选择上述 服务器配置 中适合您的启动方式的配置信息填入客户端。
-
使用 LLM 进行交互: 通过 MCP 客户端向 Binary Ninja MCP Server 发送 MCP 请求,例如:
- 请求资源列表 ('listResources'),查看可用的资源 URI。
- 请求读取特定资源 ('readResource'),例如获取 "triage_summary" 或 "functions" 等信息。
- 调用工具 ('callTool'),例如调用 "pseudo_c" 工具获取函数的伪代码。
-
查看结果: MCP 客户端会接收服务器返回的 JSON-RPC 响应,并展示资源内容或工具执行结果。
通过以上步骤,您可以利用 Binary Ninja MCP Server 将 Binary Ninja 的强大分析能力集成到 LLM 工作流中,实现更智能化的二进制分析应用。
信息
分类
开发者工具