GhidrAssist
Auteur : Jason Tang
Un plugin avancé alimenté par LLM pour l'assistance interactive en rétro-ingénierie dans Ghidra.
Description
GhidrAssist intègre les grands modèles de langage (LLM) dans Ghidra pour fournir une assistance intelligente pour l'exploration binaire et la rétro-ingénierie. Il prend en charge toute API compatible OpenAI v1, y compris les modèles locaux (Ollama, LM-Studio, Open-WebUI) et les fournisseurs cloud (OpenAI, Anthropic, Azure).
Fonctionnalités clés
Fonctionnalités principales :
- Explication de code - Explique les fonctions et instructions à la fois en désassemblage et en pseudo-C décompilé
- Panneau d'analyse de sécurité affichant le niveau de risque, le profil d'activité et l'utilisation de l'API
- Résumés modifiables avec protection contre l'écrasement automatique
- Chat interactif - Requêtes conversationnelles multi-tours avec historique persistant
- Requêtes personnalisées - Requêtes directes au LLM avec contexte facultatif de la fonction/emplacement actuel
Système de connaissances Graph-RAG :
- Graphe de connaissances sémantique - Représentation hiérarchique de l'analyse binaire
- Hiérarchie sémantique à 5 niveaux : Déclaration → Bloc → Fonction → Module → Binaire
- Les résumés pré-calculés par LLM permettent des requêtes rapides sans LLM
- Persistance SQLite avec algorithmes de graphe JGraphT
- Recherche en texte intégral (FTS5) sur les résumés et annotations de sécurité
- Détection de communautés - Découverte automatique de modules via l'algorithme de Leiden
- Regroupe les fonctions connexes en modules logiques
- Structure de communauté hiérarchique avec résumés
- Exploration visuelle du graphe avec profondeur configurable
- Extraction de caractéristiques de sécurité - Analyse de sécurité complète
- API réseau : sockets POSIX, WinSock, DNS, SSL/TLS, WinHTTP, WinINet
- API d'E/S fichier : POSIX, Windows, fonctions de la bibliothèque C
- API de chiffrement : OpenSSL, Windows crypto, spécifiques à la plateforme
- Motifs de chaînes : adresses IP, URL, domaines, chemins de fichiers, clés de registre
- Classification du niveau de risque (FAIBLE/MOYEN/ÉLEVÉ) et profilage d'activité
- Onglet Graphe sémantique - Interface de graphe de connaissances visuelle
- Vue graphe avec exploration en profondeur N-sauts
- Vue liste de toutes les fonctions indexées
- Recherche sémantique dans les résumés
- Ré-indexation et analyse de sécurité en un clic
Fonctionnalités avancées :
- Contrôle de la réflexion/raisonnement étendu - Ajuster la profondeur de raisonnement du LLM pour équilibrer qualité et vitesse
- Prise en charge d'OpenAI o1/o3/o4, Claude avec réflexion étendue, et modèles de raisonnement locaux
- Niveaux d'effort configurables : Faible (rapide), Moyen (équilibré), Élevé (approfondi)
- Persistance par programme - différents binaires peuvent utiliser différents niveaux de raisonnement
- Implémentation agnostique au fournisseur (Anthropic, OpenAI, Azure, LiteLLM, LMStudio, Ollama)
- Mode agentique ReAct - Investigation autonome utilisant un raisonnement structuré (Penser-Agir-Observer)
- Le LLM propose des étapes d'investigation basées sur votre requête
- Exécution systématique d'outils avec suivi de progression via des listes de tâches
- Préservation de l'historique des itérations montrant toutes les étapes d'investigation
- Synthèse finale avec réponse complète et conclusions clés
- Métriques précises (itérations, appels d'outils, durée)
- Intégration MCP - Client du protocole de contexte de modèle pour l'analyse basée sur des outils
- Fonctionne avec GhidrAssistMCP pour les outils spécifiques à Ghidra
- Appel d'outil conversationnel avec exécution automatique de fonctions
- Prise en charge du transport SSE (Server-Sent Events)
- Appel de fonctions - Le LLM peut naviguer de manière autonome dans les binaires et modifier l'analyse
- Renommer les fonctions et variables
- Naviguer vers les adresses et références croisées
- Exécuter des commandes Ghidra
- Onglet Actions - Proposer et appliquer des améliorations d'analyse en masse
- Détection de vulnérabilités de sécurité
- Analyse de la qualité du code
- Suggestions de refactorisation automatisée
- RAG (Génération augmentée par récupération) - Améliorer les requêtes avec des documents contextuels
- Ajouter une documentation personnalisée, des notes d'exploit, des références d'architecture
- Recherche en texte intégral basée sur Lucene
- Injection de contexte dans les requêtes
- Génération de jeu de données RLHF - Recueillir des commentaires pour le réglage fin du modèle
Architecture
Le plugin utilise une architecture modulaire orientée services :
Services de base :
- Modes de requête : Requêtes classiques, requêtes améliorées par MCP, ou investigation agentique complète
- Orchestrateur ReAct : Gère les boucles d'investigation autonomes avec suivi des tâches et accumulation des résultats
- Gestionnaire d'outils conversationnel : Gère les sessions d'appel d'outils multi-tours
- MCPToolManager : Interface avec les serveurs MCP externes pour des outils spécialisés
Backend Graph-RAG :
- BinaryKnowledgeGraph : Stockage hybride SQLite + JGraphT pour les connaissances sémantiques
- GraphRAGEngine : Moteur de requêtes sans LLM utilisant des résumés pré-calculés
- SemanticExtractor : Résumé de fonctions alimenté par LLM avec traitement par lots
- SecurityFeatureExtractor : Analyse statique pour les API réseau, E/S fichier et chiffrement
- CommunityDetector : Implémentation de l'algorithme de Leiden pour la découverte de modules
Couche de données :
- AnalysisDB : Base de données SQLite pour l'historique des chats, les retours RLHF et les graphes de connaissances
- SchemaMigrationRunner : Migrations de base de données versionnées pour des mises à niveau transparentes
- RAGEngine : Recherche de documents basée sur Lucene pour l'injection de contexte personnalisé
Composants d'interface utilisateur :
- Interface basée sur des onglets : Explication, Requête, Actions, Graphe sémantique, Gestion RAG, Serveurs MCP
- Orchestration des services via TabController
Feuille de route future :
- Réglage fin du modèle à l'aide du jeu de données RLHF collecté
- Intégrations d'outils MCP supplémentaires
- Capacités agentiques améliorées, collaboration multi-agent
- Recherche de similarité basée sur des embeddings
Captures d'écran
Screenshot
https://github.com/user-attachments/assets/bd79474a-c82f-4083-b432-96625fef1387
Démarrage rapide
- Si nécessaire, copiez l'archive ZIP de la version binaire dans le répertoire Ghidra_Install/Extensions/Ghidra.
- Lancez Ghidra -> Fichier -> Installer l'extension -> Activer GhidrAssist.
- Chargez un binaire et lancez le CodeBrowser.
- CodeBrowser -> Fichier -> Configurer -> Divers -> Activer GhidrAssist.
- CodeBrowser -> Fenêtre -> GhidraAssistPlugin.
- Assurez-vous que les chemins des bases de données RLHF et RAG sont appropriés pour votre environnement.
- Pointez l'hôte API vers votre fournisseur d'API préféré et définissez la clé API.
- (Facultatif) Dans l'onglet Options d'analyse, définissez le niveau d'effort de raisonnement (Aucun/Faible/Moyen/Élevé) pour les modèles prenant en charge la réflexion étendue.
- Ouvrez GhidrAssist avec l'option GhidrAssist dans le menu Fenêtres et commencez à explorer.
Configuration du LLM
GhidrAssist fonctionne avec toute API compatible OpenAI v1. Les détails de configuration sont spécifiques au fournisseur - voici quelques ressources utiles :