项目简介
GhidraMCP是一个Ghidra扩展,它运行一个嵌入式Model Context Protocol (MCP) 服务器,旨在将Ghidra强大的反向工程功能和程序数据以标准化的方式提供给大型语言模型(LLM)客户端。通过一系列语义工具,LLM可以调用Ghidra进行函数分析、代码反编译、数据类型管理、内存操作和符号管理,从而自动化或辅助复杂的逆向工程任务。
主要功能点
- 函数分析: 全面分析Ghidra程序中的函数,包括创建、检查、反编译和原型管理。支持通过名称、地址、符号ID或正则表达式识别函数,并提供参数、返回类型和调用站点等详细信息。
- 代码反编译: 为函数和代码区域提供高级反编译和P-code分析。将函数反编译为C语言风格的伪代码,分析P-code操作,并支持可配置的超时和分析深度。
- 数据类型管理: 全面管理Ghidra程序中的所有数据类型,包括结构体、枚举、联合体、类型定义、指针、函数定义和类别。支持创建、读取、更新、删除和列表操作,并具备自动类型解析和验证功能。
- 内存操作: 提供全面的内存操作,如读取和写入字节、搜索模式、分析内存布局和管理内存段。支持十六进制、字符串、二进制和正则表达式等多种搜索格式。
- 符号管理: 全面管理程序中的符号,包括创建、重命名、删除、搜索和分析符号。支持多种符号识别方法,命名空间组织和作用域管理,并根据Ghidra规则进行验证。
安装步骤
- 从项目的 Releases 页面 下载最新版本的 'zip' 扩展文件。
- 在Ghidra中,导航到菜单栏 'File' -> 'Install Extensions...'。
- 点击右上角的 '+' 按钮(Add extension)。
- 选择下载的 'zip' 扩展文件。
- 确保列表中 'GhidraMCP' 扩展前的复选框被勾选,然后点击 'OK'。
- 重启Ghidra以激活扩展。
服务器配置
GhidraMCP服务器是作为Ghidra的一个扩展运行的。它在Ghidra启动时自动激活,并在默认情况下提供一个HTTP SSE (Server-Sent Events) 端点供MCP客户端连接。您无需额外的启动命令,只需确保Ghidra程序正在运行即可。
要让您的MCP客户端(例如,Cursor、Claude Desktop或其他自定义客户端)能够连接到GhidraMCP服务器,您需要在客户端的配置文件中添加以下配置。
例如,在您的MCP客户端配置文件(如 'claude_desktop_config.json')中添加类似以下内容:
{ "mcpServers": { "ghidra": { "url": "http://127.0.0.1:8080/sse" } } }
- '"ghidra"': 这是您为GhidraMCP服务器设定的一个名称标识符,可以根据您的偏好更改。
- '"url"': 这是GhidraMCP服务器的通信地址。默认情况下,它在本地主机 '127.0.0.1' 的 '8080' 端口上运行,使用SSE协议。如果您在Ghidra的“工具选项”中修改了GhidraMCP扩展的服务器端口,请务必相应更新此URL地址。确保Ghidra已运行且GhidraMCP扩展已启用,客户端才能成功连接。
基本使用方法
- 启动Ghidra: 确保Ghidra应用程序已启动且GhidraMCP扩展处于活动状态。
- 配置MCP客户端: 在您的MCP客户端(如Cursor或Claude Desktop)中,确保已根据上述“服务器配置”部分正确配置GhidraMCP服务器。
- 通过MCP客户端调用工具: 您现在可以通过MCP客户端直接调用GhidraMCP提供的各种工具。例如:
- 分析函数: 使用 'analyze_functions' 工具来获取特定函数(如 'main')的详细信息或反编译代码。
- 管理数据类型: 使用 'manage_data_types' 工具来创建新的结构体或枚举定义。
- 搜索内存: 使用 'manage_memory' 工具来在程序内存中查找特定的字节模式或字符串。
- 管理符号: 使用 'manage_symbols' 工具来创建新的标签或重命名函数。
信息
分类
开发者工具