
Utilisez le décompilateur IDA PRO HexRays avec OpenAI(ChatGPT) pour trouver d'éventuelles vulnérabilités dans les binaires
Un plugin IDA Pro pour aider à trouver des vulnérabilités dans les binaires.
Utilisez le décompilateur HexRays d'IDA Pro avec OpenAI(ChatGPT) pour trouver d'éventuelles vulnérabilités dans les binaires.
Avertissement : les réponses obtenues en cherchant des vulnérabilités dans les binaires à l'aide d'une IA peuvent contenir des faux positifs. Cependant, cela a fonctionné dans de nombreux CTF auxquels j'ai participé (simple/moyen... certains difficiles).
Placez le script Python dans le répertoire des plugins d'IDA Pro.
Faites un clic droit sur le code décompilé, sélectionnez « Rechercher une vulnérabilité possible dans la fonction »




BinAIVulHunter est un plugin avancé pour IDA Pro qui exploite plusieurs fournisseurs d'IA (OpenAI GPT, Google Gemini et Ollama) pour effectuer une analyse intelligente des vulnérabilités, une explication du code et une évaluation de la sécurité des fonctions décompilées.
Télécharger le plugin :
# Save BinAIVulHunter.py to your IDA Pro plugins directory
# Typically: C:\Program Files\IDA Pro X.X\plugins\
Installer les dépendances de base :
pip install psutil
Installer les bibliothèques des fournisseurs d'IA (choisissez-en une ou plusieurs) :
# For OpenAI
pip install openai
# For Google Gemini
pip install google-generativeai
# For Ollama (local AI)
pip install requests
Redémarrer IDA Pro pour charger le plugin
Obtenir une clé API :
Définir la variable d'environnement :
# Windows Command Prompt
set OPENAI_API_KEY=sk-your-openai-key-here
# PowerShell
$env:OPENAI_API_KEY="sk-your-openai-key-here"
# Linux/Mac
export OPENAI_API_KEY="sk-your-openai-key-here"
Redémarrer IDA Pro
Obtenir une clé API :
Définir la variable d'environnement :
# Windows Command Prompt
set GEMINI_API_KEY=your-gemini-key-here
# PowerShell
$env:GEMINI_API_KEY="your-gemini-key-here"
# Linux/Mac
export GEMINI_API_KEY="your-gemini-key-here"
Redémarrer IDA Pro
Installer Ollama :
# Linux
curl -fsSL https://ollama.ai/install.sh | sh
# macOS
brew install ollama
Démarrer le service Ollama :
ollama serve
Télécharger les modèles d'IA :
# For general code analysis
ollama pull llama2
# For coding tasks (recommended)
ollama pull codellama
# Other specialized models
ollama pull mistral
ollama pull deepseek-coder
Variables d'environnement facultatives :
# Custom Ollama server (if not localhost:11434)
set OLLAMA_BASE_URL=http://your-server:11434
# Set default model
set OLLAMA_MODEL=codellama
Définissez votre fournisseur d'IA préféré :
# Use OpenAI (default)
set VULCHAT_PROVIDER=openai
# Use Google Gemini
set VULCHAT_PROVIDER=gemini
# Use Ollama (local)
set VULCHAT_PROVIDER=ollama
Edit → VulChatFaites un clic droit dans la vue du décompilateur pour accéder à :
Accessible via Edit → VulChat → Control Panel ou Ctrl+Alt+P :
Pour l'analyse automatisée et l'intégration CI/CD :
# Scan all functions for vulnerabilities
ida64.exe -A -S"BinAIVulHunter.py --scan-all --output results.json" binary.exe
# Decompile all functions with caching
ida64.exe -A -S"BinAIVulHunter.py --decompile-all --cache-dir ./cache" binary.exe
# Custom batch settings
ida64.exe -A -S"BinAIVulHunter.py --scan-all --batch-size 5 --function-pause 3 --batch-pause 15" binary.exe
BinAIVulHunter analyse le code selon la taxonomie CWE-699 du développement logiciel :
# Navigate to a function in IDA Pro
# Press Ctrl+Alt+V or right-click → "Find Possible Vulnerability"
# Example output:
"""
POTENTIAL VULNERABILITIES:
1. Buffer overflow in strcpy operation
CWE: CWE-120 | Severity: High
Mitigation: Replace strcpy with strncpy and validate buffer sizes
2. Integer overflow in arithmetic operation
CWE: CWE-190 | Severity: Medium
Mitigation: Add overflow checks before arithmetic operations
"""
# Command line batch scan
ida64.exe -A -S"BinAIVulHunter.py --scan-all --output vuln_report.json" malware.exe
# Results in vuln_report.json:
{
"scan_results": {
"total_functions": 245,
"vulnerable_functions": 12,
"functions": [
{
"name": "sub_401000",
"address": "0x401000",
"vulnerabilities": [
{
"description": "Unsafe string function used",
"cwe_id": "CWE-120",
"severity": "High",
"mitigation": "Use safe string functions"
}
]
}
]
}
}
# Set environment variables
os.environ['VULCHAT_PROVIDER'] = 'ollama'
os.environ['OLLAMA_MODEL'] = 'codellama'
# Or use Control Panel in IDA Pro:
# Edit → VulChat → Control Panel → Provider Menu → Ollama
Erreur « Fournisseur non disponible » :
# Check environment variables
echo %OPENAI_API_KEY%
echo %GEMINI_API_KEY%
# Verify API keys are valid
# Restart IDA Pro after setting variables
Échec de connexion à Ollama :
# Check if Ollama is running
curl http://localhost:11434/api/tags
# Start Ollama if needed
ollama serve
# Verify models are installed
ollama list
Problèmes de mémoire lors du traitement par lots :
# Reduce batch size in Control Panel or headless mode
--batch-size 1 --function-pause 10
Limites de débit de l'API :
# Increase pause times
--function-pause 10 --batch-pause 30
# Or switch to Ollama for unlimited local processing
Consultez la fenêtre de sortie d'IDA Pro pour obtenir des journaux détaillés :
Nous accueillons volontiers les contributions ! Veuillez consulter nos Directives de contribution pour plus de détails.
git clone https://github.com/yourusername/BinAIVulHunter.git
pip install -e .[dev]
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
⚠️ Avertissement : Cet outil est destiné uniquement à la recherche éducative et légitime en matière de sécurité. Assurez-vous toujours d'avoir l'autorisation appropriée avant d'analyser un logiciel. L'analyse générée par l'IA doit être vérifiée manuellement et ne remplace pas l'examen par un expert humain.
| Variable | Description | Défaut | Requis |
|---|
OPENAI_API_KEY | Clé API OpenAI | Aucune | Pour OpenAI |
GEMINI_API_KEY | Clé API Google Gemini | Aucune | Pour Gemini |
OLLAMA_BASE_URL | URL du serveur Ollama | http://localhost:11434 | Non |
OLLAMA_MODEL | Modèle Ollama par défaut | llama2 | Non |
VULCHAT_PROVIDER | Fournisseur d'IA à utiliser | openai | Non |
VULCHAT_MODEL | Nom du modèle spécifique | Défaut du fournisseur | Non |
OPENAI_BASE_URL | Point de terminaison OpenAI personnalisé | API officielle | Non |
| Raccourci | Action |
|---|
Ctrl+Alt+V | Rechercher des vulnérabilités |
Ctrl+Alt+G | Expliquer la fonction |
Ctrl+Alt+R | Renommer les variables |
Ctrl+Alt+X | Générer des entrées de test |
Ctrl+Alt+S | Analyser toutes les fonctions |
Ctrl+Alt+W | Recherche de référence CWE |
Ctrl+Alt+P | Panneau de contrôle |
Ctrl+F5 | Décompiler toutes les fonctions |
| Paramètre | Description | Défaut |
|---|
--scan-all | Analyser toutes les fonctions à la recherche de vulnérabilités | - |
--decompile-all | Décompiler toutes les fonctions | - |
--batch-size | Fonctions par lot | 3 |
--function-pause | Pause entre les fonctions (secondes) | 5 |
--batch-pause | Pause entre les lots (secondes) | 10 |
--output | Fichier de sortie JSON pour les résultats | Aucun |
--cache-dir | Répertoire pour le cache de décompilation | Aucun |
| Catégorie | ID CWE | Exemples |
|---|
| Erreurs de mémoire tampon | CWE-1218 | Dépassements de tampon, utilisation après libération |
| Erreurs numériques | CWE-189 | Dépassement d'entier, division par zéro |
| Gestion des ressources | CWE-399 | Fuites de mémoire, fuites de descripteurs de fichiers |
| Validation des données | CWE-1215 | Validation des entrées, failles d'injection |
| Authentification | CWE-1211 | Authentification faible, contournement |
| Autorisation | CWE-1212 | Élévation de privilèges, contrôle d'accès |
| Problèmes cryptographiques | CWE-310 | Cryptographie faible, gestion des clés |
| Fuites d'informations | CWE-199 | Exposition de données, canaux auxiliaires |
| Gestion des erreurs | CWE-389 | Exceptions non interceptées, états d'erreur |
| Initialisation | CWE-452 | Variables non initialisées, nettoyage |
| Fournisseur | Modèle | Idéal pour | Coût |
|---|
| OpenAI | gpt-4 | Analyse complète | $$$ |
| OpenAI | gpt-3.5-turbo | Analyse générale rapide | $$ |
| Gemini | gemini-pro | Performances équilibrées | $$ |
| Ollama | codellama | Analyse axée sur le code | Gratuit |
| Ollama | deepseek-coder | Détection de vulnérabilités | Gratuit |
| Ollama | llama2 | Usage général | Gratuit |
| Fournisseur | Vitesse | Précision | Confidentialité | Coût |
|---|
| OpenAI GPT-4 | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐ |
| Gemini Pro | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
| Ollama | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |