Bindiffhelper
Ghidra -Erweiterung, die Bindiff in Ihrem Ghidra -Projekt verwendet, um passende Funktionen zu finden und sie automatisch umzubenennen (Bindiff 6, 7, 8 unterstützt). Schauen Sie sich das Bindiff -Handbuch an, um zu sehen, wie es funktioniert und wie es Funktionen / Basisblöcke entspricht. Mit dieser Erweiterung wird Bindiff jedoch innerhalb von Ghidra automatisiert, sodass Sie Ihre Binärdateien nicht selbst differenzieren müssen.
Bitte melden Sie Fehler über die Ausgabefunktion auf GitHub
Was es tut / Changelog
v0.6
- Aktualisieren Sie die SQLite -Treiberbibliothek, sollte jetzt auf Apple Silicon ausgeführt werden
- Unterstützen Sie externe textuelle Diffs zwischen dekompilierten Funktionen (siehe #24)
- UI -Updates
v0.5
- Unterstützung Bindiff 8
- Veröffentlichung für Ghidra 11.1
v0.4.3
- Veröffentlichung für Ghidra 11.0
v0.4.2
- Fügen Sie die Funktion hinzu, um alle Funktionen zu importieren (nicht nur die in der Tabelle überprüft).
- Fügen Sie die Funktion hinzu, um das Kontrollkästchen für mehrere Elemente in der Tabelle umzuschalten
- Update zur Unterstützung von Ghidra 10.3
v0.4.1
- Update zur Unterstützung von Gradle 7.5 und Ghidra 10.1
v0.4.0
- Unterstützung Bindiff 7 und Ghidra 10
v0.3.2
- Ein Fehler behoben
- Ein Fehler behoben, bei dem Dateien mit kurzen Namen (<3 Zeichen>) nicht differenziert werden konnten
v0.3.1
- Ein Absturz beim Öffnen einer Datei über die Option "From Project" behoben
v0.3
- Färben übereinstimmende Funktionen in der Auflistung
- Fügen Sie Kommentare zu übereinstimmenden Funktionen in der Auflistung hinzu, die mit dem anderen binären Verknüpfung verlinken
- Es wurde ein Fehler behoben, in dem die Protobuf -Bibliothek in einigen Builds fehlte
- Neues Datei -Lademenü laden
v0.2
- Beheben Sie einen Fehler, bei dem die Datei so importiert werden muss, dass sie ausgecheckt werden musste.
- Erhöhen Sie die Größe des Dialogfelds zur Auswahl der Projektdatei
v0.1
- Bindiff the Binary wurde in Ghidra mit einem weiteren Binary aus demselben Ghidra -Projekt eröffnet, zeigen Ergebnisse und Importfunktionsnamen
- Öffnen Sie eine Bindiff -Datei, die mit Bindiff 6 erstellt wurde, aus zwei .Binexport -Dateien und importieren Sie die Anpassungsfunktionsnamen in Ghidra
Nächste Veröffentlichungen
- Funktionsnamen und Funktionsparameter importieren (Typ und Name)
- Vergleichen Sie die in Ghidra eröffnete Binärdehnung mit einem externen .binexport (zum Beispiel von IDA)
- Kommunikation mit der Bindiff 6 -GUI, um Diagramme für die verschiedenen Funktionen anzuzeigen
So installieren
Download das .zip-file von der Veröffentlichung, wenn sie mit Ihrer Ghidra-Version kompatibel ist, sehen Sie sich ansonsten unten , wie Sie unten erstellen .
- Öffnen Sie Ghidra
- Im Hauptfenster : Gehen Sie zu Datei-> Erweiterungen installieren ...
- Klicken Sie oben rechts auf das +-Button und wählen Sie die BindiffHelper-ZIP-Datei aus
- Schließen Sie den Plugin -Manager. Starten Sie Ghidra neu, um das neue Plugin zu laden
- Siehe Verwendung unten
Empfohlene andere Werkzeuge
- Binexport -Plugin -Binärdateien oder aus der Quelle für Ihre spezifische Ghidra -Version zusammengestellt
- Bindiff (https://zynamics.com/software.html)
Ohne diese können Sie nur .Bindiff -Dateien importieren und nicht automatisch von Ihrem Ghidra -Projekt exportieren und differnen
Verwendung
Stellen Sie sicher
Klicken Sie oben rechts auf das kleine Plug-Icon:
und stellen Sie sicher, dass das Kontrollkästchen neben BindiffHelperPlugin überprüft wird.
Externe .bindiff importieren
Die entsprechenden .binexport-Files müssen sich im selben Ordner befinden.
Öffnen Sie die Datei, die Sie im Code-Browser importieren möchten, und gehen Sie dann zu Window-> BindiffHelper
Verwenden Sie die Bindiff -Schaltfläche oder Menüelement Öffnen und wählen Sie Ihre .Bindiff -Datei aus.
Wählen Sie alle Funktionsnamen aus, die Sie importieren möchten, und klicken Sie oben rechts oder auf die Schaltfläche Funktionsnamen importieren .
Vergleichen Sie zwischen Dateien im Ghidra -Projekt
Gehen Sie zu Fenster-> Bindiffhelper , stellen Sie sicher, dass Binexport oder Bindiff keine Warnungen vorhanden sind, und klicken Sie dann auf die Schaltfläche Projekt Öffnen .
Wählen Sie die andere Datei aus dem Baum aus und klicken Sie auf OK.
Wie man baut
Anforderungen:
- GHIDRA-Installation (https://ghidra-sre.org) oder aus Quelle zusammengestellt
- Einige JDK. Es kann bestimmte Einschränkungen geben, je nachdem, wie Ihre Ghidra gebaut wurde und welche anderen Plugins Sie verwenden. Ich empfehle die Verwendung von Temurin 21 LTS, da dies derzeit mit Binexport und BindiffHelper zu funktionieren scheint.
- Gradle (getestet mit 7.5, 8.10)
Klonen Sie das Repository
Klonen Sie das Repository rekursiv, da es von Binexport für die jeweilige Protokollpufferdefinition abhängt.
git clone --recurse-submodules https://github.com/ubfx/BinDiffHelper.git
Bauen Sie es
Sie müssen die Umgebungsvariable GHIDRA_INSTALL_DIR für die Ghidra -Installation Dir. Wenn Sie unterschiedliche JDKs installiert haben, stellen Sie sicher, dass die Umgebungsvariable JAVA_HOME auf diejenigen zeigt, die Ihre Ghidra -Installation verwendet.
Die Erweiterung wird speziell für diese Ghidra -Version erstellt.
Und dann gehen Sie den Bindiffhelper -Ordner in Ihre Schale und tun Sie es
Dies wird sowohl Binexport im jeweiligen Submodul als auch BindiffHelper im übergeordneten Verzeichnis aufbauen. Es sollte ein .zip-file gegeben sein, das im DIST-Verzeichnis erstellt wurde. Verwenden Sie diese .zip -Datei, um gemäß den obigen Anweisungen zu installieren.
Entwicklungs- / Debugging -Setup
Manchmal ist es nützlich, die Erweiterung zusammen mit Ghidra debuggen zu können. Hier finden Sie einige Notizen dazu:
- Klon und bauen Ghidra und lassen Sie Gradle nach dem DevGuide Eclipse -Projekte erstellen
- Importieren Sie die Projekte in Eclipse (stellen Sie sicher, dass sie relevante Plugins für die Erweiterungsentwicklung enthält).
- Bauen und installieren Sie Ghidradev
- Ghidra Build auspacken und Ghidradev mit ihm verknüpfen. Vielleicht müssen die Umgebungsvariable
GHIDRA_INSTALL_DIR festgelegt werden - Führen Sie Ghidra aus Eclipse aus und installieren Sie die Binexport -Erweiterung
- Erstellen Sie BindiffHelper Eclipse -Projekt mit
gradle build eclipse - Importieren Sie es in Eclipse und verwenden Sie Ghidradev, um es mit dem Ghidra -Build zu verknüpfen
- Debugug A-> Ghidra
Beim Debuggen von Ghidra mit der Verlängerung aus Eclipse wird die Erweiterung automatisch in Ghidra geladen (nicht durch die übliche Erweiterung durchlaufen). Das Plugin muss jedoch im Code -Explorer aktiviert werden.
Referenzen
- https://github.com/google/bindiff/releases
- https://www.zynamics.com/bindiff/manual/
- https://github.com/google/binexport/
Symbole von: Fatcow Free Icons