Ich versuche zu lernen, wie man das BinDiff -Tool verwendet, aber ich kann “ t Finden Sie heraus, wie Sie zwei Binärdateien öffnen, um den Vergleich durchzuführen. Beim Durchblättern des Handbuchs muss ich anscheinend IDA Pro dafür haben.
Kann ich BinDiff ohne IDA Pro verwenden (z. B. mit nur IDA-frei)?
Kommentare
- related: Alternativen zu BinDiff reverseengineering.stackexchange.com/q/26196/3934 ?
Antwort
Ja, dies ist jetzt mit Ghidra möglich.
Die neueste Version, BinDiff 6 hat experimentelle Unterstützung für den Ghidra-Disassembler. Es wird mit einer Erweiterung geliefert, mit der die Ghidra-Demontage in das für Abweichungen erforderliche .BinExport-Format exportiert werden kann.
Erforderliche Software
- BinDiff 6 aus der zynamics-Website
- Eine aktuelle Java-Laufzeit (OpenJDK 11 oder höher)
- Ghidra 9.1.2 ( https://ghidra-sre.org/releaseNotes_9.1.2.html )
Installieren der Ghidra-Erweiterung
Suchen Sie nach der Installation von BinDiff den „BinExport“. Erweiterung in Ihrem Installationsordner.
Die Standardeinstellungen sind
- Windows:
C:\Program Files\BinDiff\extra\ghidra
- Linux:
/opt/bindiff/extra/ghidra
- macOS:
/Applications/BinDiff/Extra/Ghidra
Wenn Sie das ghidra_BinExport.zip
Datei, die Erweiterung kann wie jede andere Ghidra-Erweiterung installiert werden:
- Starten Sie Ghidra und wählen Sie dann
File
|Install Extensions...
. - Klicken Sie auf die Schaltfläche
+
, umAdd extension
anzuzeigen. -
In der Navigieren Sie im Dialogfeld
Select Extension
zu dem Verzeichnis, dasghidra_BinExport.zip
enthält. -
Wählen Sie die ZIP-Datei aus Datei und klicken Sie auf
OK
- Klicken Sie auf
OK
, um die Neustartnachricht zu bestätigen und erneut zu schließen. Starten Sie anschließend Ghidra neu.
Verwendung
Diese Version des Java-basierten Exporters für Ghidra bietet im Vergleich zur nativen C ++ – Version für IDA Pro die folgenden Funktionen:
| | Ghidra | IDA | | --------------------------------------- | ------ | --- | | Protocol Buffer based full export | ✓¹ | ✓ | | Statistics text file | - | ✓ | | Text format for debugging | - | ✓ | | BinNavi export into PostgreSQL database | - | ✓ | ¹ No operand trees
Überprüfen der Installationsversion
- Wählen Sie in Ghidra
File
|Install Extensions...
. - Stellen Sie sicher, dass
BinExport
aufgeführt ist und die richtigeInstall Path
Aufruf
- Öffnen Sie in Ghidra ein Projekt oder erstellen Sie ein neues.
- Wenn dies noch nicht geschehen ist, öffnen Sie die Binärdatei, in die exportiert werden soll das Code-Browser-Tool und führen Sie die erste Analyse von Ghidra aus. Möglicherweise möchten Sie die Option „Aggressiver Anweisungsfinder“ aktivieren, um eine bessere Abdeckung beim Export zu erhalten.
- Klicken Sie in der Projektansicht mit der rechten Maustaste auf die Binärdatei auf Exportieren und auswählen Sie
Export...
- Wählen Sie aus der Dropdown-Liste
Binary BinExport (v2) for BinDiff
- aus ein Pfad für die Ausgabedatei. Dies kann der ursprüngliche Dateiname sein. as
.BinExport
wird angehängt. - Klicken Sie auf
OK
.
BinDiff Exportierte Dateien
Exportierte Dateien können jetzt unterschieden und die Ergebnisse in der Benutzeroberfläche angezeigt werden:
- Exportieren Sie zwei Binärdateien gemäß den obigen Anweisungen. Die folgenden Schritte setzen
primary.BinExport
undsecondary.BinExport
voraus. -
Führen Sie in der Befehlszeile die BinDiff-Engine aus mit
bindiff primary.BinExport secondary.BinExport
Dadurch wird eine Datei
primary_vs_secondary.BinDiff
im aktuellen Verzeichnis erstellt. Der Befehlbindiff
sollte sich in Ihrem Systempfad befinden. -
Starten Sie die BinDiff-Benutzeroberfläche entweder über
bindiff --ui
oder verwenden Sie den Launcher für Ihr Betriebssystem. -
Erstellen Sie einen neuen Arbeitsbereich oder öffnen Sie einen vorhandenen.
-
Wählen Sie
Diffs
|Add Existing Diff...
. -
Unter
Choose Diff
, wählen Sie die in Schritt 2 erstellteprimary_vs_secondary.BinDiff
aus. -
Klicken Sie auf
OK
, gefolgt vonAdd
. Das Diff wird jetzt in der Baumansicht links angezeigt und kann durch Doppelklicken geöffnet werden. -
Verwenden Sie BinDiff normalerweise, um das Anrufdiagramm oder die Flussdiagramme übereinstimmender Funktionen anzuzeigen .
Open Source
Schließlich ist die BinExport-Erweiterung (und auch das IDA Pro-Plugin) Open Source und verfügbar auf GitHub . Das Tag v11
entspricht BinDiff 6.
Kommentare
- Vielen Dank. Ich ' wäre so froh, die Abhängigkeit von IDA Pro loszuwerden!