GhidraGPT是一个将LLM集成到Ghidra(NSA开源逆向工程框架)中的插件。 Ghidra是由美国国家安全局(NSA)开发并以开源形式发布的强大软件逆向工程(reverse engineering)工具。 Ghidra由美国国家安全局开发,曾被多个美国情报机构用作逆向工程工具,大约在2017年3月7日的WikiLeaks "CIA Vault 7"泄密事件中,其存在才首次为世人所知。 此后,美国国家安全局于2019年3月5日在RSA大会上首次公开发布了可执行文件,一个月后即2019年4月又在GitHub上公开了源代码。
随着LLM的发展,GhidraGPT让LLM能够辅助完成本需要人工进行大量重复劳动的核心工作:分析已编译的机器码,将其转换为人类可读的汇编语言(反汇编),并还原为C语言级别的代码(反编译)。 简而言之,这是一个为Ghidra加装LLM的扩展服务,其扩展理念是让LLM代替完成反汇编等耗时的工作。
其主要特点和功能如下。
- 强大的反编译器:将机器码转换为类C语言形式,让代码流程和逻辑更容易理解。
- 支持多种平台:可在Windows、macOS、Linux上运行,并支持x86、ARM、MIPS等多种处理器架构。
- 协作功能:提供支持团队共享和分析项目的服务器功能。
- 可扩展性:支持Python和Java脚本,用户可以自行实现所需的分析自动化功能。
- 免费开源:是IDA Pro等昂贵商业逆向工具的有力替代品,被安全研究人员、恶意软件分析师和开发者广泛使用。
核心优势
- 提升生产力
- 自动重命名函数名/变量名、类型推断、添加注释,使反编译结果更易于人类阅读
- 在上下文菜单中右键点击一次即可执行AI分析(非常方便)
- 支持多种LLM
- 支持OpenAI、Anthropic、Google Gemini、Cohere、Mistral、DeepSeek、Grok、Ollama等广泛的模型
- 也可使用OpenAI兼容API
- 安全性与易用性
- 自动加密API密钥并安全存储
- 实时流式响应,最大限度减少等待时间
- 可在专用控制台查看结果
缺点与注意事项
缺点:
- LLM的响应并非总是准确,可能导致错误的分析结果(会出现LLM幻觉和错误)
- 基本上需要网络连接和API费用(本地Ollama除外;DeepSeek v4 pro、Qwen通常已足够)
- 与Ghidra复杂的内部结构结合时可能出现意外冲突
注意事项:
- 如果分析的二进制文件包含敏感代码,必须确认发送到外部API的数据内容
- 不要盲目相信LLM生成的代码或类型信息,必须进行验证
- 需要Ghidra 10.0以上、Java 11以上及Maven环境,安装时必须严格按照
File → Install Extensions路径操作
竞品对比
| 项目 | 差异化点 |
|---|---|
| Ghidra Assist | 对本地模型进行了更多优化,开源社区支持活跃 |
| BinAI | 商业产品,提供专为二进制分析设计的自有模型,准确性有优势 |
| IAIK's Ghidra Plugin | 基于学术研究,在特定分析算法上表现突出 |
| IDA Pro + ChatGPT | 面向IDA用户的脚本,生态更大但并非专为Ghidra设计 |
总结:GhidraGPT是一款支持多种LLM的强大插件,但API依赖和分析结果可靠性的验证是必不可少的。在分析敏感代码时,建议使用本地模型(Ollama)。
GhidraGPT入门:Ollama、ChatGPT、Claude、Qwen设置指南
本指南将逐步介绍如何安装GhidraGPT插件,并连接Ollama(本地)、ChatGPT、Claude、Qwen等多种LLM。
前置准备
在使用GhidraGPT之前,需要具备以下环境:
| 项目 | 要求 |
|---|---|
| Ghidra | 10.0以上 |
| Java | Java 11+ |
| Maven | 构建系统 |
| 网络 | 使用基于API的模型时必须(Ollama除外) |
1. 安装GhidraGPT插件
1.1 克隆仓库并构建
git clone https://github.com/ZeroDaysBroker/GhidraGPT.git
cd GhidraGPT
GHIDRA_INSTALL_DIR=/path/to/ghidra mvn clean package
构建完成后,会生成target/GhidraGPT-x.y.z.zip文件。
1.2 在Ghidra中安装插件
- 启动Ghidra
- 进入
File → Install Extensions - 点击
+按钮,选择target/GhidraGPT-x.y.z.zip - 重启Ghidra
- 在
File → Configure → Analysis → GhidraGPTPlugin中启用插件
2. 为各LLM服务设置API密钥
安装插件后,进入Ghidra内的GhidraGPT configuration panel输入API密钥。所有API密钥都会自动加密并安全存储。
OpenAI(ChatGPT)
- 在OpenAI Platform获取API密钥
- 在GhidraGPT设置面板中选择OpenAI
- 输入获取到的API密钥
- 选择要使用的模型(例如
gpt-4、gpt-3.5-turbo)
提示:GhidraGPT默认支持OpenAI的GPT模型。
Anthropic(Claude)
- 在Anthropic Console获取API密钥
- 在GhidraGPT设置面板中选择Anthropic
- 输入API密钥
- 选择要使用的Claude模型(例如
claude-3-opus、claude-3-sonnet)
GhidraGPT正式支持Anthropic的Claude模型。
Ollama(免费本地模型)
Ollama是一款可在本地运行LLM的工具,能让你无需联网即可使用GhidraGPT。
2.1 安装Ollama
macOS / Linux:
curl -fsSL https://ollama.com/install.sh | sh
Windows: 从Ollama官方网站下载安装文件
2.2 下载LLM模型
下载你需要的模型。示例:
# Meta的Llama 3.1(8B轻量模型)
ollama run llama3.1:8b
# Qwen(擅长代码分析)
ollama run qwen2.5-coder:7b
# Mistral
ollama run mistral
提示:请选择与你的硬件规格匹配的模型。
llama3.1:8b在8GB显存下可流畅运行。
2.3 确认Ollama服务器
Ollama默认在localhost:11434上运行API服务器。
# 查看正在运行的模型
ollama list
2.4 将Ollama连接到GhidraGPT
- 在GhidraGPT设置面板中选择Ollama2.Server URL:输入
http://localhost:11434 - Model:输入之前下载的模型名称(例如
llama3.1:8b、qwen2.5-coder:7b)
提示:Ollama通过GhidraGPT支持的"自带模型(Bring your own model)"方式运作。
Qwen(OpenAI兼容API或Ollama)
Qwen可以通过两种方式使用:
方式A:通过Ollama本地运行(免费)
ollama run qwen2.5-coder:7b
之后,按照与Ollama相同的设置方式在GhidraGPT中连接。
方式B:DashScope API(云端)
- 在阿里云 DashScope获取API密钥
- 在GhidraGPT设置面板中选择OpenAI Compatible3.Base URL:输入
https://dashscope.aliyuncs.com/compatible-mode/v1 - API Key:输入DashScope API密钥
- Model:输入
qwen-max、qwen-plus等
由于GhidraGPT支持OpenAI兼容API,你可以通过Qwen的OpenAI兼容端点进行连接。
3. 主要功能使用方法
安装和设置完成后,即可使用以下功能:
| 功能 | 说明 | 使用方法 |
|---|---|---|
| Function Rewrite | 重命名函数名/变量名、类型推断、添加注释 | 在反编译窗口中右键点击函数 → Rewrite |
| Code Explanation | 详细解释函数逻辑 | 右键点击 → Explain |
| Code Analysis | 检测漏洞并进行安全分析 | 右键点击 → Analyze |
| Console | 查看模型响应与结果 | 在GhidraGPT控制台窗口中查看 |
4. 各服务对比与推荐
| 服务 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|
| Ollama | 免费、离线、保障隐私 | 需要本地硬件性能,响应速度较慢 | 安全性至关重要的分析、无网络环境 |
| ChatGPT (OpenAI) | 性能出色,响应迅速 | 收费,必须联网 | 一般性逆向工作 |
| Claude | 上下文长,代码理解能力出色 | 收费,必须联网 | 分析复杂的大型函数 |
| Qwen (Ollama) | 免费、代码特化、支持韩语 | 需要本地硬件性能 | 需要韩语注释/解释时 |
| Qwen (API) | 云端性能、支持韩语 | 收费,必须联网 | 需要韩语+云端性能时 |
注意事项
- 数据隐私:分析敏感二进制文件时,务必使用Ollama等本地模型。云端API会将被分析的代码发送到外部。
- 验证结果:LLM生成的代码或类型信息必须始终手动验证。AI有时会生成错误的分析结果。
- API费用:OpenAI、Anthropic、DashScope(Qwen)会根据使用量产生费用。
参考资料
- GhidraGPT GitHub仓库
- Ollama官方网站
- Ollama支持的模型列表
- Hugging Face GGUF模型 - 可通过Ollama运行
现在,一起开始用GhidraGPT进行AI驱动的逆向工程吧。