Ghidra Downloadunabhängige Download- und Installationsanleitung
Deutsch
GHIDRA-SKRIPTING

Ghidra Script Manager: Java, Python und sichere Automatisierung

Der Ghidra Script Manager ist der schnellste Weg, kleine Automatisierungsaufgaben in einem Ghidra-Projekt zu finden, zu bearbeiten und auszuführen. Diese Anleitung erklärt den integrierten Ablauf, die aktuelle Python-Grenze, nützliche API-Muster und den Unterschied zwischen Script Manager und nativer CPython-Automatisierung mit PyGhidra.

Offizielle Ghidra-Scripting-Dokumentation öffnen
HauptintentionScript Manager
Aktuelle VersionGhidra 12.1.3
Geeignet fürKleine, wiederholbare Aufgaben
Python-GrenzePyGhidra für CPython
KURZE ANTWORT

Was der Ghidra Script Manager macht

Der Script Manager ist Ghidras integrierter Arbeitsbereich zum Suchen und Starten von Skripten. Er ist hilfreich, wenn dieselbe Prüfung oder Bereinigung in vielen Projekten vorkommt: passende Funktionen auflisten, Symbole einheitlich umbenennen, ausgewählte Daten exportieren, Kommentare ergänzen oder Belege für einen Bericht sammeln. Das Ergebnis bleibt eine normale Ghidra-Analyseaktion und sollte deshalb in CodeBrowser, Listing oder Decompiler überprüft werden.

Ein Skript ersetzt nicht das Verständnis des Binärprogramms. Behandle es als kleines, überprüfbares Experiment: Zielprojekt festlegen, die kleinste sinnvolle Änderung ausführen, bei schreibenden Aktionen eine Kopie anlegen und die Änderungen notieren. Das Ghidra-Tutorial für Einsteiger erklärt den statischen Analyseablauf; diese Seite konzentriert sich auf die Automatisierung darin.

Umfang und Berechtigung

Analysiere nur Dateien und Systeme, für die du eine ausdrückliche Berechtigung hast. Der Script Manager kann Projekte schnell verändern; teste deshalb zuerst mit einer Kopie.

  • Mit Ghidra gelieferte oder in Skriptverzeichnissen gespeicherte Skripte finden.
  • Ein Skript öffnen, Sprache und Imports prüfen und es auf dem aktiven Programm ausführen.
  • Programmmodell und Konsole für eine kleine, wiederholbare Änderung verwenden.
  • Script-Manager-Automatisierung von nativer CPython-Automatisierung mit PyGhidra trennen.
SCHRITT 1

Script Manager öffnen und ein Skript finden

Öffne ein Projekt und starte den Script Manager über die Ghidra-Werkzeugmenüs. Die genaue Position kann je nach Tool und Release leicht variieren; der Arbeitsbereich enthält jedoch eine Skriptliste, Filter oder Suche, einen Editor sowie Aktionen zum Ausführen und Aktualisieren. Wenn ein gerade kopiertes Skript fehlt, aktualisiere zuerst die Liste.

Beginne mit einem schreibgeschützten oder berichtenden Skript. Lies Kopfkommentare und Imports, bevor du Run auswählst. Ein guter Kopf beschreibt, ob ein Programm, eine Auswahl, die aktuelle Funktion oder ein bestimmter Prozessor benötigt wird.

  1. 1

    Übungsprojekt öffnen

    Erstelle ein nicht freigegebenes Projekt und importiere nur ein Binärprogramm, das du untersuchen darfst. Bewahre Originaldatei und Projektkopie unverändert auf.

    File > New Project > Non-Shared Project
  2. 2

    Script Manager starten

    Öffne den Scripting-Arbeitsbereich und grenze die Liste mit Filter oder Suche ein.

    Window > Script Manager
  3. 3

    Vor der Ausführung prüfen

    Kontrolliere Sprache, benötigten Kontext, Imports, Ausgabeziel sowie mögliche Änderungen an Symbolen, Kommentaren, Datentypen oder Speicher.

    Kopf und Imports zuerst lesen
  4. 4

    Ausführen und prüfen

    Führe das Skript einmal für ein kleines Ziel aus, lies die Konsole und prüfe den Programmzustand in Listing oder Decompiler.

    Run > Run Script
Offizielles Ghidra-Projektfenster vor dem Öffnen eines Script-Manager-Ablaufs
Projekt vor der Automatisierung anlegen und sichern. Offizieller Screenshot des Ghidra-Projektfensters.
SCHRITT 2

Ein kleines erstes Skript mit klarer Grenze schreiben

Das erste Skript sollte genau eine Frage beantworten: etwa Funktionen zählen, Namen mit einem Präfix ausgeben, definierte Strings auflisten oder die aktuelle Auswahl melden. Kombiniere Analyse, Umbenennung, Export und Bereinigung nicht im ersten Versuch. Ein eng begrenztes Skript lässt sich leichter prüfen und erneut ausführen.

Verwende das Programmmodell, das Ghidra den Skripten bereitstellt, statt die sichtbare Oberfläche auszulesen. Frage Funktionen, Symbole, Referenzen, Instruktionen oder Speicherblöcke ab und schreibe ein kurzes Ergebnis in die Konsole. Die GhidraScript-API-Referenz bestätigt aktuelle Methodennamen; alte Forenbeispiele sind nicht automatisch kompatibel.

Wenn ein Skript das Programm verändert, muss die Änderung in der Ausgabe erkennbar sein. Gib Zähler vor und nach der Aktion, Adresse oder Symbolname aus und stoppe bei einem unerwarteten Zustand. So bleibt auch ein Batch-Lauf nachvollziehbar.

Checkliste für das erste SkriptKontext lesen -> ein Objekt prüfen -> Ergebnis ausgeben -> nichts ändern -> wiederholen
Nützliche LaufnotizZiel: practice.bin | Umfang: aktuelles Programm | Schreibvorgänge: keine | Ergebnis: 12 Funktionen
Offizieller Ghidra CodeBrowser zur Prüfung eines Skriptergebnisses in Listing und Decompiler
Skriptausgabe im sichtbaren Analysebereich prüfen, nicht nur im Konsolentext. Offizieller CodeBrowser-Screenshot.
SPRACHWAHL

Java, Python und die Grenze von Ghidra 12.1.3

Suchanfragen vermischen Ghidra-Scripting, Ghidra-Skripte und Python für Ghidra, obwohl damit nicht immer dieselbe Laufzeit gemeint ist. Der Script Manager ist der Einstieg innerhalb der Anwendung. Java-Skripte sind für wiederverwendbare Automatisierung mit Ghidras Java-APIs meist die klarste Wahl. Python hängt dagegen davon ab, wie Ghidra gestartet wurde und welche Integration installiert ist.

Für native CPython-Automatisierung außerhalb des integrierten Script-Fensters nutze die PyGhidra-Installationsanleitung. PyGhidra verbindet einen externen CPython-Prozess mit Ghidras API, während ein Script-Manager-Skript im Anwendungskontext läuft.

Laufzeitfehler nicht mit einer Umschreibung verwechseln

Kläre zuerst, wo das Skript läuft: im integrierten Script Manager, in einem mit PyGhidra gestarteten Ghidra-Prozess oder in einem externen CPython-Prozess. Wähle danach die passende Dokumentation und Fehlersuche.

AnforderungZuerst verwendenWarum
Eine kleine Aktion in einem offenen ProjektScript ManagerSchnelles Feedback mit sichtbarem Kontext
Wiederverwendbare Java-API-AutomatisierungJava-SkriptPasst zum nativen API-Modell
Native CPython-PipelinePyGhidraFür einen externen Python-Prozess gedacht
Großer wiederholbarer BatchSkript mit ProtokollEingaben, Ausgaben und Fehler bleiben prüfbar
ARBEITSABLAUF

Nützliche Script-Manager-Muster für reale Projekte

Ein nützliches Skript besteht meist aus vier Teilen: Kontext herstellen, eine kleine Objektmenge auswählen, eine Aktion ausführen und das Ergebnis erklären. Der Kontext kann aktuelles Programm, Position, Auswahl oder Funktion sein. Die Auswahl sollte explizit sein, zum Beispiel über Namensfilter, Adressbereich, Speicherblock, Funktionseigenschaft oder Referenzen.

Strukturiere die Ausgabe so, dass zwei Läufe vergleichbar bleiben. Eine Zusammenfassung hilft, aber eine kurze Zeile pro Objekt mit Adresse oder Symbolname erleichtert die Fehlersuche. Bei langsamen Skripten zuerst eine Funktion oder einen Speicherblock testen und Fortschritt ausgeben.

  • Aktuelles Programm und aktuelle Position lesen, bevor globaler Zustand abgefragt wird.
  • Begrenzte Iteratoren oder Auswahlen statt unendlicher Scans verwenden.
  • Adressen, Symbole und Datentypen in Listing als Belege prüfen.
  • Schreibgeschützte Entdeckung von Schreiboperationen trennen.
  • Vor Massenumbenennungen, Typänderungen oder Kommentaren eine Kopie sichern.
Wiederholbares DenkmodellKontext -> Auswahl -> Aktion -> Beleg -> Rücksetzplan
FEHLERSUCHE

Häufige Ghidra-Scripting-Probleme lösen

Wenn ein Skript fehlschlägt, sichere zuerst die exakte Meldung und den Laufzeitkontext. Notiere Ghidra-Version, Betriebssystem, Skriptsprache, geöffnetes Programm, Auswahl und Startart des Prozesses. So wird nicht versehentlich eine PyGhidra-Lösung auf ein Script-Manager-Problem angewendet.

Prüfe außerdem den kleinsten Fall, der den Fehler reproduziert. Ein Fehler bei einem bestimmten Prozessor, einer beschädigten Funktion oder einer leeren Auswahl braucht meist eine Grenzprüfung statt einer kompletten Neufassung.

Fehlerbelege aufbewahren

Speichere vollständigen Fehlertext, kleinste reproduzierbare Datei oder Projektkopie und die Skriptversion. Unbekannte Binärdateien oder vertrauliche Analysedaten gehören nicht in ein öffentliches Issue.

SymptomZuerst prüfenSicherer nächster Schritt
Skript wird nicht angezeigtAktualisierung, Pfad, Endung und SkriptverzeichnisseListe neu laden und Datei direkt öffnen, falls möglich
Python nicht verfügbarStartart von Ghidra und PyGhidra-KonfigurationJava verwenden oder der PyGhidra-Grenze folgen
Kein Programm oder keine AuswahlAktives Tool, Projekt, Programm und AuswahlProgramm öffnen und einen Ein-Funktions-Fall testen
Ausgabe wirkt falschArchitektur, Adressen, Listing und DatentypenAnnahme in CodeBrowser prüfen, bevor das Skript geändert wird
CHECKLISTE

Ein sicherer, wiederholbarer Scripting-Ablauf

Für eine einmalige Aufgabe reicht ein kurzer Ablauf. Für Teams oder wiederholte Untersuchungen sollten Eingabe, erwartetes Ergebnis, Skriptversion, Ghidra-Version und Schreibverhalten dokumentiert werden. Die Decompiler-Anleitung hilft bei der Ergebnisprüfung; die Installationsanleitung trennt Anwendung, JDK, Projekte und Sicherungen.

Beginne mit schreibgeschützter Ausgabe, vergleiche sie mit Listing und aktiviere Änderungen erst danach. Halte Vorher-/Nachher-Zähler und einen Rücksetz- oder Kopieplan fest. Wird das Skript zu einem System mit externen Eingaben und CPython-Abhängigkeit, ist PyGhidra oder ein eigener Harness oft passender.

  1. 1

    Vorbereiten

    Ghidra-Version festlegen, Projektkopie öffnen und den Umfang notieren.

    Version + Eingabe + Umfang
  2. 2

    Beobachten

    Ein schreibgeschütztes Skript ausführen und eine kleine, adressbezogene Ausgabe sichern.

    zuerst nur lesen
  3. 3

    Ändern

    Eine kontrollierte Änderung durchführen, den Zähler ausgeben und das Ergebnis in den Analyseansichten prüfen.

    eine Aktion + Beleg
  4. 4

    Bewahren

    Skript, Notizen, Ausgabe und Projektkopie speichern, damit der Lauf verglichen oder zurückgesetzt werden kann.

    Skript + Protokoll + Kopie
HÄUFIGE FRAGEN

Fragen zum Ghidra Script Manager

Was ist der Ghidra Script Manager?

Er ist Ghidras integrierter Arbeitsbereich zum Finden, Bearbeiten und Ausführen von Skripten für das aktive Projekt oder Programm. Er eignet sich für kleine, prüfbare Automatisierung und ist nicht dasselbe wie ein externer CPython-Prozess.

Kann ich Python im Ghidra Script Manager verwenden?

Die Python-Verfügbarkeit hängt von Laufzeit und Startkonfiguration ab. Wenn Ghidra Python nicht verfügbar meldet, ist das nicht automatisch ein Fehler in der Skriptlogik. Verwende Java für integrierte Automatisierung oder PyGhidra für CPython.

Ist Ghidra-Scripting dasselbe wie PyGhidra?

Nein. Der Script Manager läuft innerhalb von Ghidra, während PyGhidra einen nativen CPython-Prozess mit Ghidras API verbindet. Installation und Fehlersuche unterscheiden sich.

Warum fehlt mein Skript in der Liste?

Aktualisiere die Liste und prüfe Dateiendung, Skriptverzeichnis sowie Sprach- oder Filtereinstellungen. Stimmen Kopf und Imports mit der aktuellen Ghidra-Version überein, lässt sich die Datei bei unterstützten Abläufen auch direkt öffnen.

Sollte das erste Skript ein Projekt verändern?

Besser ist ein schreibgeschützter Bericht. Wenn die Ausgabe mit Listing oder Decompiler übereinstimmt, teste eine kontrollierte Änderung an einer Kopie und dokumentiere Zähler und Rücksetzplan.