Another™ MCP Server for Binary Ninja

Another™ MCP Server for Binary Ninja

site icon
2025.04.08 20
Python逆向工程二进制分析安全研究开发效率
binaryninja-mcp 是一个为 Binary Ninja 设计的 MCP(Model Context Protocol)服务器,旨在提供与 Binary Ninja 交互的接口和工具。它支持通过 MCP 协议访问 Binary Ninja 的分析功能,包括符号重命名、伪代码生成、反汇编等。适用于逆向工程、二进制分析和安全研究等场景。
View on GitHub

Overview

基本能力

产品定位

binaryninja-mcp 是一个为 Binary Ninja 设计的 MCP 服务器,提供与 Binary Ninja 交互的接口和工具,支持通过 MCP 协议访问 Binary Ninja 的分析功能。

核心功能

  • 符号重命名(rename_symbol)
  • 伪代码生成(pseudo_c, pseudo_rust)
  • 高级和中级中间语言生成(high_level_il, medium_level_il)
  • 反汇编(disassembly)
  • 分析更新(update_analysis_and_wait)
  • 获取二进制文件的基本信息(get_triage_summary)
  • 获取导入/导出符号(get_imports, get_exports)
  • 获取内存段和二进制节(get_segments, get_sections)
  • 获取字符串列表(get_strings)
  • 获取函数和数据变量列表(get_functions, get_data_variables)

适用场景

  • 逆向工程
  • 二进制分析
  • 安全研究

工具列表

  • rename_symbol: 重命名函数或数据变量
  • pseudo_c: 获取指定函数的伪 C 代码
  • pseudo_rust: 获取指定函数的伪 Rust 代码
  • high_level_il: 获取指定函数的高级中间语言
  • medium_level_il: 获取指定函数的中级中间语言
  • disassembly: 获取函数或指定范围的反汇编
  • 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 客户端?
  • 对于 Claude Desktop,配置 stdio 传输使用内置中继。
  • 对于 Cherry Studio,可以使用 SSE 端点或 stdio 客户端。
  • 如何更改服务器端口?
  • 使用 --port 标志指定不同的端口。

使用教程

使用依赖

  • 需要安装 Binary Ninja 和 Python 环境。

安装教程

  1. Binary Ninja UI 插件安装
  2. 通过 Binary Ninja 的插件管理器安装插件。
  3. MCP 服务器将在首次加载文件时自动启动。

  4. Binary Ninja 无头模式安装bash uvx binaryninja-mcp install-api # 仅需运行一次 uvx binaryninja-mcp server <filename> [filename]...

  5. 使用 --port 标志指定不同的端口。

调试方式

  • 检查 API 是否正确安装: bash uv run python -c 'import binaryninja as bn; print(f"ui_enabled={bn.core_ui_enabled()}")'
  • 运行测试: bash pytest # 更新测试快照: pytest --snapshot-update

许可证

该项目遵循 Apache-2.0 开源许可条款,请参阅 Apache-2.0 了解完整条款。