使用说明

项目简介

本项目 'Ghidra MCP Server Plugin' 是一个Ghidra插件,它集成了 MCP 服务器功能。该插件允许你通过 MCP 协议,将 Ghidra 的程序分析能力(如反编译、符号重命名、信息提取等)以标准化的方式提供给支持 MCP 协议的 LLM 客户端。这使得 LLM 能够利用 Ghidra 强大的逆向工程能力进行更深入的程序理解和分析。

主要功能点

  • 程序反编译: 允许 LLM 客户端请求反编译指定地址的函数。
  • 符号重命名: 支持 LLM 客户端重命名函数和数据符号,方便程序理解。
  • 信息提取: 提供接口列出程序中的函数、数据、导入和导出符号,为 LLM 提供程序上下文信息。
  • JNI 桥接: 使用 JNI 技术连接 Ghidra 和 Zig 编写的 MCP 服务器核心,保证性能和类型安全。
  • Go 客户端库: 提供 Go 语言版本的 MCP 客户端库,方便开发者快速集成。
  • 错误处理: 包含全面的错误处理机制,方便调试和问题定位。

安装步骤

  1. 克隆仓库

    git clone https://github.com/streamerd/ghidra-mcp-zig.git
    cd ghidra-mcp-zig
  2. 配置环境

    • 创建 '.env' 文件,并根据你的 Ghidra 和 JDK 路径进行配置:
      GHIDRA_PATH=/path/to/ghidra_11.3.1_PUBLIC/Ghidra/Features/Base/lib/Base.jar
      JAVA_HOME=/path/to/your/jdk
    • 确保已安装 Prerequisites 中列出的所有依赖。
  3. 构建插件

    make build-plugin
  4. 安装插件

    • 将构建好的插件库文件 'zig-out/lib/libghidra-mcp-zig.dylib' (或 '.so', '.dll',取决于你的系统) 复制到 Ghidra 的插件目录:
      cp zig-out/lib/libghidra-mcp-zig.dylib /path/to/ghidra/Extensions/Ghidra/ghidra-mcp-zig/
    • 注意: '/path/to/ghidra/Extensions/Ghidra/ghidra-mcp-zig/' 目录可能需要手动创建。
  5. 重启 Ghidra

服务器配置

MCP 客户端需要配置以下信息以连接到 'Ghidra MCP Server Plugin' 提供的 MCP 服务器。由于该服务器作为 Ghidra 插件运行,因此 启动命令是 Ghidra 软件本身

{
  "serverName": "GhidraMCP",
  "command": "/path/to/ghidraRun",  // Ghidra 启动脚本的路径,例如 'ghidraRun' 或 'ghidraRun.bat'
  "args": [],                       // 启动 Ghidra 的参数,通常为空
  "host": "127.0.0.1",              // MCP 服务器监听地址,默认为本地回环地址
  "port": 8080                      // MCP 服务器监听端口,默认为 8080 (实际端口需要查看插件运行日志或配置,此处为推测默认端口)
}

配置参数注释:

  • 'serverName': MCP 服务器的名称,可以自定义。
  • 'command': 重要: 这里填写 Ghidra 软件的启动脚本路径。MCP 服务器作为 Ghidra 插件运行,所以需要先启动 Ghidra 软件才能启动 MCP 服务器。请根据你的 Ghidra 安装路径,填写正确的启动脚本路径,例如 Linux/macOS 下可能是 '/path/to/ghidra/ghidraRun',Windows 下可能是 'C:\path\to\ghidra\ghidraRun.bat'。
  • 'args': 启动 Ghidra 软件时需要传递的命令行参数,通常情况下为空数组 '[]'。
  • 'host': MCP 服务器监听的网络地址,默认为 '127.0.0.1',表示只接受来自本机的连接。如果 MCP 客户端和 Ghidra 运行在同一台机器上,则无需修改。
  • 'port': MCP 服务器监听的端口号。请注意,此端口号为推测的默认端口 8080,实际端口可能需要在 Ghidra 插件的运行日志中查看,或者在插件的配置中进行设置。 如果需要修改端口,可能需要在 Ghidra 插件中进行配置(如果插件提供了配置选项)。

重要提示: 由于 'Ghidra MCP Server Plugin' 是作为 Ghidra 插件运行的,因此 必须先启动 Ghidra 软件并加载该插件,MCP 服务器才会启动并开始监听端口。 MCP 客户端需要先确保 Ghidra 软件和插件都已成功启动,才能连接到 MCP 服务器。

基本使用方法

  1. 启动 Ghidra: 运行 Ghidra 软件。
  2. 加载程序: 在 Ghidra 中打开你需要分析的程序。
  3. 启用插件: 在 Ghidra 的 "Plugin Manager" 中找到 "GhidraMCPPlugin" 并启用它。插件启动后,MCP 服务器应该开始在配置的端口监听。
  4. 配置 MCP 客户端: 根据上述 "服务器配置" 部分的信息,配置你的 MCP 客户端,确保客户端能够连接到 Ghidra 运行的机器和指定的端口。
  5. 使用 MCP 客户端: 使用 MCP 客户端发送 MCP 命令,例如 'decompile' (反编译函数), 'rename_function' (重命名函数) 等,与 Ghidra MCP 服务器进行交互,利用 Ghidra 的分析能力。 具体可用的 MCP 命令请参考仓库 README.md 中的 "Available MCP Commands" 表格。

Prerequisites (运行前提条件)

  • Zig (version 0.13.0 or later)
  • Ghidra (version 11.3.1 or later)
  • Java Development Kit (JDK) 17 or later
  • Go (version 1.22.4 or later)
  • Gradle (version 8.13 or later)
  • Make

信息

分类

开发者工具