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
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
Hoch: Tiefgehende Sicherheitsanalyse (~30-60s, 2-fache Kosten, empfohlen für die Jagd nach Schwachstellen)
Hinweis: Der Agentenmodus erfordert Modelle mit starken Funktionen zum Aufrufen von Funktionen und mehrschrittigen Argumentationsfähigkeiten. Kleinere Modelle könnten bei komplexen Untersuchungen Schwierigkeiten haben. Erweitertes Denken ist optional, kann aber die Analysequalität für komplexe Reverse-Engineering-Aufgaben erheblich verbessern.
Verwenden von GhidrAssistMCP für toolbasierte Analyse
GhidrAssistMCP bietet MCP-Tools, die es dem LLM ermöglichen, direkt mit Ghidras Analysefähigkeiten zu interagieren.
Einrichtung
Starten Sie den MCP-Server
Konfigurieren Sie GhidrAssist:
Öffnen Sie Tools → GhidrAssist-Einstellungen → Tab MCP-Server
Fügen Sie Server hinzu: http://127.0.0.1:8081 als GhidrAssistMCP mit Transporttyp SSE
Aktivieren Sie MCP in Abfragen:
Aktivieren Sie im Tab „Benutzerdefinierte Abfrage“ das Kontrollkästchen „MCP verwenden“
Aktivieren Sie optional „Agentisch“ für den autonomen Untersuchungsmodus
Verwendungsmodi
Reguläre MCP-Abfragen:
Aktivieren Sie das Kontrollkästchen „MCP verwenden“
Stellen Sie Fragen wie „Was macht die aktuelle Funktion?“
Das LLM kann Tools aufrufen, um Dekompilierung, Querverweise usw. zu erhalten
Agentenmodus (empfohlen):
Aktivieren Sie beide Kontrollkästchen „MCP verwenden“ und „Agentisch“
Stellen Sie komplexe Fragen wie „Finde Schwachstellen in dieser Funktion“ oder „Analysiere den Aufrufgraph“
Der ReAct-Agent wird:
Untersuchungsschritte als Aufgabenliste vorschlagen
Systematisch Tools ausführen, um Informationen zu sammeln
Fortschritt verfolgen und Ergebnisse sammeln
Eine umfassende Antwort mit Beweisen synthetisieren
Beispielabfragen:
„Welche Sicherheitslücken gibt es in dieser Funktion?“
„Verfolge den Datenfluss von der Benutzereingabe zu diesem Aufruf“
„Finde alle Funktionen, die die globale Variable X ändern“
„Analysiere die Fehlerbehandlung in der aktuellen Funktion“
Verwenden des semantischen Graphen (Graph-RAG)
Der Tab „Semantischer Graph“ bietet eine Wissensgraph-Oberfläche zum Erkunden von Binäranalysenergebnissen, ohne dass für jede Abfrage LLM-Aufrufe erforderlich sind.
Erste Schritte
Indizieren Sie die Binärdatei:
Öffnen Sie den Tab „Semantischer Graph“
Klicken Sie auf „Binärdatei neu indizieren“, um strukturelle Beziehungen zu extrahieren
Klicken Sie auf „Semantische Analyse“, um LLM-Zusammenfassungen zu generieren (erfordert API)
Der Fortschritt wird in der Statusleiste angezeigt
Erkunden Sie den Graphen:
Listenansicht: Durchsuchen Sie alle indizierten Funktionen mit Zusammenfassungen und Sicherheitsflags
Graphenansicht: Visualisieren Sie Aufrufbeziehungen mit konfigurierbarer N-Hop-Tiefe
Suchansicht: Volltextsuche über Zusammenfassungen und Sicherheitsannotierungen
Sicherheitsanalyse:
Klicken Sie auf „Sicherheitsanalyse“, um nach sicherheitsrelevanten Merkmalen zu suchen