OGhidra relie les grands modèles de langage (LLM) via Ollama à la plateforme de rétro-ingénierie Ghidra, permettant une analyse binaire pilotée par l'IA grâce au langage naturel. Interagissez avec Ghidra à l'aide de requêtes conversationnelles et automatisez des flux de travail complexes de rétro-ingénierie.
Pour la version utilisant un orchestrateur inspiré de Claude, voir https://github.com/llnl/OGhidra/tree/orchestrator
OGhidra fait le pont entre les grands modèles de langage et la plateforme de rétro-ingénierie de Ghidra, permettant une analyse binaire pilotée par l'IA en langage naturel. Analysez les binaires de manière conversationnelle, automatisez des flux de travail complexes et préservez une confidentialité totale grâce aux modèles IA locaux.
Tutoriel de configuration YouTube
OGhidra améliore Ghidra avec des capacités d'IA, vous permettant de :
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:2pxAgentic Loop : OGhidra utilise un système de planification adaptatif. Après chaque cycle d'exécution, les résultats sont examinés et l'IA peut choisir de collecter davantage d'informations ou d'affiner son analyse avant de fournir la réponse finale.
python --versionjava -version# 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
Les étapes de compilation du plugin OGhidraMCP ci-dessous ciblent Ghidra 12.0.3 (recommandé). Il existe aussi un tutoriel vidéo YouTube : https://www.youtube.com/watch?v=hBD92FUgR0Y
En tant que développeur, vous devez compiler l'extension GhidraMCP avant de l'installer dans Ghidra :
Prérequis :
Option 1 : Utilisation des scripts de compilation automatisés :
Windows :
# 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 :
# 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
Option 2 : Compilation manuelle :
Créez/mettez à jour OGhidraMCP/gradle.properties avec votre chemin d'installation de Ghidra :
GHIDRA_INSTALL_DIR=/absolute/path/to/ghidra_12.0.3_PUBLIC
Sur Unix/Linux/macOS :
cd OGhidraMCP
$GHIDRA_INSTALL_DIR/support/gradle/gradlew buildExtension --info
Sur Windows :
cd OGhidraMCP
"%GHIDRA_INSTALL_DIR%\support\gradle\gradlew.bat" buildExtension --info
Localisez l'extension compilée :
OGhidraMCP/dist/ghidra_12.0.3_PUBLIC_YYYYMMDD_OGhidraMCP.zipUne fois l'extension compilée avec succès :
Installation dans Ghidra :
OGhidraMCP/dist/ghidra_12.0.3_PUBLIC_YYYYMMDD_OGhidraMCP.zip)Activation du plugin :
OGhidraMCPhttp://localhost:8080/methodsVOUS DEVEZ AVOIR LE CODE BROWSER OUVERT
# 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
# GUI Mode (recommended)
uv run main.py --ui
# Interactive CLI
uv run main.py --interactive
# In interactive CLI, test connection
health
Si vous avez lancé le mode GUI, utilisez :
curl http://localhost:8080/methods
Modifiez .env pour configurer votre fournisseur d'IA :
LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434/
OLLAMA_MODEL=gemma3:27b
OLLAMA_EMBEDDING_MODEL=nomic-embed-text
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
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
Ajustez selon la fenêtre de contexte de votre modèle :
# 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
Accès en un clic aux tâches courantes de rétro-ingénierie :
| Tool | Description |
|---|---|
| Analyze Current Function | Analyse approfondie du comportement de la fonction sélectionnée |
| Rename Current Function | L'IA suggère des noms pertinents en fonction de l'analyse |
| Rename All Functions | Renommage en masse avec les options Smart/Full/Rename-Only |
| Analyze Imports | Identifie les bibliothèques et les dépendances externes |
| Analyze Strings | Trouve les URL, identifiants et données de configuration |
| Generate Report | Évaluation complète de la sécurité |
Définissez des objectifs d'analyse spécialisés :
# 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
Détection automatique de plus de 12 motifs de malwares :
Les motifs déclenchent des alertes automatiques dans le contexte de l'IA avec des correspondances MITRE ATT&CK.
Construisez une base de connaissances riche et interrogeable à partir de l'analyse binaire :
# 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
Fonctionnalités :
Enregistrez et restaurez des sessions d'analyse :
# 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 prend en charge deux types de backend :
Utilisez l'option de ligne de commande suivante pour choisir un backend :
--ghidra-backend={http,pyghidra}
| Backend Option | Description |
|---|---|
http | Utilise le backend GhidraMCP |
pyghidra | Utilise le backend PyGhidra |
Spécifiez un fichier de projet Ghidra (.gpr) lors du lancement d'OGhidra :
--pyghidra-project=/path/to/project.gpr
PyGhidra nécessite un projet Ghidra valide pour lancer OGhidra.
Spécifiez quel binaire du projet Ghidra doit être analysé :
--pyghidra-program=<program_name>
exemple d'appel pour sélectionner un programme dans un projet Ghidra :
uv run main.py --ui --ghidra-backend=pyghidra --pyghidra-project=/path/to/project.gpr --pyghidra-program=<program_name>
Exigences :
Vous pouvez également fournir directement le chemin d'un binaire :
--pyghidra-binary=/path/to/binary
Lorsque cette option est utilisée, PyGhidra exécute automatiquement les opérations suivantes :
.gpr)exemple d'appel pour lancer un binaire directement :
uv run main.py --ui --ghidra-backend=pyghidra --pyghidra-binary=/path/to/binary
uv run main.py --ui# 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
OGhidra utilise des plongements vectoriels pour la recherche sémantique sur les fonctions analysées :
# Enable in .env
RESULT_CACHE_ENABLED=true
TIERED_CONTEXT_ENABLED=true
Avantages :
La compression de contexte par niveaux conserve les informations pertinentes :
CURRENT_LOOP_MAX_CHARS=2000 # Recent: full detail
PREV_LOOP_MAX_CHARS=400 # Previous: summaries
OLDER_LOOP_MAX_CHARS=100 # Older: references only
Suivez toutes les interactions IA pour le débogage :
LLM_LOGGING_ENABLED=true
LLM_LOG_FILE=logs/llm_interactions.log
LLM_LOG_FORMAT=json
# Verify plugin is loaded
# Open up codebrowser!
# Check server is running
curl http://localhost:8080/methods
# Verify Ollama is running
ollama list
# Check connectivity
curl http://localhost:11434/api/tags
# Restart Ollama service
ollama serve
# Reduce context budget
CONTEXT_BUDGET=50000
# Enable compaction
COMPACTION_ENABLED=true
COMPACTION_THRESHOLD=0.75
gemma3:9bmax_workers=2 dans les opérations en masseRESULT_CACHE_ENABLED=falseCUSTOM_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 │ │
│ └────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Nous accueillons volontiers les contributions ! Domaines d'intérêt :
Consultez CODE_OF_CONDUCT.md pour les directives de la communauté.
Si vous utilisez OGhidra dans vos recherches, veuillez citer :
@software{oghidra2025,
title = {OGhidra: AI-Powered Reverse Engineering with Ghidra},
author = {Enoch Wang},
year = {2025},
url = {https://github.com/LLNL/OGhidra}
}
OGhidra s'appuie sur d'excellents projets open-source :
OGhidra est distribué selon les termes de la licence BSD 3-Clause, avec une alternative de licence commerciale.
LLNL-CODE-2013290