Încerc să învăț cum să folosesc instrumentul BinDiff , dar pot ” Descoperiți cum să deschideți două binare pentru a face comparația. În timp ce parcurg manualul lor, se pare că trebuie să am IDA Pro pentru asta.
Pot folosi BinDiff fără IDA Pro (să zicem, doar cu IDA gratuit)?
Comentarii
- related: Alternative to BinDiff reverseengineering.stackexchange.com/q/26196/3934 ?
Răspuns
Da, acest lucru este acum posibil cu Ghidra.
Cea mai recentă versiune, BinDiff 6 , are suport experimental pentru dezasamblatorul Ghidra. Se livrează cu o extensie care permite exportul dezasamblării Ghidra în formatul .BinExport necesar pentru diferențiere.
Software necesar
- BinDiff 6 din site web zynamics
- Un runtime recent Java (OpenJDK 11 sau o versiune ulterioară)
- Ghidra 9.1.2 ( https://ghidra-sre.org/releaseNotes_9.1.2.html )
Instalarea extensiei Ghidra
După instalarea BinDiff, localizați „BinExport” extensie în folderul dvs. de instalare.
Valorile implicite sunt
- Windows:
C:\Program Files\BinDiff\extra\ghidra
- Linux:
/opt/bindiff/extra/ghidra
- macOS:
/Applications/BinDiff/Extra/Ghidra
Dacă ați localizat ghidra_BinExport.zip
, extensia poate fi instalată ca orice altă extensie Ghidra:
- Porniți Ghidra, apoi selectați
File
|Install Extensions...
. - Faceți clic pe butonul
+
pentru aAdd extension
. -
În
Select Extension
, navigați la directorul care conțineghidra_BinExport.zip
. -
Selectați .zip fișier și faceți clic pe
OK
- Faceți clic pe
OK
pentru a confirma și din nou pentru a închide mesajul de repornire. Apoi reporniți Ghidra.
Utilizare
Această versiune a exportatorului bazat pe Java pentru Ghidra are următoarele caracteristici în comparație cu versiunea nativă C ++ pentru IDA Pro:
| | Ghidra | IDA | | --------------------------------------- | ------ | --- | | Protocol Buffer based full export | ✓¹ | ✓ | | Statistics text file | - | ✓ | | Text format for debugging | - | ✓ | | BinNavi export into PostgreSQL database | - | ✓ | ¹ No operand trees
Verificarea versiunii de instalare
- În Ghidra, selectați
File
|Install Extensions...
. - Verificați dacă
BinExport
este listat și areInstall Path
Invocare
- În Ghidra, deschideți un proiect sau creați unul nou.
- Dacă nu este deja realizat, deschideți binarul pentru a exporta în instrumentul Code Browser și rulați analiza inițială a lui Ghidra. Poate doriți să activați opțiunea „Căutare instrucțiuni agresive” pentru a obține o acoperire mai bună la export.
- În vizualizarea proiectului, faceți clic dreapta pe binar pentru a exportați și selectați
Export...
- Din lista derulantă, selectați
Binary BinExport (v2) for BinDiff
- Selectați o cale pentru fișierul de ieșire. Acesta poate fi numele de fișier original, deoarece
.BinExport
va fi adăugat. - Faceți clic pe
OK
.
BinDiff Fișiere exportate
Fișierele exportate pot fi acum diferați și rezultatele afișate în interfața sa de utilizare:
- Exportați două binare urmând instrucțiunile de mai sus. Următorii pași presupun
primary.BinExport
șisecondary.BinExport
. -
Din linia de comandă, rulați motorul BinDiff cu
bindiff primary.BinExport secondary.BinExport
Aceasta va crea un fișier
primary_vs_secondary.BinDiff
în directorul curent. Comandabindiff
ar trebui să fie în calea sistemului dvs. -
Lansați interfața de utilizare BinDiff, fie prin
bindiff --ui
sau folosind lansatorul pentru sistemul dvs. de operare. -
Creați un spațiu de lucru nou sau deschideți unul existent.
-
Selectați
Diffs
|Add Existing Diff...
. -
Sub
Choose Diff
, selectațiprimary_vs_secondary.BinDiff
creat la pasul 2. -
Faceți clic pe
OK
, urmat deAdd
. Diferența este acum afișată în vizualizarea arborescentă din stânga și poate fi deschisă făcând dublu clic pe ea. -
Utilizați în mod normal BinDiff pentru a afișa graficul apelurilor sau graficele de flux ale funcțiilor potrivite .
Open Source
În cele din urmă, extensia BinExport (și, de asemenea, pluginul IDA Pro) este open source și disponibilă pe GitHub . Eticheta v11
corespunde BinDiff 6.
Comentarii
- Vă mulțumim. ' aș fi atât de bucuros să scap de dependența de IDA Pro!