Copyright 2011-2024 Google LLC.
Isenção de responsabilidade: este não é um produto oficial do Google (experimental ou não), é apenas um código que é de propriedade do Google.
Binexport é o componente exportador do Bindiff. É um plug -in/extensão para os desmontadores IDA Pro, binário ninja e ghidra que exportam dados de desmontagem para o formato de buffer de protocolo que o Bindiff exige.
Uma versão experimental para o software de código aberto da Suite de Engenharia Reverse Ghidra está disponível no diretório java/BinExport .
Este repositório contém o código -fonte completo necessário para criar binários de plug -in Binexport para Linux, MacOS e Windows.
Faça o download dos binários da página de lançamentos e copie -os no diretório do Plugins IDA Pro. Estes são os caminhos padrão:
| OS | Caminho do plug -in |
|---|---|
| Linux | /opt/idapro-8.2/plugins |
| macos | /Applications/IDA Pro 8.2/idabin/plugins |
| Windows | %ProgramFiles%IDA 8.2plugins |
Para instalar apenas para o usuário atual, copie os arquivos em um desses diretórios:
| OS | Plugin |
|---|---|
| Linux/MacOS | ~/.idapro/plugins |
| Windows | %AppData%Hex-RaysIDA Proplugins |
Em Ida, selecione Help | About programm...
Clique em Addons...
Se instalado corretamente, a seguinte caixa de diálogo será exibida:

Faça o download dos binários da página de lançamentos e copie -os no diretório binário dos plug -ins Ninja. Estes são os caminhos padrão para o usuário atual:
| OS | Caminho do plug -in |
|---|---|
| Linux | ~/.binaryninja/plugins |
| macos | ~/Library/Application Support/Binary Ninja/plugins/ |
| Windows | %AppData%Binary Ninjaplugins |
Log . Se isso não estiver visível, habilite -o via 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 você baixou na etapa 1 e clique em OK .OK duas vezes para fechar a caixa de diálogo "Instalar extensões" e o aviso para reiniciar Ghidra.File | Install Extensions...O principal caso de uso é via Bindiff. No entanto, o Binexport também pode ser usado para exportar desmontagem para diferentes formatos:
Abra um banco de dados IDA Pro
Selecione Edit | Plugins | BinExport 12
A seguinte caixa de diálogo aparece:

Selecione o tipo de arquivo a ser exportado
O plug -in Binexport registra as funções IDC abaixo.
| Nome da função IDC | Exporta para | Argumentos |
|---|---|---|
| BinexportBinary | Buffer de protocolo | nome do arquivo |
| BinexportText | Despejo de arquivo de texto | nome do arquivo |
| BinexportStatistics | Arquivo de texto de estatísticas | nome do arquivo |
Como alternativa, o plug -in pode ser chamado da IDC chamando sua função principal diretamente:
static main () {
batch ( 0 );
auto_wait ();
load_and_run_plugin ( "binexport12_ida" , 2 /* kBinary */ );
qexit ( 0 );
}Observe que isso fornece qualquer controle sobre o nome do arquivo de saída. O BINEXPORT sempre usará o nome do arquivo do banco de dados atualmente carregado (sem extensão) e anexará ".binexport".
Os argumentos são os mesmos do IDC (listado acima).
Exemplo de invocação de uma das funções IDC registradas:
import idaapi
idaapi . ida_expr . eval_idc_expr ( None , ida_idaapi . BADADDR ,
'BinExportBinary("exported.BinExport");' )Binexport define as seguintes opções de plug -in, que podem ser especificadas na linha de comando da Ida:
| Opção | Descrição |
|---|---|
-OBinExportAutoAction:<ACTION> | Invoque uma função Binexport IDC e saída |
-OBinExportModule:<PARAM> | Argumento para BinExportAutoAction |
-OBinExportLogFile:<FILE> | Registrar mensagens para um arquivo |
-OBinExportAlsoLogToStdErr:TRUE | Se especificado, também faça login para um erro padrão |
-OBinExportX86NoReturnHeuristic:TRUE | Habilite a heurística específica para x86 para identificar funções que não retornam |
NOTA: Essas opções devem vir antes de qualquer arquivo.
Existe apenas uma integração mínima na interface do usuário ninja binária neste momento.
Tools | Plugins | BinExport . Isso iniciará o processo de exportação. O arquivo .BinExport é colocado ao lado do banco de dados de análise, no mesmo diretório.
File | Import File...Export... no menu de contexto..BinExport será anexado automaticamente. O script BinExport.java ghidra pode ser executado no modo sem cabeça e GUI. No modo GUI, ele está disponível na categoria BinExport no gerenciador de scripts. Para o modo sem cabeça, um arquivo BinExport.properties com o seguinte conteúdo (ou similar, dependendo das opções que você deseja usar) pode ser usado:
Choose export file Export = test.BinExport
Choose options IDA Pro Compatibility = "Subtract Imagebase;Remap mnemonics;Prepend Namespace to Function Names"
Crie um projeto, importe e analise um binário:
$ ./analyzeHeadless <project_location> <project_name> -import <file>
Run BinExport.java , que gerará o arquivo .BinExport especificado em BinExport.properties :
$ ./analyzeHeadless <project_location> <project_name> -process <file> -propertiesPath <path> -preScript BinExport.java -noanalysis
Como alternativa, use argumentos da linha de comando em vez de BinExport.properties :
$ ./analyzeHeadless <project_location> <project_name> -process <file> -preScript BinExport.java test.BinExport "Prepend Namespace to Function Names" -noanalysis
Abaixo estão as instruções de construção para os plugins de código nativo para o IDA Pro e o Ninja binário. Para construir a extensão baseada em Java para Ghidra, consulte o Binexport para obter instruções de Ghidra.
Existem algumas dependências para satisfazer:
boost_parts )third_party/idasdk )O ambiente de construção preferido é o Debian 11 ("Bullseye").
Isso deve instalar todos os pacotes necessários:
sudo apt update -qq
sudo apt install -qq --no-install-recommends build-essentialInstale a versão estável mais recente do 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}As seções a seguir assumem que seu diretório de trabalho atual está na raiz do repositório clonado.
Descompacte o conteúdo do IDA SDK em third_party/idasdk . Os comandos mostrados são 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_pro82Com todos os pré -requisitos no lugar, configure e construa a Binexport e execute seus testes:
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: Se você não deseja usar o Ninja para executar a compilação real, omite a parte -G Ninja .
Para desativar o Build IDA Pro, set -DBINEXPORT_ENABLE_IDAPRO=OFF . Da mesma forma, para desativar a construção ninja binária, set -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
Isso baixará e construirá abseil, GoogleTest, Buffers de protocolo e a API binária Ninja. Se tudo correr bem, o diretório build_linux/binexport-prefix deve conter dois arquivos binexport12_ida.so e binexport12_ida64.so (para uso com ida e ida64 , respectivamente), bem como binexport12_binaryninja.so (para Binária Ninja).
O ambiente de construção preferido é o MacOS 13 "Ventura" usando o Xcode 15.1. O uso do MacOS 12 "Monterey" também deve funcionar.
Depois de instalar as ferramentas do desenvolvedor, também instale as ferramentas da linha de comando:
sudo xcode-select --installAs seções a seguir assumem que seu diretório de trabalho atual está na raiz do repositório clonado.
Faça o download da mais recente versão estável do cmake no site oficial e monte sua imagem 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.dmgNeste ponto, você precisará revisar e aceitar o contrato de licença da CMake. Agora instale o 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 --installO último comando disponibiliza o CMake no caminho do sistema.
Descompacte o conteúdo do IDA SDK em third_party/idasdk . Os comandos mostrados são 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_pro82Com todos os pré -requisitos no lugar, configure e construa a Binexport e execute seus testes:
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: Isso usará o cmake padrão "Makefile Generator". Você também pode usar o Xcode ou Ninja como geradores.
Para desativar o Build IDA Pro, set -DBINEXPORT_ENABLE_IDAPRO=OFF . Da mesma forma, para desativar a construção ninja binária, set -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
Isso baixará e construirá abseil, GoogleTest, Buffers de protocolo e a API binária Ninja. Se tudo correr bem, o diretório build_mac/binexport-prefix deve conter dois arquivos binexport12_ida.dylib e binexport12_ida64.dylib (para uso com ida e ida64 , respectivamente) e binexport12_binaryninja.dylib (para binary nin).
O ambiente de construção preferido é o Windows 10 (Intel de 64 bits) usando o compilador Visual Studio 2022 e o Windows SDK para o Windows 10.
Faça o download e instale o mais recente cmake estável (3.25.1 no momento da redação) da página de download. Certifique -se de selecionar "Adicionar cmake ao caminho do sistema para todos os usuários".
Faça o download e instale o Git na página de download. Certifique -se de selecionar as seguintes opções: * O diretório de instalação deve ser deixado no Padrão %ProgramFiles%Gitbingit.exe * "Use Git do prompt de comando do Windows" - peça ao utilitário de configuração Adicionar Git ao caminho do seu sistema. * "Use a janela do console padrão do Windows" - para poder usar o GIT do prompt de comando regular.
As seções a seguir assumem um prompt de comando aberto com o diretório de trabalho atual localizado na raiz do repositório de Binexport clonado:
git clone https://github.com/google/binexport.git
cd binexport Descompacte o conteúdo do IDA SDK em third_party/idasdk . Os comandos mostrados são para o IDA Pro 8.2, assumindo que o GIT foi instalado no diretório padrão primeiro:
" %ProgramFiles% Gitusrbinunzip " PATHTOidasdk_pro82.zip -d third_party
rename third_partyidasdk_pro82 idasdkCom todos os pré -requisitos no lugar, configure e construa 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: Isso usará o gerador "Visual Studio" CMake. Você também pode usar o gerador ninja.
Para desativar o Build IDA Pro, set -DBINEXPORT_ENABLE_IDAPRO=OFF . Da mesma forma, para desativar a construção ninja binária, set -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
Isso baixará e construirá abseil, GoogleTest, Buffers de protocolo e a API binária Ninja. Se tudo correu bem, o diretório build_msvc/binexport-prefix deve conter dois arquivos binexport12_ida.dll e binexport12_ida64.dll (para uso com ida.exe e ida64.exe , respectivamente), bem como binexport12_binaryninja.dll .