使用说明
项目简介
GhidraMCP 是一个 Model Context Protocol (MCP) 服务器,旨在桥接 Ghidra 软件逆向工程平台与大型语言模型 (LLM)。它作为一个 Ghidra 插件运行,并提供一系列工具,使 LLM 能够自动化执行二进制文件的分析任务,例如反编译代码、重命名函数和数据、以及列出程序结构信息。通过 GhidraMCP,LLM 可以更深入地理解二进制代码,从而在漏洞分析、恶意软件检测和软件理解等领域发挥更大作用。
主要功能点
- 二进制文件反编译和分析: 利用 Ghidra 的反编译器,将二进制代码转换为可读的 C 代码,并进行深层分析。
- 自动化代码理解: 自动重命名函数和数据标签,帮助 LLM 理解代码的功能和逻辑。
- 程序结构信息提取: 列出程序中的方法、类、导入导出符号等关键信息,为 LLM 提供程序概览和上下文。
- 基于 MCP 协议的工具接口: 通过标准化的 MCP 协议与 LLM 客户端通信,易于集成到各种 LLM 应用中。
安装步骤
- 安装 Ghidra: 确保已安装 Ghidra 软件逆向工程平台。
- 下载 GhidraMCP 插件: 从 GitHub Release 页面 下载最新版本的 'GhidraMCP-1-0.zip' 插件包。
- 安装 Ghidra 插件:
- 启动 Ghidra。
- 选择 'File' -> 'Install Extensions'。
- 点击 '+' 按钮,选择下载的 'GhidraMCP-1-0.zip' 文件。
- 重启 Ghidra。
- 在 'File' -> 'Configure' -> 'Developer' 中确认 'GhidraMCPPlugin' 插件已启用。
- 安装 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',并进行如下配置:
- 'Tool Key': 'ghidra' (与 Claude Desktop 配置中的服务器名称保持一致)
- 'Name': 'GhidraMCP' (服务器显示名称,可自定义)
- 'Command': 'python /path/to/GhidraMCP/bridge_mcp_ghidra.py' 请替换为 bridge_mcp_ghidra.py 脚本的绝对路径
基本使用方法
- 启动 Ghidra 和 GhidraMCP 插件: 打开 Ghidra 软件,GhidraMCP 插件会在 Ghidra 启动时自动运行并启动 HTTP 服务器。
- 加载二进制文件到 Ghidra: 在 Ghidra 中打开您想要分析的二进制文件。
- 配置和启动 MCP 客户端: 根据您使用的 MCP 客户端 (如 Claude Desktop, 5ire),按照上述 "服务器配置" 步骤配置 GhidraMCP 服务器连接,并启动 MCP 客户端。
- 在 MCP 客户端中使用 GhidraMCP 工具: 在 MCP 客户端中,您应该能够看到 GhidraMCP 提供的工具,例如列出方法、反编译函数、重命名函数等。 您可以指示 LLM 调用这些工具,例如: "使用 GhidraMCP 工具反编译函数 main"。 LLM 将调用相应的 GhidraMCP 工具,并将结果返回给您。
注意: GhidraMCP 通过 HTTP 协议与 'bridge_mcp_ghidra.py' (如果使用) 和 MCP 客户端通信,确保您的防火墙允许这些连接。
信息
分类
开发者工具