Sto cercando di imparare a utilizzare lo strumento BinDiff , ma posso ” t capire come aprire due binari per fare il confronto. Mentre sfoglio il loro manuale, sembra che io abbia bisogno di IDA Pro per questo.
Posso usare BinDiff senza IDA Pro (diciamo, con solo IDA gratuito)?
Commenti
- related: Alternative a BinDiff reverseengineering.stackexchange.com/q/26196/3934 ?
Risposta
Sì, ora è possibile con Ghidra.
Lultima versione, BinDiff 6 , ha il supporto sperimentale per il disassemblatore Ghidra. Viene fornito con unestensione che consente di esportare il disassemblaggio Ghidra nel formato .BinExport necessario per le differenze.
Software richiesto
- BinDiff 6 da sito web zynamics
- Un recente runtime Java (OpenJDK 11 o successivo)
- Ghidra 9.1.2 ( https://ghidra-sre.org/releaseNotes_9.1.2.html )
Installazione dellestensione Ghidra
Dopo aver installato BinDiff, individua “BinExport” estensione nella cartella di installazione.
I valori predefiniti sono
- Windows:
C:\Program Files\BinDiff\extra\ghidra
- Linux:
/opt/bindiff/extra/ghidra
- macOS:
/Applications/BinDiff/Extra/Ghidra
Se hai individuato ghidra_BinExport.zip
, lestensione può essere installata come qualsiasi altra estensione Ghidra:
- Avvia Ghidra, quindi seleziona
File
|Install Extensions...
. - Fai clic sul pulsante
+
perAdd extension
. -
Nel
Select Extension
, accedi alla directory contenenteghidra_BinExport.zip
. -
Seleziona il file .zip file e fai clic su
OK
- Fai clic su
OK
per confermare e di nuovo per chiudere il messaggio di riavvio. Quindi riavvia Ghidra.
Utilizzo
Questa versione dellesportatore basato su Java per Ghidra ha le seguenti caratteristiche rispetto alla versione C ++ nativa per IDA Pro:
| | Ghidra | IDA | | --------------------------------------- | ------ | --- | | Protocol Buffer based full export | ✓¹ | ✓ | | Statistics text file | - | ✓ | | Text format for debugging | - | ✓ | | BinNavi export into PostgreSQL database | - | ✓ | ¹ No operand trees
Verifica della versione di installazione
- In Ghidra, seleziona
File
|Install Extensions...
. - Verifica che
BinExport
sia elencato e contenga ilInstall Path
Invocazione
- In Ghidra, apri un progetto o creane uno nuovo.
- Se non lo hai già fatto, apri il binario in cui esportare lo strumento Browser del codice ed eseguire lanalisi iniziale di Ghidra. Potresti voler abilitare lopzione “cercatore di istruzioni aggressivo” per ottenere una migliore copertura nellesportazione.
- Nella vista del progetto, fai clic con il pulsante destro del mouse sul binario per esporta e seleziona
Export...
- Dallelenco a discesa, seleziona
Binary BinExport (v2) for BinDiff
- Seleziona un percorso per il file di output. Può essere il nome del file originale, come
.BinExport
verrà aggiunto. - Fare clic su
OK
.
BinDiff File esportati
I file esportati ora possono essere modificati e i risultati visualizzati nella sua interfaccia utente:
- Esporta due file binari seguendo le istruzioni sopra. I passaggi seguenti presuppongono
primary.BinExport
esecondary.BinExport
. -
Dalla riga di comando, esegui il motore BinDiff con
bindiff primary.BinExport secondary.BinExport
Questo creerà un file
primary_vs_secondary.BinDiff
nella directory corrente. Il comandobindiff
dovrebbe essere nel percorso di sistema. -
Avvia linterfaccia utente di BinDiff, tramite
bindiff --ui
o utilizzando il programma di avvio per il tuo sistema operativo. -
Crea un nuovo spazio di lavoro o aprine uno esistente.
-
Seleziona
Diffs
|Add Existing Diff...
. -
In
Choose Diff
, selezionaprimary_vs_secondary.BinDiff
creato al passaggio 2. -
Fai clic su
OK
, seguito daAdd
. Il diff è ora mostrato nella visualizzazione ad albero a sinistra e può essere aperto facendo doppio clic su di esso. -
Usa BinDiff normalmente per visualizzare il grafico delle chiamate o i grafici di flusso delle funzioni corrispondenti .
Open Source
Infine, lestensione BinExport (e anche il plugin IDA Pro) è open source e disponibile su GitHub . Il tag v11
corrisponde a BinDiff 6.
Commenti
- Grazie. ' sarei così felice di sbarazzarmi della dipendenza da IDA Pro!