导语:想让逆向工程像聊天一样简单?劳伦斯利弗莫尔国家实验室(LLNL)近日开源了一款重磅工具——OGhidra。它将大语言模型与Ghidra逆向平台桥接,实现通过自然语言与二进制程序”对话”。分析恶意软件、查找漏洞,不再需要记忆海量指令。
一、工具简介
OGhidra 是由劳伦斯利弗莫尔国家实验室(LLNL)的 Enoch Wang 主导开发的项目,GitHub地址:https://github.com/llnl/OGhidra
它将大语言模型通过 Ollama 与 Ghidra 逆向工程平台桥接,实现 AI 驱动的二进制分析。用户可以用自然语言与二进制程序”对话”,自动化复杂逆向工作流程,并在本地运行模型以确保完全隐私。

二、核心功能
自然语言分析
用日常英语提问关于函数、字符串、导入库的问题——不需要记忆复杂的Ghidra脚本指令:
- “这个函数是做什么的?”
- “它有缓冲区溢出漏洞吗?”
- “有哪些函数调用了它?”
- “显示了网络通信相关的代码吗?”
自动化工作流
一键完成批量操作:
| 功能 | 说明 |
|---|---|
| 分析当前函数 | 深入分析选定函数的行为 |
| 重命名当前函数 | AI根据分析结果建议有意义的名称 |
| 批量重命名所有函数 | 支持仅重命名/智能枚举/完整枚举三种模式 |
| 分析导入表 | 识别库和外部依赖 |
| 分析字符串 | 查找URL、凭据、配置数据 |
| 生成报告 | 综合性安全评估报告 |
本地AI模型(隐私优先)
支持完全本地部署:
- Ollama:在本地硬件运行大语言模型,敏感二进制文件绝不离开你的机器
- 云端API:也支持OpenAI、Google Gemini、Anthropic Claude等外部接口
- 自定义端点:任何OpenAI兼容API都可接入
恶意软件检测(内置12+规则)
自动识别多种高级威胁:
- 规避技术:PEB Walking、动态API解析、反调试、反虚拟机
- 注入技术:本地/远程进程注入
- 持久化:注册表、文件系统钩子
- 混淆:字符串编码、API哈希
- 权限提升:Token操作、UAC绕过
检测到威胁时自动触发警告,并附带MITRE ATT&CK映射。
智能枚举
从二进制中构建可查询的知识图谱:
- 结构化元数据提取(代码行数、复杂度、操作类型)
- 语义搜索优化
- 多向量支持精确检索
- 会话保存与恢复
智能体循环(Agentic Loop)
OGhidra采用自适应规划系统,每个执行周期后AI会审查结果,决定是否收集更多信息或优化分析,然后才给出最终响应。
三、系统要求
| 组件 | 版本要求 |
|---|---|
| Python | 3.12+ |
| Ghidra | 12.0.3(推荐),也支持11.0.3、11.3.2、12.0.2 |
| Java | 21(构建Ghidra 12.0.3扩展必需) |
| Ollama | 可选,用于本地模型 |
推荐配置:gemma3:27b 模型(约需20GB内存),nomic-embed-text用于RAG嵌入。
替代模型:gpt-oss:120b、devstral-2:123b(需80GB内存)。
四、安装配置
步骤一:克隆项目
git clone https://github.com/LLNL/OGhidra.git
cd OGhidra
步骤二:安装依赖
uv sync # 使用UV(推荐)
# 或
pip install -r requirements.txt
步骤三:配置环境
cp .env.example .env
# 编辑.env设置AI提供商
本地模型配置(Ollama):
LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434/
OLLAMA_MODEL=gemma3:27b
OLLAMA_EMBEDDING_MODEL=nomic-embed-text
云端API配置(Google Gemini):
LLM_PROVIDER=external
EXTERNAL_PROVIDER=google
EXTERNAL_API_KEY=你的API密钥
EXTERNAL_MODEL=gemini-3.1-flash-lite-preview
步骤四:构建Ghidra插件
# 设置Ghidra安装路径
export GHIDRA_INSTALL_DIR=/path/to/ghidra_12.0.3_PUBLIC
# 运行构建脚本
chmod +x build_ghidra_plugin.sh
./build_ghidra_plugin.sh
构建完成后,扩展包zip文件位于 OGhidraMCP/dist/ 目录。
步骤五:安装插件
- 打开Ghidra → File → Install Extensions
- 点击 Add Extension(绿色加号图标)
- 浏览到
OGhidraMCP/dist/目录 - 选择扩展包zip文件,重启Ghidra
步骤六:启用插件
- 打开Ghidra项目
- File → Configure → Enable Developer
- 启用 OGhidraMCP 插件
- 服务器将在
http://localhost:8080/methods启动
⚠️ 注意:必须打开 CodeBrowser 窗口才能正常使用。
步骤七:拉取AI模型(本地)
ollama pull gemma3:27b # 推荐配置(20GB内存)
ollama pull nomic-embed-text # RAG嵌入模型
步骤八:启动
# GUI模式(推荐)
uv run main.py --ui
# 交互式CLI
uv run main.py --interactive
五、使用示例
分析可疑二进制
- 在Ghidra中加载二进制文件,打开CodeBrowser
- 启用OGhidraMCP插件(File → Configure)
- 启动OGhidra:
uv run main.py --ui - 任务模式选择”malware”
- 点击”Rename All Functions” → “Smart Enumeration”
- 提问:”哪些是高风险函数?”或”显示网络通信相关代码”
生成安全报告
在GUI中点击”Generate Report”按钮,报告包含:
- 执行摘要
- 函数清单(重命名后的函数及其行为)
- 安全分析(高风险函数、检测到的模式)
- 导入表分析
- 字符串分析
- 修复建议
调查特定函数
- 在Ghidra中导航到目标函数
- 点击”Analyze Current Function”
- 追问:
- “这个函数是做什么的?”
- “它有缓冲区溢出漏洞吗?”
- “有哪些其他函数调用了它?”
六、双后端支持
OGhidra支持两种后端类型:
| 后端 | 说明 |
|---|---|
| MCP | 与GhidraMCP服务器集成,运行时需要Ghidra客户端 |
| PyGhidra | 无头分析,无需Ghidra客户端,更适合自动化场景 |
# 选择后端
uv run main.py --ui --ghidra-backend=pyghidra --pyghidra-binary=/path/to/binary
七、高级特性
RAG(检索增强生成)
启用向量嵌入实现语义搜索:
RESULT_CACHE_ENABLED=true
TIERED_CONTEXT_ENABLED=true
上下文优化
分层压缩保持信息相关性:
CURRENT_LOOP_MAX_CHARS=2000 # 最新:完整细节
PREV_LOOP_MAX_CHARS=400 # 之前:摘要
OLDER_LOOP_MAX_CHARS=100 # 更早:仅引用
日志记录
跟踪所有AI交互用于调试:
LLM_LOGGING_ENABLED=true
LLM_LOG_FILE=logs/llm_interactions.log
LLM_LOG_FORMAT=json
八、故障排除
Ghidra连接问题:
# 检查服务器是否运行
curl http://localhost:8080/methods
Ollama连接问题:
ollama list
curl http://localhost:11434/api/tags
ollama serve # 重启Ollama服务
响应为空/上下文溢出:
CONTEXT_BUDGET=50000
COMPACTION_ENABLED=true
COMPACTION_THRESHOLD=0.75
九、项目信息
- 开源协议:BSD 3-Clause(包含商业许可选项)
- 开发团队:劳伦斯利弗莫尔国家实验室(LLNL)
- 作者:Enoch Wang(enochsurge@gmail.com)
- 相关项目:Ghidra(NSA)、Ollama、GhidraMCP
来源:Twitter @7h3h4ckv157 推荐,原始项目:https://github.com/llnl/OGhidra
下载地址:
- GitHub主仓库:https://github.com/llnl/OGhidra
- YouTube教程:https://www.youtube.com/watch?v=hBD92FUgR0Y
版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。














暂无评论内容