
Extrahiere Labels aus IDA-, Ghidra-, Binary Ninja- und Relyze-Dateien und exportiere die x64dbg-Datenbank. Inklusive der radare2-Hauptadresse.
Dieser Befehl extrahiert alle Labels, die in der LST-Datei gefunden werden, die als einziges Argument übergeben wird. Basierend auf den extrahierten Labels wird im aktuellen Verzeichnis eine x64dbg-Datenbank erstellt.
Die LST-Datei kann in IDA über das Menü File erstellt werden: Produce file -> Create LST file...
$ lst2x64dbg sample.lst
Dieser Befehl extrahiert alle Labels, die in der CSV-Datei gefunden werden, die als einziges Argument übergeben wird. Basierend auf den extrahierten Labels wird im aktuellen Verzeichnis eine x64dbg-Datenbank erstellt. Der imagebase-Wert muss angegeben werden.
Die CSV-Datei kann in Ghidra über das Menü Window durch Auswahl von Symbol Table erstellt werden.
Sortieren Sie im geöffneten Symboltabellen-Fenster die Daten nach der Spalte Location. Wählen Sie dann alle Symbole aus, die keine externen Positionen sind. Klicken Sie mit den ausgewählten Symbolen mit der rechten Maustaste und wählen Sie: Export -> Export to CSV...
HINWEIS: Falls Sie versehentlich externe Positionen auswählen, werden diese ignoriert.

Benennen Sie diese Datei <modul_name>.csv
$ ghidra2x64dbg -i 400000 sample.csv
Der imagebase-Wert befindet sich ganz oben im Disassembly-Bereich des CodeBrowser-Fensters. Er ist Teil des DOS-Headers.

Ghidra hat eine standardmäßig deaktivierte Analyseoption, die in bestimmten Situationen mehr Labels für Code in einer Sample bereitstellt. Diese Option, WindowsPE x86 Propagate External Parameters, findet sich im Fenster „Analyseoptionen“, wenn eine Sample zum ersten Mal im CodeBrowser-Tool geöffnet wird.

Dieser Befehl extrahiert alle Labels, die in einer Binary-Ninja-bnida-JSON-Datei gefunden werden, die als einziges Argument übergeben wird. Basierend auf den extrahierten Labels wird im aktuellen Verzeichnis eine x64dbg-Datenbank erstellt. Der imagebase-Wert muss angegeben werden.
Um eine bnida-Datei aus Binary Ninja zu generieren, muss zunächst das Plugin gemäß den Anweisungen installiert werden:
https://zznop.github.io/bnida/
Sobald die ausführbare Datei in Binary Ninja geladen ist, navigieren Sie zum Menü Tools und wählen Sie bnida: Export analysis data.

Benennen Sie diese Datei <modul_name>.json
$ binja2x64dbg -i 400000 sample.json
Dieser Befehl extrahiert alle Labels, die in einer von Relyze generierten x64dbg-Datenbank gefunden werden, die als einziges Argument übergeben wird. Basierend auf den extrahierten Labels wird im aktuellen Verzeichnis eine x64dbg-Datenbank erstellt.
Um in Relyze eine x64dbg-Datenbank zu generieren, öffnen Sie einfach die ausführbare Datei, klicken Sie in der Code-Ansicht mit der rechten Maustaste und exportieren Sie.

Benennen Sie diese Datei <modul_name>_relyze.dd32 oder <modul_name>_relyze.dd64
$ relyze2x64dbg sample_relyze.dd32
Beide Befehle unterstützen jetzt die Einbindung des von radare2 erkannten Speicherorts für main(). Fügen Sie einfach -r oder -main zu einem der Befehle hinzu, wie hier:
$ lst2x64dbg -r 0x0040a53a sample.lst
Kopieren Sie einfach die virtuelle Adresse für main aus der Cutter-Benutzeroberfläche oder der radare2-Befehlszeile und fügen Sie sie ein.

Jedes dieser Tools überprüft das aktuelle Verzeichnis auf eine x64dbg-Datenbank, die bei einem früheren Durchlauf eines der Tools erstellt wurde. Jeder Offset in dieser Datenbank, der bereits ein Label besitzt, wird durch einen nachfolgenden Durchlauf eines der Tools nicht geändert. Mit anderen Worten: Jedes Tool erweitert die Liste der Labels, überschreibt jedoch keine bereits vorhandenen Labels.
Wenn Sie manuell Labels erstellt haben, wird empfohlen, diese nur in einem Disassembler zu erstellen. Stellen Sie außerdem sicher, dass die Ausgabe dieses Disassemblers als erste von einem der oben genannten Tools verarbeitet wird. Auf diese Weise ist garantiert, dass alle Ihre benutzerdefinierten Labels in der neuen x64dbg-Datenbank vorhanden sind.
In einer zukünftigen Iteration dieser Software wird es eine Möglichkeit geben, Konflikte beim Zusammenführungsschritt der Verarbeitung aufzulösen.