Copyright 2011-2024 Google LLC.
Descargo de responsabilidad: este no es un producto oficial de Google (experimental o no), es solo un código que es propiedad de Google.
Binexport es el componente exportador de Bindiff. Es un complemento/extensión para los desapee Ida Pro, Ninja y Ghidra binarios que exporta los datos de desmontaje en el formato del búfer de protocolo que Bindiff requiere.
Una versión experimental para la suite de ingeniería inversa de software de código abierto Ghidra está disponible en el directorio java/BinExport .
Este repositorio contiene el código fuente completo necesario para construir binarios de complementos de Binexport para Linux, MacOS y Windows.
Descargue los binarios de la página de versiones y copie en el directorio de complementos IDA Pro. Estas son las rutas predeterminadas:
| Sistema operativo | Ruta de complemento |
|---|---|
| Linux | /opt/idapro-8.2/plugins |
| macosa | /Applications/IDA Pro 8.2/idabin/plugins |
| Windows | %ProgramFiles%IDA 8.2plugins |
Para instalar solo para el usuario actual, copie los archivos en uno de estos directorios en su lugar:
| Sistema operativo | Complemento |
|---|---|
| Linux/macOS | ~/.idapro/plugins |
| Windows | %AppData%Hex-RaysIDA Proplugins |
En IDA, seleccione Help | About programm...
Haga clic en Addons...
Si se instala correctamente, aparece el siguiente cuadro de diálogo:

Descargue los binarios de la página de versiones y cottelas en el directorio binario Ninja Plugins. Estas son las rutas predeterminadas para el usuario actual:
| Sistema operativo | Ruta de complemento |
|---|---|
| Linux | ~/.binaryninja/plugins |
| macosa | ~/Library/Application Support/Binary Ninja/plugins/ |
| Windows | %AppData%Binary Ninjaplugins |
Log . Si esto no es visible, habilítelo a través de View | Native Docks | Show Log . BinExport 12 (@internal, Jan 3 2023), (c)2004-2011 zynamics GmbH, (c)2011-2024 Google LLC.
File | Install Extensions...ghidra_BinExport.zip que descargó en el paso 1 y haga clic en OK .OK dos veces para cerrar tanto el cuadro de diálogo "Instalar extensiones" como el aviso para reiniciar Ghidra.File | Install Extensions...El caso de uso principal es a través de Bindiff. Sin embargo, Binexport también se puede utilizar para exportar el desmontaje en diferentes formatos:
Abra una base de datos IDA Pro
Seleccione Edit | Plugins | BinExport 12
Aparece el siguiente cuadro de diálogo:

Seleccione el tipo de archivo que se exportará
El complemento Binexport registra las funciones IDC a continuación.
| Nombre de la función IDC | Exportaciones a | Argumentos |
|---|---|---|
| Binexportbinary | Búfer de protocolo | Nombre del archivo |
| BinexportText | Volcado de archivo de texto | Nombre del archivo |
| Binexportstatistics | Archivo de texto estadístico | Nombre del archivo |
Alternativamente, el complemento se puede invocar desde IDC llamando directamente a su función principal:
static main () {
batch ( 0 );
auto_wait ();
load_and_run_plugin ( "binexport12_ida" , 2 /* kBinary */ );
qexit ( 0 );
}Tenga en cuenta que esto proporciona cualquier control sobre el nombre de archivo de salida. Binexport siempre usará el nombre de archivo de la base de datos cargada actualmente (sin extensión) y adjuntar ".binexport".
Los argumentos son los mismos que para IDC (enumerados anteriormente).
Ejemplo de invocación de una de las funciones IDC registradas:
import idaapi
idaapi . ida_expr . eval_idc_expr ( None , ida_idaapi . BADADDR ,
'BinExportBinary("exported.BinExport");' )Binexport define las siguientes opciones de complemento, que se pueden especificar en la línea de comando de Ida:
| Opción | Descripción |
|---|---|
-OBinExportAutoAction:<ACTION> | Invocar una función y salida de Binexport IDC |
-OBinExportModule:<PARAM> | Argumento para BinExportAutoAction |
-OBinExportLogFile:<FILE> | Registrar mensajes a un archivo |
-OBinExportAlsoLogToStdErr:TRUE | Si se especifica, también registre al error estándar |
-OBinExportX86NoReturnHeuristic:TRUE | Habilitar la heurística específica de x86 para identificar funciones no retornadas |
Nota: Estas opciones deben venir antes de cualquier archivo.
Solo hay una integración mínima en la interfaz de usuario de Ninja binaria en este momento.
Tools | Plugins | BinExport . Esto comenzará el proceso de exportación. El archivo .BinExport se coloca junto a la base de datos de análisis, en el mismo directorio.
File | Import File...Export... desde el menú contextual..BinExport se agregará automáticamente. El guión BinExport.java Ghidra se puede ejecutar tanto en modo sin cabeza como GUI. En modo GUI, está disponible en la categoría BinExport en el administrador de script. Para el modo sin cabeza, se puede usar un archivo BinExport.properties con el siguiente contenido (o similar, dependiendo de las opciones que desee usar):
Choose export file Export = test.BinExport
Choose options IDA Pro Compatibility = "Subtract Imagebase;Remap mnemonics;Prepend Namespace to Function Names"
Crear un proyecto, importar y analizar un binario:
$ ./analyzeHeadless <project_location> <project_name> -import <file>
Ejecute BinExport.java que generará el archivo .BinExport especificado en BinExport.properties :
$ ./analyzeHeadless <project_location> <project_name> -process <file> -propertiesPath <path> -preScript BinExport.java -noanalysis
Alternativamente, use argumentos de línea de comandos en lugar de BinExport.properties :
$ ./analyzeHeadless <project_location> <project_name> -process <file> -preScript BinExport.java test.BinExport "Prepend Namespace to Function Names" -noanalysis
A continuación se presentan instrucciones de compilación para los complementos de código nativos para IDA Pro y Binary Ninja. Para construir la extensión basada en Java para Ghidra, consulte el Binexport para obtener instrucciones de Ghidra.
Hay bastantes dependencias para satisfacer:
boost_parts )third_party/idasdk )El entorno de construcción preferido es Debian 11 ("Bullseye").
Esto debería instalar todos los paquetes necesarios:
sudo apt update -qq
sudo apt install -qq --no-install-recommends build-essentialInstale la última versión estable de Cmake:
wget https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-linux-x86_64.sh
mkdir ${HOME} /cmake
sh cmake-3.25.1-Linux-x86_64.sh --prefix= ${HOME} /cmake --exclude-subdir
export PATH= ${HOME} /cmake/bin: ${PATH}Las siguientes secciones suponen que su directorio de trabajo actual está en la raíz del repositorio clonado.
Descomprima el contenido del IDA SDK en third_party/idasdk . Los comandos mostrados son para Ida Pro 8.2:
unzip PATH/TO/idasdk_pro82.zip -d third_party/idasdk
mv third_party/idasdk/idasdk_pro82/ * third_party/idasdk
rmdir third_party/idasdk/idasdk_pro82Con todos los requisitos previos en su lugar, configure y construya Binexport y ejecute sus pruebas:
mkdir -p build_linux && cd build_linux
cmake ..
-G Ninja
-DCMAKE_BUILD_TYPE=Release
" -DCMAKE_INSTALL_PREFIX= ${PWD} "
-DBINEXPORT_ENABLE_IDAPRO=ON
" -DIdaSdk_ROOT_DIR= ${PWD} /../third_party/idasdk "
-DBINEXPORT_ENABLE_BINARYNINJA=ON
cmake --build . --config Release
ctest --build-config Release --output-on-failure
cmake --install . --config Release --strip Nota: Si no desea usar ninja para realizar la compilación real, omita la parte -G Ninja .
Para deshabilitar el IDA Pro Build, set -DBINEXPORT_ENABLE_IDAPRO=OFF . Del mismo modo, para deshabilitar la construcción de ninja binarios, set -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
Esto descargará y construirá ABSEIL, Googletest, Buffers de protocolos y la API Ninja Binary. Si todo salió bien, el directorio build_linux/binexport-prefix debe contener dos archivos binexport12_ida.so y binexport12_ida64.so (para usar con ida e ida64 , respectivamente), así como binexport12_binaryninja.so (para binary ninja).
El entorno de construcción preferido es MacOS 13 "Ventura" usando Xcode 15.1. El uso de MacOS 12 "Monterey" también debería funcionar.
Después de instalar las herramientas de desarrollador, asegúrese de instalar las herramientas de línea de comandos también:
sudo xcode-select --installLas siguientes secciones suponen que su directorio de trabajo actual está en la raíz del repositorio clonado.
Descargue la última versión estable de Cmake desde el sitio oficial y monte su imagen de disco:
curl -fsSL https://github.com/Kitware/CMake/releases/download/v3.25.1/cmake-3.25.1-Darwin-x86_64.dmg
-o $HOME /Downloads/cmake-osx.dmg
hdiutil attach $HOME /Downloads/cmake-osx.dmgEn este punto, deberá revisar y aceptar el acuerdo de licencia de CMake. Ahora instale cmake:
sudo cp -Rf /Volumes/cmake-3.25.1-Darwin-x86_64/CMake.app /Applications/
hdiutil detach /Volumes/cmake-3.25.1-Darwin-x86_64
sudo /Applications/CMake.app/Contents/bin/cmake-gui --installEl último comando hace que Cmake esté disponible en la ruta del sistema.
Descomprima el contenido del IDA SDK en third_party/idasdk . Los comandos mostrados son para Ida Pro 8.2:
unzip PATH/TO/idasdk_pro82.zip -d third_party/idasdk
mv third_party/idasdk/idasdk_pro82/ * third_party/idasdk
rmdir third_party/idasdk/idasdk_pro82Con todos los requisitos previos en su lugar, configure y construya Binexport y ejecute sus pruebas:
mkdir -p build_mac && cd build_mac
cmake ..
-DCMAKE_BUILD_TYPE=Release
" -DCMAKE_INSTALL_PREFIX= ${PWD} "
-DBINEXPORT_ENABLE_IDAPRO=ON
" -DIdaSdk_ROOT_DIR= ${PWD} /../third_party/idasdk "
-DBINEXPORT_ENABLE_BINARYNINJA=ON
cmake --build . --config Release -- " -j $( sysctl -n hw.logicalcpu ) "
ctest --build-config Release --output-on-failure
cmake --install . --config Release --stripNota: Esto usará el "Generador Makefile" estándar CMake. También puede usar Xcode o Ninja como generadores.
Para deshabilitar el IDA Pro Build, set -DBINEXPORT_ENABLE_IDAPRO=OFF . Del mismo modo, para deshabilitar la construcción de ninja binarios, set -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
Esto descargará y construirá ABSEIL, Googletest, Buffers de protocolos y la API Ninja Binary. Si todo salió bien, el directorio build_mac/binexport-prefix debe contener dos archivos binexport12_ida.dylib y binexport12_ida64.dylib (para usar con ida e ida64 , respectivamente), así como binexport12_binaryninja.dylib (para binary ninja).
El entorno de compilación preferido es Windows 10 (64 bits Intel) utilizando el compilador de Visual Studio 2022 y el SDK de Windows para Windows 10.
Descargue e instale el último CMake estable (3.25.1 al momento de escribir) desde su página de descarga. Asegúrese de seleccionar "Agregar cmake a la ruta del sistema para todos los usuarios".
Descargue e instale Git desde su página de descarga. Asegúrese de seleccionar las siguientes opciones: * El directorio de instalación debe dejarse en el %ProgramFiles%Gitbingit.exe * "Use GIT desde el símbolo del sistema de Windows": haga que la utilidad de configuración agregue Git a su ruta del sistema. * "Use la ventana de consola predeterminada de Windows": para poder usar GIT del símbolo del sistema regular.
Las siguientes secciones asumen un símbolo del sistema abierto con el directorio de trabajo actual ubicado en la raíz del repositorio de Binexport clonado:
git clone https://github.com/google/binexport.git
cd binexport Descomprima el contenido del IDA SDK en third_party/idasdk . Los comandos mostrados son para Ida Pro 8.2, suponiendo que GIT se instaló primero en el directorio predeterminado:
" %ProgramFiles% Gitusrbinunzip " PATHTOidasdk_pro82.zip -d third_party
rename third_partyidasdk_pro82 idasdkCon todos los requisitos previos en su lugar, configure y construya Binexport:
if not exist build_msvc mkdir build_msvc
cd build_msvc
cmake .. ^
-G " Visual Studio 17 2022 " ^
-DCMAKE_BUILD_TYPE=Release ^
" -DCMAKE_INSTALL_PREFIX= %cd% " ^
-DBINEXPORT_ENABLE_IDAPRO=ON ^
-DIdaSdk_ROOT_DIR= %cd% ..third_partyidasdk ^
-DBINEXPORT_ENABLE_BINARYNINJA=ON
cmake --build . --config Release -- /m /clp:NoSummary;ForceNoAlign /v:minimal
ctest --build-config Release --output-on-failure
cmake --install . --config Release --stripNota: Esto usará el generador de "Visual Studio" CMake. También puedes usar el generador ninja.
Para deshabilitar el IDA Pro Build, set -DBINEXPORT_ENABLE_IDAPRO=OFF . Del mismo modo, para deshabilitar la construcción de ninja binarios, set -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
Esto descargará y construirá ABSEIL, Googletest, Buffers de protocolos y la API Ninja Binary. Si todo salió bien, el directorio build_msvc/binexport-prefix debe contener dos archivos binexport12_ida.dll y binexport12_ida64.dll (para usar con ida.exe e ida64.exe , respectivamente) así como binexport12_binaryninja.dll (para binary ninja).