Copyright 2011-2024 Google LLC.
Haftungsausschluss: Dies ist kein offizielles Google -Produkt (experimentell oder auf andere Weise), sondern nur Code, der zufällig bei Google gehört.
Binexport ist die Exporterkomponente von Bindiff. Es handelt sich um ein Plugin/eine Plugin/Erweiterung für die Disassemblers IDA Pro, binary Ninja und Ghidra, die die Demontagedaten in das Protokollpufferformat exportiert, das Bindiff benötigt.
Eine experimentelle Version für die Open -Source -Software Reverse Engineering Suite Ghidra ist im java/BinExport -Verzeichnis erhältlich.
Dieses Repository enthält den vollständigen Quellcode, der zum Erstellen von Binexport -Plugin -Binärdateien für Linux, MacOS und Windows erforderlich ist.
Laden Sie die Binärdateien von der Releases -Seite herunter und kopieren Sie sie in das IDA Pro -Plugins -Verzeichnis. Dies sind die Standardpfade:
| Betriebssystem | Plugin -Pfad |
|---|---|
| Linux | /opt/idapro-8.2/plugins |
| macos | /Applications/IDA Pro 8.2/idabin/plugins |
| Fenster | %ProgramFiles%IDA 8.2plugins |
Um nur für den aktuellen Benutzer zu installieren, kopieren Sie die Dateien stattdessen in eines dieser Verzeichnisse:
| Betriebssystem | Plugin |
|---|---|
| Linux/macos | ~/.idapro/plugins |
| Fenster | %AppData%Hex-RaysIDA Proplugins |
Wählen Sie in IDA Help | About programm...
Klicken Sie auf Addons...
Wenn korrekt installiert wird, wird das folgende Dialogfeld angezeigt:

Laden Sie die Binärdateien von der Releases -Seite herunter und kopieren Sie sie in das Biny Ninja Plugins -Verzeichnis. Dies sind die Standardpfade für den aktuellen Benutzer:
| Betriebssystem | Plugin -Pfad |
|---|---|
| Linux | ~/.binaryninja/plugins |
| macos | ~/Library/Application Support/Binary Ninja/plugins/ |
| Fenster | %AppData%Binary Ninjaplugins |
Log Dock aus. Wenn dies nicht sichtbar ist, aktivieren Sie es per View | Native Docks | Show Log . BinExport 12 (@internal, Jan 3 2023), (c)2004-2011 zynamics GmbH, (c)2011-2024 Google LLC.
File | Install Extensions...ghidra_BinExport.zip ein, den Sie in Schritt 1 heruntergeladen haben, und klicken Sie auf OK .OK , um sowohl das Dialogfeld "Erweiterungen installieren" als auch die Benachrichtigung zum Neustart von Ghidra zu schließen.File auswählen | Install Extensions...Der Hauptanwendungsfall ist über Bindiff. Binexport kann jedoch auch verwendet werden, um die Demontage in verschiedene Formate zu exportieren:
Öffnen Sie eine IDA Pro -Datenbank
Wählen Sie Edit | Plugins | BinExport 12
Das folgende Dialogfeld wird angezeigt:

Wählen Sie den Typ der zu exportierenden Datei aus
Das Binexport -Plugin registriert die IDC -Funktionen unten.
| IDC -Funktionsname | Exporte zu | Argumente |
|---|---|---|
| Binexportbinär | Protokollpuffer | Dateiname |
| BinexportText | Textdatei -Dump | Dateiname |
| Binexportstatistik | Statistik Textdatei | Dateiname |
Alternativ kann das Plugin aus IDC aufgerufen werden, indem die Hauptfunktion direkt aufgerufen wird:
static main () {
batch ( 0 );
auto_wait ();
load_and_run_plugin ( "binexport12_ida" , 2 /* kBinary */ );
qexit ( 0 );
}Beachten Sie, dass dies eine Kontrolle über den Ausgabedateinamen bietet. Binexport verwendet immer den Dateinamen der aktuell geladenen Datenbank (ohne Erweiterung) und append ".binexport".
Die Argumente sind die gleichen wie für IDC (oben aufgeführt).
Beispielaufruf eines der registrierten IDC -Funktionen:
import idaapi
idaapi . ida_expr . eval_idc_expr ( None , ida_idaapi . BADADDR ,
'BinExportBinary("exported.BinExport");' )Binexport definiert die folgenden Plugin -Optionen, die in der Befehlszeile der IDA angegeben werden können:
| Option | Beschreibung |
|---|---|
-OBinExportAutoAction:<ACTION> | Rufen Sie eine Binexport -IDC -Funktion und beenden |
-OBinExportModule:<PARAM> | Argument für BinExportAutoAction |
-OBinExportLogFile:<FILE> | Protokollieren Sie Nachrichten in einer Datei |
-OBinExportAlsoLogToStdErr:TRUE | Wenn angegeben, melden Sie sich auch auf Standardfehler an |
-OBinExportX86NoReturnHeuristic:TRUE | Aktivieren Sie die x86-spezifische Heuristik, um nicht zurückgegebene Funktionen zu identifizieren |
Hinweis: Diese Optionen müssen vor allen Dateien erfolgen.
Zu diesem Zeitpunkt gibt es nur eine minimale Integration in die binäre Ninja -Benutzeroberfläche.
Tools | Plugins | BinExport . Dadurch wird der Exportprozess gestartet. Die .BinExport -Datei befindet sich neben der Analyse -Datenbank im selben Verzeichnis.
File | Import File...Export... aus..BinExport automatisch angehängt. Das Skript BinExport.java Ghidra kann sowohl im Kopflosen als auch im GUI -Modus ausgeführt werden. Im GUI -Modus ist es in der Kategorie BinExport im Skript -Manager verfügbar. Für den Kopflosenmodus kann eine BinExport.properties -Datei mit dem folgenden Inhalt (oder ähnlichem, abhängig von den Optionen, die Sie verwenden möchten) verwendet werden:
Choose export file Export = test.BinExport
Choose options IDA Pro Compatibility = "Subtract Imagebase;Remap mnemonics;Prepend Namespace to Function Names"
Erstellen Sie ein Projekt, importieren und analysieren Sie eine binäre:
$ ./analyzeHeadless <project_location> <project_name> -import <file>
BinExport.java ausführen, die die in BinExport.properties angegebene .BinExport -Datei generiert:
$ ./analyzeHeadless <project_location> <project_name> -process <file> -propertiesPath <path> -preScript BinExport.java -noanalysis
Verwenden Sie alternativ Befehlszeilenargumente anstelle von BinExport.properties :
$ ./analyzeHeadless <project_location> <project_name> -process <file> -preScript BinExport.java test.BinExport "Prepend Namespace to Function Names" -noanalysis
Im Folgenden finden Sie Build -Anweisungen für die nativen Code -Plugins für IDA Pro und binäre Ninja. Um die Java-basierte Erweiterung für Ghidra zu erstellen, finden Sie im Binexport für Ghidra-Anweisungen.
Es gibt einige Abhängigkeiten zu befriedigen:
boost_parts )third_party/idasdk auspacken)Die bevorzugte Bauumgebung ist Debian 11 ("Bullseye").
Dies sollte alle erforderlichen Pakete installieren:
sudo apt update -qq
sudo apt install -qq --no-install-recommends build-essentialInstallieren Sie die neueste stabile Version von CMake:
wget https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-linux-x86_64.sh
mkdir ${HOME} /cmake
sh cmake-3.25.1-Linux-x86_64.sh --prefix= ${HOME} /cmake --exclude-subdir
export PATH= ${HOME} /cmake/bin: ${PATH}In den folgenden Abschnitten geht davon aus, dass sich Ihr aktuelles Arbeitsverzeichnis an der Wurzel des geklonten Repositorys befindet.
Entpacken Sie den Inhalt der IDA SDK in third_party/idasdk . Die angezeigten Befehle sind für IDA Pro 8.2:
unzip PATH/TO/idasdk_pro82.zip -d third_party/idasdk
mv third_party/idasdk/idasdk_pro82/ * third_party/idasdk
rmdir third_party/idasdk/idasdk_pro82Konfigurieren und erstellen Sie mit allen Voraussetzungen Binexport und führen Sie seine Tests aus:
mkdir -p build_linux && cd build_linux
cmake ..
-G Ninja
-DCMAKE_BUILD_TYPE=Release
" -DCMAKE_INSTALL_PREFIX= ${PWD} "
-DBINEXPORT_ENABLE_IDAPRO=ON
" -DIdaSdk_ROOT_DIR= ${PWD} /../third_party/idasdk "
-DBINEXPORT_ENABLE_BINARYNINJA=ON
cmake --build . --config Release
ctest --build-config Release --output-on-failure
cmake --install . --config Release --strip Hinweis: Wenn Sie Ninja nicht verwenden möchten, um den tatsächlichen Build durchzuführen, lassen Sie den -G Ninja -Teil weg.
Um den IDA Pro -Build zu deaktivieren, setzen Sie -DBINEXPORT_ENABLE_IDAPRO=OFF . Um den binären Ninja -Build zu deaktivieren, setzen Sie -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
Dadurch wird Abseil, Googletest, Protokollpuffer und die binäre Ninja -API heruntergeladen und erstellt. Wenn alles gut lief, sollte binexport12_ida64.so Verzeichnis binexport12_binaryninja.so ida64 build_linux/binexport-prefix ida die Dateien enthalten binexport12_ida.so
Die bevorzugte Build -Umgebung ist MacOS 13 "Ventura" mit Xcode 15.1. Die Verwendung von MacOS 12 "Monterey" sollte ebenfalls funktionieren.
Stellen Sie nach der Installation der Entwickler-Tools auch die Befehlszeilen-Tools installieren:
sudo xcode-select --installIn den folgenden Abschnitten geht davon aus, dass sich Ihr aktuelles Arbeitsverzeichnis an der Wurzel des geklonten Repositorys befindet.
Laden Sie die neueste stabile Version von CMake von der offiziellen Website herunter und montieren Sie das Festplattenbild:
curl -fsSL https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-Darwin-x86_64.dmg
-o $HOME /Downloads/cmake-osx.dmg
hdiutil attach $HOME /Downloads/cmake-osx.dmgZu diesem Zeitpunkt müssen Sie die Lizenzvereinbarung von CMAKE überprüfen und akzeptieren. Installieren Sie nun CMake:
sudo cp -Rf /Volumes/cmake-3.25.1-Darwin-x86_64/CMake.app /Applications/
hdiutil detach /Volumes/cmake-3.25.1-Darwin-x86_64
sudo /Applications/CMake.app/Contents/bin/cmake-gui --installDer letzte Befehl macht CMake im Systempfad verfügbar.
Entpacken Sie den Inhalt der IDA SDK in third_party/idasdk . Die angezeigten Befehle sind für IDA Pro 8.2:
unzip PATH/TO/idasdk_pro82.zip -d third_party/idasdk
mv third_party/idasdk/idasdk_pro82/ * third_party/idasdk
rmdir third_party/idasdk/idasdk_pro82Konfigurieren und erstellen Sie mit allen Voraussetzungen Binexport und führen Sie seine Tests aus:
mkdir -p build_mac && cd build_mac
cmake ..
-DCMAKE_BUILD_TYPE=Release
" -DCMAKE_INSTALL_PREFIX= ${PWD} "
-DBINEXPORT_ENABLE_IDAPRO=ON
" -DIdaSdk_ROOT_DIR= ${PWD} /../third_party/idasdk "
-DBINEXPORT_ENABLE_BINARYNINJA=ON
cmake --build . --config Release -- " -j $( sysctl -n hw.logicalcpu ) "
ctest --build-config Release --output-on-failure
cmake --install . --config Release --stripHinweis: Dadurch wird der Standard -CMake "Makefile -Generator" verwendet. Sie können Xcode oder Ninja auch als Generatoren verwenden.
Um den IDA Pro -Build zu deaktivieren, setzen Sie -DBINEXPORT_ENABLE_IDAPRO=OFF . Um den binären Ninja -Build zu deaktivieren, setzen Sie -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
Dadurch wird Abseil, Googletest, Protokollpuffer und die binäre Ninja -API heruntergeladen und erstellt. Wenn alles gut lief, sollte das Verzeichnis ida64 build_mac/binexport-prefix zwei die Dateien enthalten binexport12_ida.dylib und binexport12_ida64.dylib (zur Verwendung mit ida ) sowie binexport12_binaryninja.dylib (für Binary Ninja).
Die bevorzugte Build-Umgebung ist Windows 10 (64-Bit-Intel) mit dem Visual Studio 2022 Compiler und dem Windows SDK für Windows 10.
Laden Sie den neuesten stabilen CMake (3.25.1 zum Zeitpunkt des Schreibens) von der Download -Seite herunter und installieren Sie sie. Stellen Sie sicher, dass Sie "CMAKE zum Systempfad für alle Benutzer hinzufügen".
Laden Sie GIT von seiner Download -Seite herunter und installieren Sie sie. Stellen Sie sicher, dass Sie die folgenden Optionen auswählen: * Das Installationsverzeichnis sollte am %ProgramFiles%Gitbingit.exe * "Git aus der Windows -Eingabeaufforderung verwenden" - Das Setup -Dienstprogramm geben Git zu Ihrem Systempfad hinzufügen. * "Verwenden Sie Windows 'Standard -Konsolenfenster" -, um Git aus der regulären Eingabeaufforderung zu verwenden.
In den folgenden Abschnitten wird eine offene Eingabeaufforderung mit dem aktuellen Arbeitsverzeichnis an der Wurzel des geklonten Binexport -Repositorys angenommen:
git clone https://github.com/google/binexport.git
cd binexport Entpacken Sie den Inhalt der IDA SDK in third_party/idasdk . Die angezeigten Befehle sind für IDA Pro 8.2, vorausgesetzt, Git wurde zuerst in das Standardverzeichnis eingebaut:
" %ProgramFiles% Gitusrbinunzip " PATHTOidasdk_pro82.zip -d third_party
rename third_partyidasdk_pro82 idasdkKonfigurieren und bauen Sie Binexport mit allen Voraussetzungen, die vorhanden sind:
if not exist build_msvc mkdir build_msvc
cd build_msvc
cmake .. ^
-G " Visual Studio 17 2022 " ^
-DCMAKE_BUILD_TYPE=Release ^
" -DCMAKE_INSTALL_PREFIX= %cd% " ^
-DBINEXPORT_ENABLE_IDAPRO=ON ^
-DIdaSdk_ROOT_DIR= %cd% ..third_partyidasdk ^
-DBINEXPORT_ENABLE_BINARYNINJA=ON
cmake --build . --config Release -- /m /clp:NoSummary;ForceNoAlign /v:minimal
ctest --build-config Release --output-on-failure
cmake --install . --config Release --stripHinweis: Dadurch wird der CMAKE "Visual Studio" -Gerator verwendet. Sie können auch den Ninja -Generator verwenden.
Um den IDA Pro -Build zu deaktivieren, setzen Sie -DBINEXPORT_ENABLE_IDAPRO=OFF . Um den binären Ninja -Build zu deaktivieren, setzen Sie -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
Dadurch wird Abseil, Googletest, Protokollpuffer und die binäre Ninja -API heruntergeladen und erstellt. Wenn alles gut gelaufen ist, sollte das Verzeichnis ida.exe binexport12_binaryninja.dll build_msvc/binexport-prefix ida64.exe binexport12_ida64.dll Dateien enthalten binexport12_ida.dll