使用说明

项目简介

GhidraMCP 是一个 Model Context Protocol (MCP) 服务器,旨在桥接 Ghidra 软件逆向工程平台与大型语言模型 (LLM)。它作为一个 Ghidra 插件运行,并提供一系列工具,使 LLM 能够自动化执行二进制文件的分析任务,例如反编译代码、重命名函数和数据、以及列出程序结构信息。通过 GhidraMCP,LLM 可以更深入地理解二进制代码,从而在漏洞分析、恶意软件检测和软件理解等领域发挥更大作用。

主要功能点

  • 二进制文件反编译和分析: 利用 Ghidra 的反编译器,将二进制代码转换为可读的 C 代码,并进行深层分析。
  • 自动化代码理解: 自动重命名函数和数据标签,帮助 LLM 理解代码的功能和逻辑。
  • 程序结构信息提取: 列出程序中的方法、类、导入导出符号等关键信息,为 LLM 提供程序概览和上下文。
  • 基于 MCP 协议的工具接口: 通过标准化的 MCP 协议与 LLM 客户端通信,易于集成到各种 LLM 应用中。

安装步骤

  1. 安装 Ghidra: 确保已安装 Ghidra 软件逆向工程平台
  2. 下载 GhidraMCP 插件:GitHub Release 页面 下载最新版本的 'GhidraMCP-1-0.zip' 插件包。
  3. 安装 Ghidra 插件:
    • 启动 Ghidra。
    • 选择 'File' -> 'Install Extensions'。
    • 点击 '+' 按钮,选择下载的 'GhidraMCP-1-0.zip' 文件。
    • 重启 Ghidra。
    • 在 'File' -> 'Configure' -> 'Developer' 中确认 'GhidraMCPPlugin' 插件已启用。
  4. 安装 Python 依赖 (如果需要): 虽然仓库中 'bridge_mcp_ghidra.py' 脚本使用了 'requests' 库,但根据仓库描述和代码,该 Python 脚本更多是作为 MCP 客户端桥接 Ghidra HTTP 服务和 MCP 客户端的角色。 实际的 MCP 服务器功能是由 Ghidra 插件 'GhidraMCPPlugin.java' 提供的,它是一个 Java 实现的 HTTP 服务器,不需要额外的 Python 依赖。 如果您需要运行 'bridge_mcp_ghidra.py' 作为独立的 MCP 客户端进行测试,则可能需要安装 'requests' 库。

服务器配置

GhidraMCP 服务器 (Ghidra 插件) 启动后,默认监听 'http://localhost:8080' 地址。 要配置 MCP 客户端连接 GhidraMCP 服务器,您需要指定 MCP 服务器的启动命令和参数。 以下是针对不同 MCP 客户端的配置示例:

针对 Claude Desktop 客户端:

编辑 Claude Desktop 的配置文件 'claude_desktop_config.json',通常位于 '/Users/YOUR_USER/Library/Application Support/Claude/claude_desktop_config.json' (macOS) 或类似路径。 在 'mcpServers' 字段下添加 GhidraMCP 服务器配置:

{
  "mcpServers": {
    "ghidra": {
      "command": "python",
      "args": [
        "/path/to/GhidraMCP/bridge_mcp_ghidra.py"  //  请替换为 bridge_mcp_ghidra.py 脚本的绝对路径
      ]
    }
  }
}

配置说明:

  • '"ghidra"': 服务器名称,可以自定义,用于在客户端中标识 GhidraMCP 服务器。
  • '"command": "python"': 指定启动服务器的命令为 'python'。
  • '"args": ["/path/to/GhidraMCP/bridge_mcp_ghidra.py"]': 指定传递给 'python' 命令的参数,这里是 'bridge_mcp_ghidra.py' 脚本的绝对路径。 请务必将 '/path/to/GhidraMCP/bridge_mcp_ghidra.py' 替换为您实际存放 'bridge_mcp_ghidra.py' 文件的路径。 虽然 'bridge_mcp_ghidra.py' 代码中使用了 'FastMCP',但根据仓库结构,它更像是作为连接 Ghidra HTTP 服务和 MCP 客户端的桥梁,实际的 MCP 服务器功能由 Ghidra 插件提供。 如果您不使用 'bridge_mcp_ghidra.py' 作为桥梁,而是希望 MCP 客户端直接与 Ghidra 插件通信,可能需要修改客户端配置以直接访问 'http://localhost:8080',但这可能需要更深入的 MCP 客户端定制。 为了简化配置,建议您先尝试使用仓库提供的 'bridge_mcp_ghidra.py' 桥梁方案。

针对 5ire 客户端:

在 5ire 客户端中,选择 'Tools' -> 'New',并进行如下配置:

  1. 'Tool Key': 'ghidra' (与 Claude Desktop 配置中的服务器名称保持一致)
  2. 'Name': 'GhidraMCP' (服务器显示名称,可自定义)
  3. 'Command': 'python /path/to/GhidraMCP/bridge_mcp_ghidra.py' 请替换为 bridge_mcp_ghidra.py 脚本的绝对路径

基本使用方法

  1. 启动 Ghidra 和 GhidraMCP 插件: 打开 Ghidra 软件,GhidraMCP 插件会在 Ghidra 启动时自动运行并启动 HTTP 服务器。
  2. 加载二进制文件到 Ghidra: 在 Ghidra 中打开您想要分析的二进制文件。
  3. 配置和启动 MCP 客户端: 根据您使用的 MCP 客户端 (如 Claude Desktop, 5ire),按照上述 "服务器配置" 步骤配置 GhidraMCP 服务器连接,并启动 MCP 客户端。
  4. 在 MCP 客户端中使用 GhidraMCP 工具: 在 MCP 客户端中,您应该能够看到 GhidraMCP 提供的工具,例如列出方法、反编译函数、重命名函数等。 您可以指示 LLM 调用这些工具,例如: "使用 GhidraMCP 工具反编译函数 main"。 LLM 将调用相应的 GhidraMCP 工具,并将结果返回给您。

注意: GhidraMCP 通过 HTTP 协议与 'bridge_mcp_ghidra.py' (如果使用) 和 MCP 客户端通信,确保您的防火墙允许这些连接。

信息

分类

开发者工具