OGhidra соединяет большие языковые модели (LLMs) через Ollama с платформой обратной инженерии Ghidra, обеспечивая AI-управляемый анализ бинарного кода с помощью естественного языка. Взаимодействуйте с Ghidra, используя запросы на естественном языке, и автоматизируйте сложные рабочие процессы обратной инженерии.
# OGhidra 3 — Обратная разработка с помощью ИИ и Ghidra
Для версии с использованием Orchestrator, вдохновлённого Claude, см. https://github.com/llnl/OGhidra/tree/orchestrator



**OGhidra** объединяет большие языковые модели с платформой обратной разработки Ghidra, позволяя выполнять анализ бинарных файлов с помощью ИИ на естественном языке. Анализируйте бинарные файлы в диалоговом режиме, автоматизируйте сложные рабочие процессы и сохраняйте полную конфиденциальность с помощью локальных моделей ИИ.
YouTube Setup Tutorial
[](https://www.youtube.com/watch?v=hBD92FUgR0Y)
---
## Что такое OGhidra?
OGhidra расширяет возможности Ghidra с помощью ИИ, что позволяет вам:
- **Анализ на естественном языке** — Задавайте вопросы о функциях, строках, импортах на простом английском
- **Автоматизированные рабочие процессы** — Переименовывайте функции, обнаруживайте шаблоны, создавайте комплексные отчёты
- **Локальные модели ИИ** — Полная конфиденциальность с моделями, работающими на вашем оборудовании (Ollama)
- **Поддержка облачных ИИ** — Подключайтесь к внешним API (OpenAI, Google Gemini, Anthropic Claude)
- **Обнаружение вредоносного ПО** — Автоматическое сопоставление шаблонов для 12+ методов обхода и инъекций
- **Умное перечисление** — Построение запрашиваемых графов знаний из анализа бинарных файлов
- **Многопоточный анализ** — Запуск нескольких экземпляров Ghidra для параллельного анализа
### Как это работает
```mermaid
graph TD
A[User Query] --> B[Planning Phase]
B --> C{Execution Phase}
C -- Tool Calls --> D[Ghidra/LLM]
D --> C
C --> E[Review Phase]
E -- Agentic Loop --> B
E --> F[Final Response]
style E fill:#f9f,stroke:#333,stroke-width:2px
style B fill:#bbf,stroke:#333,stroke-width:2px
```
**Агентный цикл**: OGhidra использует адаптивную систему планирования. После каждого цикла выполнения результаты анализируются, и ИИ может решить собрать больше информации или уточнить анализ, прежде чем предоставить окончательный ответ.
---
## Быстрый старт
### Предварительные требования
1. **Python 3.12+** — Проверьте версию: `python --version`
2. **Ghidra 12.0.3** (рекомендуется) — Скачайте из [Ghidra Releases](https://github.com/NationalSecurityAgency/ghidra/releases)
- Путь сборки/установки плагина описан для Ghidra 12.0.3
- Протестировано с: Ghidra 11.0.3, 11.3.2, 12.0.2, 12.0.3
3. **Java 21** — Необходима для сборки расширения Ghidra 12.0.3: `java -version`
4. **Ollama** (опционально, для локальных моделей) — Установите с [ollama.com](https://ollama.com/)
### Установка
```bash
# Clone repository
git clone https://github.com/LLNL/OGhidra.git
cd OGhidra
# Install dependencies (choose one)
uv sync # Using UV (recommended)
pip install -r requirements.txt # Using pip
# Configure environment
cp .env.example .env
# Edit .env with your settings
```
### Настройка плагина Ghidra
Шаги сборки плагина OGhidraMCP ниже предназначены для Ghidra 12.0.3 (рекомендуется).
Также есть видеоурок на YouTube: https://www.youtube.com/watch?v=hBD92FUgR0Y
#### Сборка расширения GhidraMCP
В качестве разработчика вам нужно собрать расширение GhidraMCP перед установкой в Ghidra:
1. **Предварительные требования**:
- Установлена Ghidra 12.0.3
- Java 21
2. **Вариант 1: Использование автоматизированных скриптов сборки**:
- Windows:
```bat
# Set the path to your Ghidra installation (will attempt to find last run copy of Ghidra if not set)
set GHIDRA_INSTALL_DIR=C:\path\to\ghidra_12.0.3_PUBLIC
# Run the build script
build_ghidra_plugin.bat
```
- Unix/Linux/Mac:
```bash
# Set the path to your Ghidra installation (will attempt to find the last run copy of Ghidra if not set)
export GHIDRA_INSTALL_DIR=/path/to/ghidra_12.0.3_PUBLIC
# Run the build script (make it executable first if needed)
chmod +x build_ghidra_plugin.sh
./build_ghidra_plugin.sh
```
3. **Вариант 2: Ручная сборка**:
- Создайте/обновите `OGhidraMCP/gradle.properties`, указав путь к установленной Ghidra:
```properties
GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.0.3_PUBLIC
```
- На Unix/Linux/macOS:
```bash
cd OGhidraMCP
$GHIDRA_INSTALL_DIR/support/gradle/gradlew buildExtension --info
```
- На Windows:
```bat
cd OGhidraMCP
"%GHIDRA_INSTALL_DIR%\support\gradle\gradlew.bat" buildExtension --info
```
4. **Найдите собранное расширение**:
- Zip-архив расширения создаётся в `OGhidraMCP/dist/`
- Имя файла будет примерно таким: `ghidra_12.0.3_PUBLIC_YYYYMMDD_OGhidraMCP.zip`
#### Установка расширения GhidraMCP
После успешной сборки расширения:
1. **Установка в Ghidra**:
- Откройте Ghidra -> **File** -> **Install Extensions**
- Нажмите **Add Extension** (зелёный плюс)
- Перейдите в каталог `OGhidraMCP/dist/`
- Выберите только что собранный zip-архив расширения (например, `ghidra_12.0.3_PUBLIC_YYYYMMDD_OGhidraMCP.zip`)
- Перезапустите Ghidra
2. **Включите плагин**:
- Откройте проект Ghidra
- **File** → **Configure** → **Enable Developer**
- Включите плагин `OGhidraMCP`
- Сервер запустится на `http://localhost:8080/methods`
> **НЕОБХОДИМО, ЧТОБЫ CODE BROWSER БЫЛ ОТКРЫТ**
### Загрузка моделей ИИ
```bash
# For Ollama (local models)
ollama pull gemma3:27b # Good balance (20GB RAM)
ollama pull nomic-embed-text # Embedding model for RAG
# Alternative models
ollama pull gpt-oss:120b # High quality (80GB RAM)
ollama pull devstral-2:123b # High quality (80GB RAM)
ollama pull devstral-2:123b-cloud # Cloud Model
```
### Запуск OGhidra
```bash
# GUI Mode (recommended)
uv run main.py --ui
# Interactive CLI
uv run main.py --interactive
# In interactive CLI, test connection
health
```
Если вы запустили режим GUI, используйте:
```bash
curl http://localhost:8080/methods
```
---
## Конфигурация
Отредактируйте `.env`, чтобы настроить поставщика ИИ:
### Вариант 1: Локальные модели (Ollama)
```env
LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434/
OLLAMA_MODEL=gemma3:27b
OLLAMA_EMBEDDING_MODEL=nomic-embed-text
```
### Вариант 2: Внешние API
```env
LLM_PROVIDER=external
EXTERNAL_PROVIDER=google
EXTERNAL_API_KEY=your-api-key-here
EXTERNAL_MODEL=gemini-3.1-flash-lite-preview
EXTERNAL_EMBEDDING_MODEL=gemini-embedding-001
```
### Вариант 3: Пользовательское API, совместимое с OpenAI
```env
LLM_PROVIDER=custom_api
CUSTOM_API_URL=https://api.example.com/v1/chat/completions
CUSTOM_API_KEY=your-api-key-here
CUSTOM_API_MODEL=your-model-name
CUSTOM_API_EMBEDDING_MODEL=your-embedding-model
```
### Настройки управления контекстом
Настройте в зависимости от контекстного окна вашей модели:
```env
# Context budget in tokens (adjust to your model's limit)
CONTEXT_BUDGET=100000 # 100K tokens for mid-size models
# 200K+ for frontier models
# Execution settings
MAX_EXECUTION_STEPS=5 # Steps per planning cycle
MAX_AGENTIC_CYCLES=3 # How many plan-execute-review loops
AGENTIC_LOOP_ENABLED=true # Enable adaptive replanning
```
---
## Ключевые возможности
### 1. Умные кнопки инструментов (GUI)
Доступ к типовым задачам обратной разработки одним щелчком:
| Инструмент | Описание |
| ---------------------------- | --------------------------------------------------------- |
| **Анализ текущей функции** | Детальное изучение поведения выбранной функции |
| **Переименовать текущую функцию** | ИИ предлагает осмысленные названия на основе анализа |
| **Переименовать все функции** | Пакетное переименование с опциями Smart/Full/Rename-Only |
| **Анализ импортов** | Определение библиотек и внешних зависимостей |
| **Анализ строк** | Поиск URL, учётных данных, конфигурационных данных |
| **Создать отчёт** | Комплексная оценка безопасности |
### 2. Режимы задач
Установите специализированные цели анализа:
```python
# In GUI: Use "Task Mode" dropdown
# In CLI: set task_mode <mode>
task_mode malware # Malware analysis with pattern detection
task_mode vuln # Vulnerability research focus
task_mode general # General reverse engineering
```
### 3. Обнаружение вредоносных шаблонов
Автоматическое обнаружение 12+ вредоносных шаблонов:
- **Уклонение**: PEB Walking, Dynamic API Resolution, Anti-Debug, Anti-VM
- **Инъекция**: Process Injection (Local/Remote)
- **Персистентность**: Registry, File System Hooks
- **Обфускация**: String Encoding, API Hashing
- **Повышение привилегий**: Token manipulation, UAC bypass
Шаблоны автоматически вызывают оповещения в контексте ИИ с привязкой к MITRE ATT&CK.
### 4. Умное перечисление
Создавайте богатые, запрашиваемые знания из анализа бинарных файлов:
```
# Enumerate all functions with AI summaries
# Choose from:
- Rename Only: Only process generic function names
- Smart Enumeration: Focus on security-relevant functions
- Full Enumeration: Analyze every function in the binary
```
Возможности:
- Структурированное извлечение метаданных (LOC, сложность, операции)
- Оптимизация семантического поиска
- Сборка контекста на основе намерений
- Многовекторная поддержка для точного извлечения
### 5. Управление сеансами
Сохраняйте и восстанавливайте сеансы анализа:
```python
# Save progress
File → Save Session
# Load previous work
File → Load Session
# Auto-save after bulk operations
# Sessions include:
- Analyzed functions with summaries
- RAG vectors for semantic search
- Performance statistics
- UI state
```
---
## Настройка бэкенда
OGhidra поддерживает два типа бэкенда:
- **MCP** — Интегрируется с сервером GhidraMCP и требует запущенного клиента Ghidra во время анализа
- **PyGhidra** — Поддерживает безголовый анализ (headless) без клиента Ghidra и устраняет серверный компонент, необходимый для MCP
### Выбор бэкенда
Используйте следующий параметр командной строки для выбора бэкенда:
```bash
--ghidra-backend={http,pyghidra}
```
| Параметр бэкенда | Описание |
|------------------|----------|
| `http` | Использует бэкенд GhidraMCP |
| `pyghidra` | Использует бэкенд PyGhidra |
---
## Конфигурация PyGhidra
### Использование существующего проекта Ghidra
Укажите файл проекта Ghidra (`.gpr`) при запуске OGhidra:
```bash
--pyghidra-project=/path/to/project.gpr
```
PyGhidra требует действительный проект Ghidra для запуска OGhidra.
---
### Выбор программы
Укажите, какой бинарный файл внутри проекта Ghidra должен анализироваться:
```bash
--pyghidra-program=<program_name>
```
пример вызова для выбора программы в проекте Ghidra:
```bash
uv run main.py --ui --ghidra-backend=pyghidra --pyghidra-project=/path/to/project.gpr --pyghidra-program=<program_name>
```
Требования:
- Имя программы должно точно соответствовать имени, отображаемому в GUI проекта Ghidra
- Этот параметр обязателен при использовании существующего проекта
- Неуказание программы предотвратит запуск OGhidra
---
### Запуск бинарного файла напрямую
Вы также можете указать путь к бинарному файлу напрямую:
```bash
--pyghidra-binary=/path/to/binary
```
При использовании этого параметра PyGhidra автоматически:
1. Создаёт новый проект Ghidra (`.gpr`)
2. Импортирует бинарный файл
3. Запускает бинарный файл в OGhidra для анализа
пример вызова для прямого запуска бинарного файла:
uv run main.py --ui --ghidra-backend=pyghidra --pyghidra-binary=/path/to/binary
---
## Типовые рабочие процессы
### Анализ подозрительного бинарного файла
1. **Загрузите бинарный файл в Ghidra** и откройте в CodeBrowser
2. **Включите плагин OGhidraMCP** (File → Configure)
3. **Запустите OGhidra**: `uv run main.py --ui`
4. **Установите режим задачи**: Выберите "malware" из выпадающего списка
5. **Запустите умное перечисление**: Нажмите "Rename All Functions" → "Smart Enumeration"
6. **Задавайте вопросы**: "Какие функции с высоким риском?" или "Покажите сетевые взаимодействия"
### Создание отчёта безопасности
```bash
# In GUI: Click "Generate Report" button
# Report includes:
- Executive Summary
- Function Inventory (renamed functions with behavior)
- Security Analysis (high-risk functions, patterns)
- Import Analysis
- String Analysis
- Recommendations
```
### Исследование конкретной функции
1. **Перейдите к функции в Ghidra**
2. **Нажмите "Analyze Current Function"**
3. **Задавайте уточняющие вопросы**:
- "Что делает эта функция?"
- "Уязвима ли она для переполнения буфера?"
- "Какие другие функции вызывают эту?"
---
## Расширенные возможности
### RAG (Генерация с дополнением извлечением)
OGhidra использует векторные эмбеддинги для семантического поиска по проанализированным функциям:
```env
# Enable in .env
RESULT_CACHE_ENABLED=true
TIERED_CONTEXT_ENABLED=true
```
Преимущества:
- Запоминание предыдущих анализов между сеансами
- Поиск семантически похожих функций
- Снижение избыточных вызовов LLM
### Оптимизация контекста
Многоуровневое сжатие контекста сохраняет релевантную информацию:
```env
CURRENT_LOOP_MAX_CHARS=2000 # Recent: full detail
PREV_LOOP_MAX_CHARS=400 # Previous: summaries
OLDER_LOOP_MAX_CHARS=100 # Older: references only
```
### Логирование LLM
Отслеживайте все взаимодействия с ИИ для отладки:
```env
LLM_LOGGING_ENABLED=true
LLM_LOG_FILE=logs/llm_interactions.log
LLM_LOG_FORMAT=json
```
---
## Устранение неполадок
### Проблемы подключения к Ghidra
```bash
# Verify plugin is loaded
# Open up codebrowser!
# Check server is running
curl http://localhost:8080/methods
```
### Проблемы подключения к Ollama
```bash
# Verify Ollama is running
ollama list
# Check connectivity
curl http://localhost:11434/api/tags
# Restart Ollama service
ollama serve
```
### Пустые ответы / Переполнение контекста
```env
# Reduce context budget
CONTEXT_BUDGET=50000
# Enable compaction
COMPACTION_ENABLED=true
COMPACTION_THRESHOLD=0.75
```
### Низкая производительность
1. **Используйте меньшие модели**: Переключитесь на `gemma3:9b`
2. **Уменьшите количество параллельных рабочих процессов**: Установите `max_workers=2` в пакетных операциях
3. **Отключите векторные эмбеддинги**: `RESULT_CACHE_ENABLED=false`
4. **Увеличьте задержку запросов**: `CUSTOM_API_REQUEST_DELAY=2.0`
---
## Обзор архитектуры
```
┌─────────────────────────────────────────────────────────────┐
│ OGhidra UI │
│ (GUI / Interactive CLI) │
└────────────────────────┬────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Bridge (src/bridge.py) │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ • Agentic Loop: Plan → Execute → Review → Replan │ │
│ │ • Tool Router: Ghidra client, LLM client, CAG manager │ │
│ │ • Context Manager: Budget allocation, compression │ │
│ └────────────────────────────────────────────────────────┘ │
└───────────┬────────────────────────┬────────────────────────┘
│ │
▼ ▼
┌───────────────────────┐ ┌─────────────────────────┐
│ Ghidra Client │ │ LLM Clients │
│ • GhidraMCP Plugin │ │ • Ollama (local) │
│ • Binary operations │ │ • External APIs │
│ • Decompilation │ │ • Custom endpoints │
└───────────────────────┘ └─────────────────────────┘
│ │
└────────────┬───────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ CAG Manager (Knowledge System) │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ • Vector Store: Semantic search over functions │ │
│ │ • Pattern Detector: 12+ malware techniques │ │
│ │ • Metadata Extractor: Structured function analysis │ │
│ │ • Session Store: Persistent analysis state │ │
│ └────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
---
## Вклад в проект
Мы приветствуем вклад! Интересующие области:
- **Новые вредоносные шаблоны** для обнаружения
- **Интеграции поставщиков LLM**
- **Улучшения UI/UX**
- **Оптимизация производительности**
- **Документация** и примеры
См. [CODE_OF_CONDUCT.md](https://github.com/llnl/oghidra/blob/main/CODE_OF_CONDUCT.md) для правил сообщества.
---
## Цитирование
Если вы используете OGhidra в своём исследовании, пожалуйста, цитируйте:
```bibtex
@software{oghidra2025,
title = {OGhidra: AI-Powered Reverse Engineering with Ghidra},
author = {Enoch Wang},
year = {2025},
url = {https://github.com/LLNL/OGhidra}
}
```
---
## Благодарности
OGhidra основан на отличных проектах с открытым исходным кодом:
- **[Ghidra](https://github.com/NationalSecurityAgency/ghidra)** — Платформа обратной разработки от АНБ
- **[Ollama](https://ollama.com/)** — Локальная среда выполнения LLM
- **[LaurieWired/GhidraMCP](https://github.com/LaurieWired/GhidraMCP)** — Исходный плагин Ghidra MCP
- **[starsong/GhydraMCP](https://github.com/starsong/GhydraMCP)** — Улучшенная реализация MCP
---
## Лицензия
OGhidra распространяется на условиях лицензии BSD 3-Clause с альтернативной коммерческой лицензией.
См. [LICENSE](https://github.com/llnl/oghidra/blob/main/LICENSE) и [NOTICE.md](https://github.com/llnl/oghidra/blob/main/NOTICE.md) для подробностей.
**LLNL-CODE-2013290**
---
## Поддержка
- **Проблемы**: [GitHub Issues](https://github.com/LLNL/OGhidra/issues)
- **Обсуждения**: [GitHub Discussions](https://github.com/LLNL/OGhidra/discussions)
- **Пишите мне напрямую**: [email protected]