使用说明
项目简介
本项目 'Ghidra MCP Server Plugin' 是一个Ghidra插件,它集成了 MCP 服务器功能。该插件允许你通过 MCP 协议,将 Ghidra 的程序分析能力(如反编译、符号重命名、信息提取等)以标准化的方式提供给支持 MCP 协议的 LLM 客户端。这使得 LLM 能够利用 Ghidra 强大的逆向工程能力进行更深入的程序理解和分析。
主要功能点
- 程序反编译: 允许 LLM 客户端请求反编译指定地址的函数。
- 符号重命名: 支持 LLM 客户端重命名函数和数据符号,方便程序理解。
- 信息提取: 提供接口列出程序中的函数、数据、导入和导出符号,为 LLM 提供程序上下文信息。
- JNI 桥接: 使用 JNI 技术连接 Ghidra 和 Zig 编写的 MCP 服务器核心,保证性能和类型安全。
- Go 客户端库: 提供 Go 语言版本的 MCP 客户端库,方便开发者快速集成。
- 错误处理: 包含全面的错误处理机制,方便调试和问题定位。
安装步骤
-
克隆仓库
git clone https://github.com/streamerd/ghidra-mcp-zig.git cd ghidra-mcp-zig -
配置环境
- 创建 '.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 中列出的所有依赖。
- 创建 '.env' 文件,并根据你的 Ghidra 和 JDK 路径进行配置:
-
构建插件
make build-plugin -
安装插件
- 将构建好的插件库文件 '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/' 目录可能需要手动创建。
- 将构建好的插件库文件 'zig-out/lib/libghidra-mcp-zig.dylib' (或 '.so', '.dll',取决于你的系统) 复制到 Ghidra 的插件目录:
-
重启 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 服务器。
基本使用方法
- 启动 Ghidra: 运行 Ghidra 软件。
- 加载程序: 在 Ghidra 中打开你需要分析的程序。
- 启用插件: 在 Ghidra 的 "Plugin Manager" 中找到 "GhidraMCPPlugin" 并启用它。插件启动后,MCP 服务器应该开始在配置的端口监听。
- 配置 MCP 客户端: 根据上述 "服务器配置" 部分的信息,配置你的 MCP 客户端,确保客户端能够连接到 Ghidra 运行的机器和指定的端口。
- 使用 MCP 客户端: 使用 MCP 客户端发送 MCP 命令,例如 'decompile' (反编译函数), 'rename_function' (重命名函数) 等,与 Ghidra MCP 服务器进行交互,利用 Ghidra 的分析能力。 具体可用的 MCP 命令请参考仓库 README.md 中的 "Available MCP Commands" 表格。
Prerequisites (运行前提条件)
信息
分类
开发者工具