GhidrAssist
Autor: Jason Tang
Ein fortschrittliches, auf LLMs basierendes Plugin für interaktive Reverse-Engineering-Unterstützung in Ghidra.
Beschreibung
GhidrAssist integriert Large Language Models (LLMs) in Ghidra, um intelligente Unterstützung für die Binärerkundung und das Reverse Engineering zu bieten. Es unterstützt jede OpenAI v1-kompatible API, einschließlich lokaler Modelle (Ollama, LM-Studio, Open-WebUI) und Cloud-Anbieter (OpenAI, Anthropic, Azure).
Hauptfunktionen
Kernfunktionen:
- Code-Erklärung – Erklärt Funktionen und Anweisungen sowohl in der Disassemblierung als auch im dekompilierten Pseudo-C
- Sicherheitsanalyse-Panel mit Anzeige von Risikostufe, Aktivitätsprofil und API-Nutzung
- Bearbeitbare Zusammenfassungen mit Schutz vor automatischer Überschreibung durch Benutzerbearbeitung
- Interaktiver Chat – Mehrschrittige konversationelle Abfragen mit persistentem Chat-Verlauf
- Benutzerdefinierte Abfragen – Direkte LLM-Abfragen mit optionalem Kontext aus aktueller Funktion/Position
Graph-RAG-Wissenssystem:
- Semantischer Wissensgraph – Hierarchische Darstellung der Binäranalyse
- 5-stufige semantische Hierarchie: Anweisung → Block → Funktion → Modul → Binärdatei
- Vorberechnete LLM-Zusammenfassungen ermöglichen schnelle, LLM-freie Abfragen
- SQLite-Persistenz mit JGraphT-Graphalgorithmen
- Volltextsuche (FTS5) in Zusammenfassungen und Sicherheitsannotierungen
- Community-Erkennung – Automatische Modulerkennung mittels Leiden-Algorithmus
- Gruppiert verwandte Funktionen in logische Module
- Hierarchische Community-Struktur mit Zusammenfassungen
- Visuelle Grapherkundung mit konfigurierbarer Tiefe
- Sicherheitsmerkmal-Extraktion – Umfassende Sicherheitsanalyse
- Netzwerk-APIs: POSIX-Sockets, WinSock, DNS, SSL/TLS, WinHTTP, WinINet
- Datei-I/O-APIs: POSIX, Windows, C-Bibliotheksfunktionen
- Crypto-APIs: OpenSSL, Windows-Crypto, plattformspezifisch
- Zeichenkettenmuster: IP-Adressen, URLs, Domains, Dateipfade, Registrierungsschlüssel
- Risikostufenklassifizierung (NIEDRIG/MITTEL/HOCH) und Aktivitätsprofilierung
- Semantischer Graph-Tab – Visuelle Wissensgraph-Oberfläche
- Graphenansicht mit N-Hop-Tiefenerkundung
- Listenansicht aller indizierten Funktionen
- Semantische Suche über Zusammenfassungen
- Ein-Klick-Neuindizierung und Sicherheitsanalyse
Erweiterte Fähigkeiten:
- Erweitertes Denken/Argumentationskontrolle – Passt die LLM-Schlussfolgerungstiefe für Qualitäts- vs. Geschwindigkeitsabwägungen an
- Unterstützung für OpenAI o1/o3/o4, Claude mit erweitertem Denken und lokale Reasoning-Modelle
- Konfigurierbare Anstrengungsstufen: Niedrig (schnell), Mittel (ausgewogen), Hoch (gründlich)
- Pro-Programm-Persistenz – verschiedene Binärdateien können unterschiedliche Reasoning-Stufen verwenden
- Anbieterunabhängige Implementierung (Anthropic, OpenAI, Azure, LiteLLM, LMStudio, Ollama)
- ReAct-Agenten-Modus – Autonome Untersuchung mittels strukturiertem Denken (Denken-Handeln-Beobachten)
- LLM schlägt auf Grundlage Ihrer Abfrage Untersuchungsschritte vor
- Systematische Tool-Ausführung mit Fortschrittsverfolgung über Aufgabenlisten
- Iterationsverlauf wird gespeichert und zeigt alle Untersuchungsschritte
- Abschließende Synthese mit umfassender Antwort und wichtigsten Erkenntnissen
- Genaue Metriken (Iterationen, Tool-Aufrufe, Dauer)
- MCP-Integration – Model Context Protocol-Client für toolbasierte Analyse
- Arbeitet mit GhidrAssistMCP für Ghidra-spezifische Tools
- Konversationeller Tool-Aufruf mit automatischer Funktionsausführung
- Unterstützung für SSE (Server-Sent Events) Transport
- Function Calling – LLM kann Binärdateien autonom navigieren und Analysen ändern
- Funktionen und Variablen umbenennen
- Zu Adressen und Querverweisen navigieren
- Ghidra-Befehle ausführen
- Aktionen-Tab – Massenanalyseverbesserungen vorschlagen und anwenden
- Erkennung von Sicherheitslücken
- Codequalitätsanalyse
- Automatisierte Refactoring-Vorschläge
- RAG (Retrieval Augmented Generation) – Verbessert Abfragen mit kontextuellen Dokumenten
- Benutzerdefinierte Dokumentation, Exploit-Notizen, Architekturverweise hinzufügen
- Lucene-basierte Volltextsuche
- Kontextinjektion in Abfragen
- RLHF-Datensatzgenerierung – Feedback für Modell-Feinabstimmung sammeln
Architektur
Das Plugin verwendet eine modulare, serviceorientierte Architektur:
Kernservices:
- Abfragemodi: Reguläre Abfragen, MCP-verbesserte Abfragen oder vollständige agentische Untersuchung
- ReAct-Orchestrator: Verwaltet autonome Untersuchungsschleifen mit Aufgabenverfolgung und Ergebnissammlung
- Konversationeller Tool-Handler: Verwaltet mehrschrittige Tool-Aufrufsitzungen
- MCPToolManager: Schnittstelle zu externen MCP-Servern für spezialisierte Tools
Graph-RAG-Backend:
- BinaryKnowledgeGraph: Hybride SQLite + JGraphT-Speicherung für semantisches Wissen
- GraphRAGEngine: LLM-freie Abfrage-Engine unter Verwendung vorberechneter Zusammenfassungen
- SemanticExtractor: LLM-gestützte Funktionszusammenfassung mit Stapelverarbeitung
- SecurityFeatureExtractor: Statische Analyse für Netzwerk-, Datei-I/O- und Crypto-APIs
- CommunityDetector: Implementierung des Leiden-Algorithmus für Modulerkennung
Datenschicht:
- AnalysisDB: SQLite-Datenbank für Chat-Verlauf, RLHF-Feedback und Wissensgraphen
- SchemaMigrationRunner: Versionierte Datenbankmigrationen für transparente Upgrades
- RAGEngine: Lucene-gestützte Dokumentsuche für benutzerdefinierte Kontextinjektion
UI-Komponenten:
- Tab-basierte Oberfläche: Erklären, Abfrage, Aktionen, Semantischer Graph, RAG-Verwaltung, MCP-Server
- Service-Orchestrierung über TabController
Zukünftige Roadmap:
- Modell-Feinabstimmung unter Verwendung des gesammelten RLHF-Datensatzes
- Zusätzliche MCP-Tool-Integrationen
- Erweiterte agentische Fähigkeiten, Multi-Agenten-Kollaboration
- Einbettungsbasierte Ähnlichkeitssuche
Bildschirmfotos
Screenshot
https://github.com/user-attachments/assets/bd79474a-c82f-4083-b432-96625fef1387
Schnellstart
- Kopieren Sie bei Bedarf das binäre Release-ZIP-Archiv in das Verzeichnis Ghidra_Install/Extensions/Ghidra.
- Starten Sie Ghidra -> Datei -> Erweiterung installieren -> GhidrAssist aktivieren.
- Laden Sie eine Binärdatei und starten Sie den CodeBrowser.
- CodeBrowser -> Datei -> Konfigurieren -> Sonstiges -> GhidrAssist aktivieren.
- CodeBrowser -> Fenster -> GhidraAssistPlugin.
- Stellen Sie sicher, dass die RLHF- und RAG-Datenbankpfade für Ihre Umgebung geeignet sind.
- Geben Sie den API-Host für Ihren bevorzugten API-Anbieter an und setzen Sie den API-Schlüssel.
- (Optional) Setzen Sie im Tab „Analyseoptionen“ die Reasoning-Anstrengungsstufe (Keine/Niedrig/Mittel/Hoch) für Modelle, die erweitertes Denken unterstützen.
- Öffnen Sie GhidrAssist über die Option GhidrAssist im Fenstermenü und beginnen Sie mit der Erkundung.
LLM-Einrichtung
GhidrAssist funktioniert mit jeder OpenAI v1-kompatiblen API. Die Einrichtungsdetails sind anbieterspezifisch – hier sind einige hilfreiche Ressourcen:
Lokale LLM-Anbieter:
- LM Studio – Einfaches lokales Hosting von Modellen mit GUI
- Ollama – Kommandozeilenbasierte lokale Modellverwaltung
- Open-WebUI – Weboberfläche für lokale Modelle
Cloud-Anbieter: