一个实现模型上下文协议(MCP)的Ghidra插件,用于AI辅助的二进制分析。
GhidraMCP通过模型上下文协议(MCP)弥合了Ghidra强大的逆向工程能力和AI助手之间的差距。此插件使AI模型能够连接到Ghidra并协助进行二进制分析任务,从而使得逆向工程更加高效和易于访问。
文件 > 安装扩展文件 > 配置 > 杂项并勾选"MCPServerPlugin"旁边的框来启用扩展在启用插件后打开Ghidra项目时,服务器会自动启动。默认情况下,它运行于:
localhost8765您可以通过检查Ghidra控制台中的消息来验证服务器是否正在运行:
MCP服务器已在端口8765上启动
要将Claude连接到GhidraMCP插件:
安装MCP桥接脚本:
pip install FastMCP
在您的Claude MCP设置中添加以下配置:
{
"mcpServers": {
"ghidra": {
"command": "python",
"args": ["PATH-TO-REPO/GhidraMCP/ghidra_server.py"]
}
}
}
桥接脚本创建了Ghidra和Claude之间的连接,使实时二进制分析通过自然语言成为可能。
该插件通过MCP接口暴露了多个强大功能:
| 工具 | 描述 |
|---|---|
get_function(address, decompile=False) | 获取特定地址处函数的详细信息 |
analyze_binary(question) | 就加载的二进制提出自然语言问题 |
get_imports() | 列出二进制中的所有导入函数 |
get_exports() | 列出二进制中的所有导出函数 |
get_memory_map() | 获取二进制的内存布局 |
connect_to_ghidra(host, port) | 连接到特定的Ghidra实例 |
rename_function(current_name, new_name) | 根据当前名称重命名函数 |
rename_data(address, new_name) | 根据特定地址重命名数据标签 |
extract_api_call_sequences(address) | 从函数中提取API调用以进行安全分析 |
identify_user_input_sources() | 查找二进制中的潜在用户输入源 |
generate_call_graph(address, max_depth=3) | 生成函数调用的分层表示 |
identify_crypto_patterns() | 检测二进制中的加密实现 |
find_obfuscated_strings() | 查找潜在的混淆字符串 |
这里是一些您可以通过MCP兼容的AI客户端提出的示例问题:
GhidraMCP提供了专门的安全分析工具:
从函数中提取并分类外部API调用,以进行安全分析。这有助于识别潜在危险的函数并理解它们的交互。
识别外部数据进入程序的入口点,这对于漏洞评估和理解攻击面至关重要。
创建结构化的调用图以理解执行流程,跟踪数据传播,并识别潜在的攻击路径。
识别包括标准算法(如AES、RSA等)和基于代码模式的自定义实现在内的加密实现。
查找可能通过XOR编码或逐字符构造等技术混淆的字符串。
您可以通过编辑MCPServerPlugin.java文件来修改服务器端口:
server.setPort(YOUR_CUSTOM_PORT);
GhidraMCP可以集成到现有的分析工作流中:
要从源代码构建插件:
克隆此仓库
git clone https://github.com/yourusername/GhidraMCP.git
按照Ghidra开发者指南设置Ghidra开发环境
设置GHIDRA_INSTALL_DIR环境变量:
export GHIDRA_INSTALL_DIR=/path/to/ghidra
使用Gradle构建:
./gradlew buildExtension
扩展ZIP文件将在dist目录中创建
pip install FastMCP安装了所有必需的Python包检查以下日志以进行故障排除:
ghidra_mcp_bridge.log中的桥接脚本问题欢迎贡献!请随时提交问题或拉取请求。
git checkout -b feature/amazing-featuregit commit -m '添加一些令人惊叹的功能'git push origin feature/amazing-featureGhidraMCP与NSA或Ghidra项目无关,也未得到它们的认可。