Copyright 2011-2024 Google LLC.
Avertissement: ce n'est pas un produit Google officiel (expérimental ou autre), c'est juste du code qui appartient à Google.
Binexport est le composant exportateur de BindIFF. Il s'agit d'un plugin / extension pour les démontraires IDA Pro, Ninja et Ghidra binaires qui exportent des données de démontage dans le format de tampon de protocole dont Bindiff a besoin.
Une version expérimentale de la suite d'ingénierie Open Source Software Reverse, Ghidra est disponible dans le répertoire java/BinExport .
Ce référentiel contient le code source complet nécessaire pour créer des binaires de plugin Binexport pour Linux, MacOS et Windows.
Téléchargez les binaires à partir de la page des versions et copiez-les dans le répertoire des plugins IDA Pro. Ce sont les chemins par défaut:
| OS | Chemin du plugin |
|---|---|
| Linux | /opt/idapro-8.2/plugins |
| macos | /Applications/IDA Pro 8.2/idabin/plugins |
| Fenêtre | %ProgramFiles%IDA 8.2plugins |
Pour installer uniquement pour l'utilisateur actuel, copiez les fichiers dans l'un de ces répertoires à la place:
| OS | Plugin |
|---|---|
| Linux / macOS | ~/.idapro/plugins |
| Fenêtre | %AppData%Hex-RaysIDA Proplugins |
Dans Ida, sélectionnez Help | About programm...
Cliquez sur Addons...
S'il est installé correctement, la boîte de dialogue suivante apparaît:

Téléchargez les binaires à partir de la page des versions et copiez-les dans le répertoire binaire des plugins Ninja. Ce sont les chemins par défaut pour l'utilisateur actuel:
| OS | Chemin du plugin |
|---|---|
| Linux | ~/.binaryninja/plugins |
| macos | ~/Library/Application Support/Binary Ninja/plugins/ |
| Fenêtre | %AppData%Binary Ninjaplugins |
Log . Si ce n'est pas visible, activez-le 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 vous avez téléchargé à l'étape 1 et cliquez sur OK .OK deux fois pour fermer à la fois la boîte de dialogue "Installer Extensions" et le préavis pour redémarrer Ghidra.File | Install Extensions...Le cas d'utilisation principal est via BindIFF. Cependant, Binexport peut également être utilisé pour exporter le démontage dans différents formats:
Ouvrez une base de données IDA Pro
Sélectionnez Edit | Plugins | BinExport 12
La boîte de dialogue suivante apparaît:

Sélectionnez le type du fichier à exporter
Le plugin Binexport enregistre les fonctions IDC ci-dessous.
| Nom de la fonction IDC | Exportations vers | Arguments |
|---|---|---|
| Binexportbinaire | Tampon de protocole | nom de fichier |
| Binexporttext | Vidage de fichier texte | nom de fichier |
| Binexportstatistics | Fichier texte statistique | nom de fichier |
Alternativement, le plugin peut être invoqué à partir de IDC en appelant directement sa fonction principale:
static main () {
batch ( 0 );
auto_wait ();
load_and_run_plugin ( "binexport12_ida" , 2 /* kBinary */ );
qexit ( 0 );
}Notez que cela fournit un contrôle sur le nom de fichier de sortie. Binexport utilisera toujours le nom de fichier de la base de données actuellement chargée (sans extension) et ajoute ".binexport".
Les arguments sont les mêmes que pour IDC (énuméré ci-dessus).
Exemple d'invocation de l'une des fonctions IDC enregistrées:
import idaapi
idaapi . ida_expr . eval_idc_expr ( None , ida_idaapi . BADADDR ,
'BinExportBinary("exported.BinExport");' )Binexport définit les options de plugin suivantes, qui peuvent être spécifiées sur la ligne de commande d'IDA:
| Option | Description |
|---|---|
-OBinExportAutoAction:<ACTION> | Invoquez une fonction Binexport IDC et sortie |
-OBinExportModule:<PARAM> | Argument pour BinExportAutoAction |
-OBinExportLogFile:<FILE> | Enregistrer les messages à un fichier |
-OBinExportAlsoLogToStdErr:TRUE | Si spécifié, enregistrez également à l'erreur standard |
-OBinExportX86NoReturnHeuristic:TRUE | Activer l'heuristique spécifique à x86 pour identifier les fonctions non retournées |
Remarque: ces options doivent être présentées avant tout fichier.
Il n'y a qu'une intégration minimale dans l'interface utilisateur ninja binaire à ce moment.
Tools | Plugins | BinExport . Cela commencera le processus d'exportation. Le fichier .BinExport est placé à côté de la base de données d'analyse, dans le même répertoire.
File | Import File...Export... dans le menu contextuel..BinExport sera automatiquement ajouté. Le script BinExport.java Ghidra peut être exécuté en mode sans tête et GUI. En mode GUI, il est disponible dans la catégorie BinExport dans le gestionnaire de scripts. Pour le mode sans tête, un fichier BinExport.properties avec le contenu suivant (ou similaire, selon les options que vous souhaitez utiliser) peut être utilisé:
Choose export file Export = test.BinExport
Choose options IDA Pro Compatibility = "Subtract Imagebase;Remap mnemonics;Prepend Namespace to Function Names"
Créez un projet, importez et analysez un binaire:
$ ./analyzeHeadless <project_location> <project_name> -import <file>
Exécutez BinExport.java qui générera le fichier .BinExport spécifié dans BinExport.properties :
$ ./analyzeHeadless <project_location> <project_name> -process <file> -propertiesPath <path> -preScript BinExport.java -noanalysis
Alternativement, utilisez des arguments en ligne de commande au lieu de BinExport.properties :
$ ./analyzeHeadless <project_location> <project_name> -process <file> -preScript BinExport.java test.BinExport "Prepend Namespace to Function Names" -noanalysis
Vous trouverez ci-dessous des instructions pour les plugins de code natifs pour IDA Pro et ninja binaire. Pour construire l'extension basée sur Java pour Ghidra, veuillez vous référer aux instructions Binexport pour Ghidra.
Il y a pas mal de dépendances à satisfaire:
boost_parts )third_party/idasdk )L'environnement de construction préféré est Debian 11 ("Bullseye").
Cela devrait installer tous les packages nécessaires:
sudo apt update -qq
sudo apt install -qq --no-install-recommends build-essentialInstallez la dernière version stable 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}Les sections suivantes supposent que votre répertoire de travail actuel est à la racine du référentiel cloné.
Décompressez le contenu du SDK IDA dans third_party/idasdk . Les commandes affichées sont pour 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_pro82Avec toutes les conditions préalables en place, configurer et construire Binexport et exécuter ses tests:
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 Remarque: Si vous ne souhaitez pas utiliser Ninja pour effectuer la construction réelle, omettez la partie -G Ninja .
Pour désactiver la construction IDA Pro, définissez -DBINEXPORT_ENABLE_IDAPRO=OFF . De même, pour désactiver la construction ninja binaire, set -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
Cela téléchargera et construire une Abseil, un googlest, des tampons de protocole et l'API ninja binaire. Si tout s'est bien passé, le répertoire build_linux/binexport-prefix doit contenir deux les fichiers binexport12_ida.so et binexport12_ida64.so (pour une utilisation avec ida et ida64 , respectivement) ainsi que binexport12_binaryninja.so (pour le ninja binaire).
L'environnement de construction préféré est MacOS 13 "Ventura" en utilisant Xcode 15.1. L'utilisation de MacOS 12 "Monterey" devrait également fonctionner.
Après avoir installé les outils du développeur, assurez-vous d'installer également les outils de ligne de commande:
sudo xcode-select --installLes sections suivantes supposent que votre répertoire de travail actuel est à la racine du référentiel cloné.
Téléchargez la dernière version stable de CMake à partir du site officiel et montez son image disque:
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.dmgÀ ce stade, vous devrez revoir et accepter le contrat de licence de CMake. Installez maintenant 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 --installLa dernière commande rend CMake disponible dans le chemin du système.
Décompressez le contenu du SDK IDA dans third_party/idasdk . Les commandes affichées sont pour 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_pro82Avec toutes les conditions préalables en place, configurer et construire Binexport et exécuter ses tests:
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 --stripRemarque: Cela utilisera le CMake standard "MakeFile Generator". Vous pouvez également utiliser Xcode ou Ninja comme générateurs.
Pour désactiver la construction IDA Pro, définissez -DBINEXPORT_ENABLE_IDAPRO=OFF . De même, pour désactiver la construction ninja binaire, set -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
Cela téléchargera et construire une Abseil, un googlest, des tampons de protocole et l'API ninja binaire. Si tout s'est bien passé, le répertoire build_mac/binexport-prefix doit contenir deux les fichiers binexport12_ida.dylib et binexport12_ida64.dylib (pour une utilisation avec ida et ida64 , respectivement) ainsi que binexport12_binaryninja.dylib (pour le ninja binaire).
L'environnement de construction préféré est Windows 10 (Intel 64 bits) à l'aide du compilateur Visual Studio 2022 et du SDK Windows pour Windows 10.
Téléchargez et installez le dernier CMake stable (3.25.1 au moment de la rédaction) à partir de sa page de téléchargement. Assurez-vous de sélectionner "Ajouter CMake au chemin du système pour tous les utilisateurs".
Téléchargez et installez Git à partir de sa page de téléchargement. Assurez-vous de sélectionner les options suivantes: * Le répertoire d'installation doit être laissé à la par défaut %ProgramFiles%Gitbingit.exe * "Utilisez Git à partir de l'invite de commande Windows" - demandez à l'utilitaire de configuration d'ajouter Git à votre chemin système. * "Utilisez la fenêtre de la console par défaut de Windows" - pour pouvoir utiliser GIT à partir de l'invite de commande ordinaire.
Les sections suivantes supposent une invite de commande ouverte avec le répertoire de travail actuel situé à la racine du référentiel Binexport cloné:
git clone https://github.com/google/binexport.git
cd binexport Décompressez le contenu du SDK IDA dans third_party/idasdk . Les commandes affichées sont destinées à IDA Pro 8.2, en supposant que GIT a d'abord été installé dans le répertoire par défaut:
" %ProgramFiles% Gitusrbinunzip " PATHTOidasdk_pro82.zip -d third_party
rename third_partyidasdk_pro82 idasdkAvec toutes les conditions préalables en place, configurer et construire 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 --stripRemarque: Cela utilisera le générateur CMake "Visual Studio". Vous pouvez également utiliser le générateur Ninja.
Pour désactiver la construction IDA Pro, définissez -DBINEXPORT_ENABLE_IDAPRO=OFF . De même, pour désactiver la construction ninja binaire, set -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
Cela téléchargera et construire une Abseil, un googlest, des tampons de protocole et l'API ninja binaire. Si tout s'est bien passé, le répertoire build_msvc/binexport-prefix doit contenir deux les fichiers binexport12_ida.dll et binexport12_ida64.dll (pour une utilisation avec ida.exe et ida64.exe , respectivement) ainsi que binexport12_binaryninja.dll (pour ninja binaire).