
Estrai etichette da file IDA, Ghidra, Binary Ninja e Relyze ed esporta database x64dbg. Incluso l'indirizzo principale di radare2.
Questo comando estrae tutte le etichette trovate nel file LST fornito come unico argomento. Viene creato un database x64dbg nella directory corrente basato sulle etichette estratte.
Il file LST può essere generato in IDA dal menu File: Genera file -> Crea file LST...
$ lst2x64dbg sample.lst
Questo comando estrae tutte le etichette trovate nel file CSV fornito come unico argomento. Viene creato un database x64dbg nella directory corrente basato sulle etichette estratte. È necessario fornire il valore imagebase.
Il file CSV può essere generato in Ghidra dal menu Window selezionando Symbol Table
Nella finestra della tabella dei simboli che si apre, ordina i dati per la colonna Location. Quindi seleziona tutti i simboli che non sono posizioni esterne. Con i simboli desiderati selezionati, fai clic destro e seleziona: Export -> Export to CSV...
NOTA: Se dovessi selezionare posizioni esterne, verranno ignorate.

Assegna a questo file il nome <module_name>.csv
$ ghidra2x64dbg -i 400000 sample.csv
Il valore imagebase si trova all'inizio del pannello di disassemblaggio nella finestra CodeBrowser. Fa parte dell'intestazione DOS.

Ghidra ha un'opzione di analisi disattivata per impostazione predefinita che può fornire più etichette per il codice in un campione in determinate situazioni. Questa opzione, WindowsPE x86 Propagate External Parameters, si trova nella finestra delle opzioni di analisi quando un campione viene aperto per la prima volta nello strumento CodeBrowser.

Questo comando estrae tutte le etichette trovate in un file JSON bnida di Binary Ninja fornito come unico argomento. Viene creato un database x64dbg nella directory corrente basato sulle etichette estratte. È necessario fornire il valore imagebase.
Per generare un file bnida da Binary Ninja, è necessario prima installare il plugin seguendo le istruzioni:
https://zznop.github.io/bnida/
Una volta caricato l'eseguibile in Binary Ninja, vai al menu Tools e seleziona bnida: Export analysis data.

Assegna a questo file il nome <module_name>.json
$ binja2x64dbg -i 400000 sample.json
Questo comando estrae tutte le etichette trovate in un database x64dbg generato da Relyze fornito come unico argomento. Viene creato un database x64dbg nella directory corrente basato sulle etichette estratte.
Per generare un database x64dbg in Relyze, basta aprire l'eseguibile e nella vista Code, fare clic destro ed esportare.

Assegna a questo file il nome <module_name>_relyze.dd32 o <module_name>_relyze.dd64
$ relyze2x64dbg sample_relyze.dd32
Entrambi i comandi ora supportano l'inclusione della posizione di main() rilevata da
radare2. Basta aggiungere -r o -main a uno dei comandi in questo modo:
$ lst2x64dbg -r 0x0040a53a sample.lst
Basta copiare e incollare l'indirizzo virtuale di main dall'interfaccia di Cutter o dalla riga di comando di radare2.

Ciascuno di questi strumenti controllerà la directory corrente per un database x64dbg creato da un'esecuzione precedente di uno degli strumenti. Qualsiasi offset in quel database che ha già un'etichetta non verrà modificato da un'esecuzione successiva di nessuno degli strumenti. In altre parole, ogni strumento espande l'elenco delle etichette, ma non sovrascrive alcuna etichetta già esistente.
Se hai creato etichette manualmente, si consiglia di crearle solo in un disassemblatore. Inoltre, fai in modo che l'output di quel disassemblatore sia il primo ad essere elaborato da uno degli strumenti sopra indicati. In questo modo tutte le tue etichette personalizzate saranno garantite nel nuovo database x64dbg.
In una futura iterazione di questo software ci sarà un modo per risolvere i conflitti nella fase di unione dell'elaborazione.