Binassistmcp

Binassistmcp

🚀 BinAssistMCP

BinAssistMCP 是一个强大的工具,它在 Binary Ninja 和 Claude 等大语言模型(LLMs)之间架起了一座桥梁。通过模型上下文协议(MCP),它提供了全面的逆向工程工具,利用服务器发送事件(SSE)和标准输入输出(STDIO)传输方式,将 Binary Ninja 的高级功能开放出来,实现了 AI 辅助的二进制分析。

🚀 快速开始

BinAssistMCP 是 Binary Ninja 和大语言模型(如 Claude)之间的强大桥梁,通过模型上下文协议(MCP)提供全面的逆向工程工具。它通过服务器发送事件(SSE)和标准输入输出(STDIO)传输方式,将 Binary Ninja 的高级功能暴露出来,实现 AI 辅助的二进制分析。

✨ 主要特性

  • 双传输支持:同时支持 SSE(基于 Web)和 STDIO(命令行)传输方式。
  • 40 多种分析工具:完整的 Binary Ninja API 包装器,具备高级功能。
  • 多二进制会话:可同时分析多个二进制文件,并进行智能上下文管理。
  • 智能符号管理:提供高级的函数搜索、重命名和类型管理功能。
  • 自动集成:作为 Binary Ninja 插件,可自动启动,无缝集成。
  • 灵活配置:可通过 Binary Ninja 的界面进行全面的设置管理。
  • 支持 AI:针对大语言模型集成进行了优化,工具响应结构化。

📦 安装指南

前提条件

  • Binary Ninja:版本 4000 或更高。
  • Python:3.8+(通常随 Binary Ninja 捆绑)。
  • 平台:Windows、macOS 或 Linux。

选项 1:使用 Binary Ninja 插件管理器(推荐)

  1. 打开 Binary Ninja。
  2. 导航至 工具管理插件
  3. 搜索 "BinAssistMCP"。
  4. 点击 安装
  5. 重启 Binary Ninja。

选项 2:手动安装

步骤 1:下载并解压

git clone https://github.com/jtang613/BinAssistMCP.git
cd BinAssistMCP

步骤 2:安装依赖项

# 安装 Python 依赖项
pip install -r requirements.txt

# 或者单独安装:
pip install anyio>=4.0.0 hypercorn>=0.16.0 mcp>=1.0.0 trio>=0.27.0 pydantic>=2.0.0 pydantic-settings>=2.0.0 click>=8.0.0

步骤 3:复制到插件目录

Windows

copy BinAssistMCP "%APPDATA%\Binary Ninja\plugins\"

macOS

cp -r BinAssistMCP ~/Library/Application\ Support/Binary\ Ninja/plugins/

Linux

cp -r BinAssistMCP ~/.binaryninja/plugins/

步骤 4:验证安装

  1. 重启 Binary Ninja。
  2. 打开任意二进制文件。
  3. 检查 工具 菜单中是否有 "BinAssistMCP" 子菜单。
  4. 在日志面板中查看启动消息。

配置

基本设置

  1. 打开 Binary Ninja 设置(编辑首选项)。
  2. 导航至 binassistmcp 部分。
  3. 配置服务器设置:
    • 主机localhost(默认)
    • 端口9090(默认)
    • 传输方式both(SSE + STDIO)

高级配置

# 环境变量(可选)
export BINASSISTMCP_SERVER__HOST=localhost
export BINASSISTMCP_SERVER__PORT=9090
export BINASSISTMCP_SERVER__TRANSPORT=both
export BINASSISTMCP_BINARY__MAX_BINARIES=10

💻 使用示例

启动服务器

通过 Binary Ninja 菜单

  1. 工具BinAssistMCP启动服务器
  2. 在日志面板中查看启动确认信息。
  3. 记录服务器 URL(例如,http://localhost:9090)。

自动启动(默认)

  • 当 Binary Ninja 加载文件时,服务器会自动启动。
  • 可通过设置 binassistmcp.plugin.auto_startup 进行配置。

与 Claude Desktop 连接

在你的 Claude Desktop MCP 配置中添加以下内容:

{
"mcpServers": {
"binassist": {
"command": "python",
"args": ["/path/to/BinAssistMCP"],
"env": {
"BINASSISTMCP_SERVER__TRANSPORT": "stdio"
}
}
}
}

使用 SSE 传输方式

将基于 Web 的 MCP 客户端连接到:

http://localhost:9090/sse

集成示例

基本函数分析

向 Claude 提问:“分析已加载二进制文件中的 main 函数,并解释其功能”

Claude 将使用以下工具:
- get_functions() 查找 main 函数
- decompile_function() 获取可读代码
- get_function_pseudo_c() 获取 C 语言表示
- analyze_function() 进行全面分析

漏洞研究

向 Claude 提问:“查找所有处理用户输入的函数,并检查是否存在缓冲区溢出”

Claude 将使用:
- search_functions_advanced() 查找输入处理函数
- get_cross_references() 跟踪数据流
- get_variables() 分析缓冲区使用情况
- set_comment() 记录发现

📚 详细文档

BinAssistMCP 提供了 40 多种专门的工具,这些工具按功能类别进行了组织:

二进制管理

  • list_binaries - 列出所有已加载的二进制文件
  • get_binary_status - 检查分析状态和元数据
  • update_analysis_and_wait - 强制更新分析并等待完成

代码分析与反编译

  • decompile_function - 生成高级反编译代码
  • get_function_pseudo_c - 提取伪 C 语言表示
  • get_function_high_level_il - 访问高级中间语言
  • get_function_medium_level_il - 访问中级中间语言
  • get_disassembly - 获取带注释的汇编代码

信息检索

  • get_functions - 列出所有带元数据的函数
  • search_functions_by_name - 按名称模式查找函数
  • get_functions_advanced - 高级过滤(大小、复杂度、参数)
  • search_functions_advanced - 多目标搜索(名称、注释、调用、变量)
  • get_function_statistics - 全面的二进制统计信息
  • get_imports - 按模块分组的导入表分析
  • get_exports - 带符号信息的导出表
  • get_strings - 带上下文的字符串提取
  • get_segments - 内存布局分析
  • get_sections - 二进制节信息

符号与命名管理

  • rename_symbol - 重命名函数和数据变量
  • get_cross_references - 查找符号的所有引用
  • analyze_function - 全面的函数分析
  • get_call_graph - 调用关系映射

文档与注释

  • set_comment - 在特定地址添加注释
  • get_comment - 获取地址处的注释
  • get_all_comments - 导出所有带上下文的注释
  • remove_comment - 删除现有注释
  • set_function_comment - 添加函数级文档

变量管理

  • create_variable - 在函数中定义局部变量
  • get_variables - 列出函数参数和局部变量
  • rename_variable - 重命名变量以提高清晰度
  • set_variable_type - 更新变量类型信息

类型系统管理

  • create_type - 定义自定义类型和结构
  • get_types - 列出所有用户定义的类型
  • create_enum - 创建枚举类型
  • create_typedef - 创建类型别名
  • get_type_info - 详细的类型信息
  • get_classes - 列出类和结构
  • create_class - 定义新的类/结构
  • add_class_member - 向现有类型添加成员

数据分析

  • create_data_var - 在地址处定义数据变量
  • get_data_vars - 列出所有已定义的数据变量
  • get_data_at_address - 通过类型推断分析原始数据

导航与上下文

  • get_current_address - 获取当前光标位置
  • get_current_function - 识别当前地址处的函数
  • get_namespaces - 命名空间和符号组织

高级分析

  • get_triage_summary - 完整的二进制概述
  • get_function_statistics - 所有函数的统计分析

每个工具都设计为与 AI 工作流程无缝集成,提供大语言模型可以轻松解释和处理的结构化响应。

🔧 技术细节

暂未发现符合要求(具体的技术说明大于 50 字)的技术细节内容,故跳过该章节。

📄 许可证

本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。

故障排除

常见问题

  • 服务器无法启动
    • 检查 Binary Ninja 日志面板中的错误消息。
    • 验证所有依赖项是否已安装。
    • 确保端口 9090 未被占用。
  • Binary Ninja 崩溃
    • 检查 Python 环境兼容性。
    • 尝试减少 max_binaries 设置。
    • 使用单个二进制文件重启。
  • 工具返回错误
    • 确保二进制分析已完成。
    • 检查 Binary Ninja 文件是否仍处于打开状态。
    • 验证函数/地址是否存在。

支持

  • 问题反馈:在 GitHub Issues 上报告 bug。
  • Binary Ninja:查阅官方 Binary Ninja 文档。

贡献

  1. 分叉仓库。
  2. 创建功能分支。
  3. 按照现有代码风格进行更改。
  4. 使用多种二进制类型进行测试。
  5. 提交拉取请求。
  • 0 关注
  • 0 收藏,39 浏览
  • system 提出于 2025-09-30 01:30

相似服务问题

相关AI产品