Estoy tratando de aprender a usar la herramienta BinDiff , pero puedo » t averigüe cómo abrir dos binarios para hacer la comparación. Mientras hojeo su manual, parece que necesito tener IDA Pro para eso.
¿Puedo usar BinDiff sin IDA Pro (digamos, con solo IDA gratis)?
Comentarios
- relacionados: Alternativas a BinDiff reverseengineering.stackexchange.com/q/26196/3934 ?
Respuesta
Sí, ahora esto es posible con Ghidra.
La última versión, BinDiff 6 , tiene soporte experimental para el desensamblador Ghidra. Se envía con una extensión que permite exportar el desmontaje de Ghidra al formato .BinExport necesario para diferenciar.
Software requerido
- BinDiff 6 de sitio web de zynamics
- Un tiempo de ejecución de Java reciente (OpenJDK 11 o posterior)
- Ghidra 9.1.2 ( https://ghidra-sre.org/releaseNotes_9.1.2.html )
Instalación de la extensión Ghidra
Después de instalar BinDiff, busque «BinExport» extensión en su carpeta de instalación.
Los valores predeterminados son
- Windows:
C:\Program Files\BinDiff\extra\ghidra
- Linux:
/opt/bindiff/extra/ghidra
- macOS:
/Applications/BinDiff/Extra/Ghidra
Si ha localizado el ghidra_BinExport.zip
, la extensión se puede instalar como cualquier otra extensión de Ghidra:
- Inicie Ghidra, luego seleccione
File
|Install Extensions...
. - Haga clic en el botón
+
paraAdd extension
. -
En el
Select Extension
cuadro de diálogo, navegue hasta el directorio que contieneghidra_BinExport.zip
. -
Seleccione el archivo .zip y haga clic en
OK
- Haga clic en
OK
para confirmar y nuevamente para descartar el mensaje de reinicio. Luego reinicie Ghidra.
Uso
Esta versión del exportador basado en Java para Ghidra tiene las siguientes características en comparación con la versión nativa de C ++ para IDA Pro:
| | Ghidra | IDA | | --------------------------------------- | ------ | --- | | Protocol Buffer based full export | ✓¹ | ✓ | | Statistics text file | - | ✓ | | Text format for debugging | - | ✓ | | BinNavi export into PostgreSQL database | - | ✓ | ¹ No operand trees
Verificación de la versión de instalación
- En Ghidra, seleccione
File
|Install Extensions...
. - Verifique que
BinExport
esté en la lista y tenga elInstall Path
Invocación
- En Ghidra, abra un proyecto o cree uno nuevo.
- Si aún no lo ha hecho, abra el binario para exportar en la herramienta Code Browser y ejecutar el análisis inicial de Ghidra. Es posible que desee habilitar la opción «buscador de instrucciones agresivas» para obtener una mejor cobertura en la exportación.
- En la vista del proyecto, haga clic con el botón derecho en el binario para exportar y seleccionar
Export...
- En la lista desplegable, seleccione
Binary BinExport (v2) for BinDiff
- Seleccione una ruta para el archivo de salida. Puede ser el nombre del archivo original, ya que se añadirá
.BinExport
. - Haga clic en
OK
.
BinDiff Archivos exportados
Los archivos exportados ahora se pueden diferenciar y los resultados se muestran en su interfaz de usuario:
- Exporte dos binarios siguiendo las instrucciones anteriores. Los siguientes pasos asumen
primary.BinExport
ysecondary.BinExport
. -
Desde la línea de comandos, ejecute el motor BinDiff con
bindiff primary.BinExport secondary.BinExport
Esto creará un archivo
primary_vs_secondary.BinDiff
en el directorio actual. El comandobindiff
debe estar en la ruta del sistema. -
Inicie la interfaz de usuario de BinDiff, ya sea a través de
bindiff --ui
o usando el lanzador para su sistema operativo. -
Cree un nuevo espacio de trabajo o abra uno existente.
-
Seleccione
Diffs
|Add Existing Diff...
. -
En
Choose Diff
, seleccione elprimary_vs_secondary.BinDiff
creado en el paso 2. -
Haga clic en
OK
, seguido deAdd
. El diff ahora se muestra en la vista de árbol a la izquierda y se puede abrir haciendo doble clic en él. -
Use BinDiff normalmente para mostrar el gráfico de llamadas o los gráficos de flujo de funciones emparejadas .
Código abierto
Finalmente, la extensión BinExport (y también el complemento IDA Pro) es de código abierto y está disponible en GitHub . La etiqueta v11
corresponde a BinDiff 6.
Comentarios
- Gracias. ¡Me ' me alegraría mucho deshacerme de la dependencia de IDA Pro!