Bindiffhelper
Extensión de Ghidra que utiliza Bindiff en su proyecto Ghidra para encontrar funciones coincidentes y cambiarlas automáticamente (Bindiff 6, 7, 8 compatible). Consulte el manual de Bindiff para ver cómo funciona y cómo coincide con las funciones / bloques básicos. Sin embargo, con esta extensión, Bindiff está automatizado dentro de Ghidra, por lo que no tiene que difundir sus binarios usted mismo.
Informe los errores a través de la función de problema en GitHub
Lo que hace / ChangeLog
V0.6
- Actualizar la biblioteca de controladores SQLite, ahora debe ejecutarse en Apple Silicon
- Admite diferencias textuales externas entre funciones descompiladas (ver #24)
- Actualizaciones de UI
V0.5
- Soporte Bindiff 8
- Lanzamiento para Ghidra 11.1
V0.4.3
- Lanzamiento para Ghidra 11.0
V0.4.2
- Agregar función para importar todas las funciones (no solo las verificadas en la tabla)
- Agregar función para alternar la casilla de verificación para múltiples elementos en la tabla
- Actualización para admitir Ghidra 10.3
V0.4.1
- Actualización para admitir Gradle 7.5 y Ghidra 10.1
V0.4.0
- Soporte Bindiff 7 y Ghidra 10
V0.3.2
- Se corrigió un error donde la diferencia con un archivo diferente del mismo proyecto no funcionó
- Se corrigió un error donde los archivos con nombres cortos (<3 caracteres>) no se podían diferenciar
V0.3.1
- Se corrigió un bloqueo al abrir un archivo a través de la opción "Desde Project"
V0.3
- Coloring Funciones coincidentes en la lista
- Agregue comentarios a las funciones coincidentes en la lista de enlaces con el otro binario
- Se corrigió un error donde faltaba la biblioteca de ProtoBuf en algunas compilaciones
- Nuevo menú de carga de archivos
V0.2
- Solucione un error en el que el archivo para importar se debe ver.
- Aumentar el tamaño del diálogo de selección de archivos del proyecto
V0.1
- Bindiff El binario se abrió en Ghidra con otro binario del mismo proyecto de Ghidra, muestra los resultados de los resultados y las funciones de importación
- Abra un archivo Bindiff, creado con Bindiff 6, a partir de dos archivos .Binexport e importe los nombres de las funciones coincidentes en Ghidra
Siguientes lanzamientos
- Importar nombres de funciones y parámetros de función (tipo y nombre)
- Compare el binario abierto en Ghidra con un. Binexport externo (de Ida, por ejemplo)
- Comunicación con la GUI de Bindiff 6 para mostrar gráficos para las diferentes funciones
Cómo instalar
Descargue el archivo .zip del lanzamiento, si es compatible con su versión de Ghidra, de lo contrario, vea cómo construir a continuación.
- Ghidra abierto
- En la ventana principal : vaya a archivos-> Instalar extensiones ...
- Haga clic en el +-button en la parte superior derecha y seleccione el archivo zip bindiffhelper
- Cierre el Administrador de complementos. Reiniciar ghidra para cargar el nuevo complemento
- Ver el uso a continuación
Recomendado otras herramientas
- Binarios de complemento de Binexport o compilado de la fuente para su versión específica de Ghidra
- Bindiff (https://zynamics.com/software.html)
Sin estos, solo podrá importar archivos .Bindiff y no exportar y difundir automáticamente desde su proyecto Ghidra
Uso
Asegúrese de que el complemento se cargue en el explorador de código abriendo un archivo en Ghidra y en el explorador de código vaya a archivos-> Configurar
Haga clic en el pequeño plug-icon en la parte superior derecha:
Y asegúrese de que se verifique la casilla de verificación junto a BindiffHelperplugin.
Importar .bindiff externo
Los archivos .binexport correspondientes deben estar en la misma carpeta.
Abra el archivo al que desea importar nombres en el navegador de código, luego vaya a Window-> BindiffHelper
Use el botón Open from bindiff o el elemento de menú y seleccione su archivo .bindiff.
Seleccione todos los nombres de funciones que desea importar y haga clic en el botón Importar nombres de funciones en la parte superior derecha o en el elemento del menú.
Comparar entre archivos en el proyecto Ghidra
Vaya a Window-> BindiffHelper , asegúrese de que no haya advertencias sobre Binexport o Bindiff, luego haga clic en el botón Abrir desde el proyecto .
Seleccione el otro archivo del árbol y haga clic en Aceptar.
Cómo construir
Requisitos:
- Instalación de Ghidra (https://ghidra-sre.org) o compilado desde la fuente
- Algunos jdk. Puede haber ciertas restricciones dependiendo de cómo se construyó su ghidra y qué otros complementos esté utilizando. Recomiendo usar Temurin 21 LTS, ya que esto actualmente parece funcionar con Binexport y BindiffHelper.
- Gradle (probado con 7.5, 8.10)
Clonar el repositorio
Clone recursivamente el repositorio, ya que depende de Binexport para la definición del tampón de protocolo respectivo.
git clone --recurse-submodules https://github.com/ubfx/BinDiffHelper.git
Construirlo
Debe establecer la variable de entorno GHIDRA_INSTALL_DIR en el Dir de instalación de Ghidra. Si tiene instalados diferentes JDK, asegúrese de que la variable de entorno JAVA_HOME apunte a la que utiliza su instalación de Ghidra.
La extensión se construirá específicamente para esa versión de Ghidra.
Y luego ve la carpeta bindiffhelper en tu carcasa y haz
Esto construirá tanto Binexport en el submódulo respectivo como BindiffHelper en el directorio principal. Debería haber habido un archivo .zip creado en el directorio DIST. Use ese archivo .zip para instalar de acuerdo con las instrucciones anteriores.
Configuración de desarrollo / depuración
A veces es útil poder depurar la extensión junto con Ghidra, aquí hay algunas notas al respecto:
- Clon y construir ghidra y dejar que Gradle cree proyectos de eclipse de acuerdo con la devguida
- Importar los proyectos en Eclipse (asegúrese de que tenga complementos relevantes para el desarrollo de la extensión)
- Construir e instalar ghidradev
- Desempaqué la construcción de Ghidra y vincule Ghidradev. Tal vez tenga que configurar la variable de entorno
GHIDRA_INSTALL_DIR - Ejecute Ghidra desde Eclipse e instale la extensión de Binexport
- Crear proyecto de eclipse de bindiffhelper con
gradle build eclipse - Importarlo en eclipse y usar ghidradev para vincularlo a la construcción de ghidra
- Depurar as-> ghidra
Al depurar Ghidra con la extensión fuera del eclipse, la extensión se carga automáticamente en Ghidra (no pase por la instalación de extensión habitual). Sin embargo, el complemento debe estar habilitado en el explorador de código.
Referencias
- https://github.com/google/bindiff/releases
- https://www.zynamics.com/bindiff/manual/
- https://github.com/google/binexport/
Íconos de: iconos gratis de fatcow