Copyright 2011-2024 Google LLC。
免責事項:これは公式のGoogle製品(実験的またはその他)ではなく、Googleが所有するのは単なるコードです。
BinexportはBindiffの輸出要素です。これは、分解データをBindiffが要求するプロトコルバッファー形式にエクスポートするThe Resassemblers Ida Pro、Binary Ninja、およびGhidraのプラグイン/拡張機能です。
オープンソースソフトウェアリバースエンジニアリングスイートGhidraの実験バージョンはjava/BinExportディレクトリで入手できます。
このリポジトリには、Linux、MacOS、およびWindows用のBinexportプラグインバイナリを構築するために必要な完全なソースコードが含まれています。
リリースページからバイナリをダウンロードして、IDA Proプラグインディレクトリにコピーします。これらはデフォルトのパスです。
| OS | プラグインパス |
|---|---|
| Linux | /opt/idapro-8.2/plugins |
| macos | /Applications/IDA Pro 8.2/idabin/plugins |
| Windows | %ProgramFiles%IDA 8.2plugins |
現在のユーザーのためだけにインストールするには、代わりにこれらのディレクトリのいずれかにファイルをコピーします。
| OS | プラグイン |
|---|---|
| Linux/macos | ~/.idapro/plugins |
| Windows | %AppData%Hex-RaysIDA Proplugins |
IDAでは、 Helpを選択します| About programm...
Addons...
正しくインストールすると、次のダイアログボックスが表示されます。

リリースページからバイナリをダウンロードして、バイナリニンジャプラグインディレクトリにコピーします。これらは、現在のユーザーのデフォルトパスです。
| OS | プラグインパス |
|---|---|
| Linux | ~/.binaryninja/plugins |
| macos | ~/Library/Application Support/Binary Ninja/plugins/ |
| Windows | %AppData%Binary Ninjaplugins |
Logネイティブドックを選択します。これが見えない場合は、 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へのパスを入力し、 OKをクリックします。OKを2回クリックして、「インストール拡張機能」ダイアログとGhidraを再起動する通知の両方を閉じます。File ] |を選択しますInstall Extensions...主なユースケースはBindiff経由です。ただし、Binexportを使用して、分解を異なる形式にエクスポートすることもできます。
IDA Proデータベースを開きます
Edit |を選択しますPlugins | BinExport 12
次のダイアログボックスが表示されます。

エクスポートするファイルのタイプを選択します
Binexportプラグインは、以下のIDC関数を登録します。
| IDC関数名 | への輸出 | 議論 |
|---|---|---|
| binexportbinary | プロトコルバッファー | ファイル名 |
| binexporttext | テキストファイルダンプ | ファイル名 |
| BinexportStatistics | 統計テキストファイル | ファイル名 |
または、メイン関数を直接呼び出すことにより、プラグインをIDCから呼び出すことができます。
static main () {
batch ( 0 );
auto_wait ();
load_and_run_plugin ( "binexport12_ida" , 2 /* kBinary */ );
qexit ( 0 );
}これにより、出力ファイル名に対する制御が提供されることに注意してください。 Binexportは、常に現在ロードされているデータベースのファイル名(拡張機能なし)を使用し、「.binexport」を追加します。
引数はIDCの場合と同じです(上記のリスト)。
登録されているIDC関数の1つの例の例:
import idaapi
idaapi . ida_expr . eval_idc_expr ( None , ida_idaapi . BADADDR ,
'BinExportBinary("exported.BinExport");' )Binexportは、IDAのコマンドラインで指定できる次のプラグインオプションを定義します。
| オプション | 説明 |
|---|---|
-OBinExportAutoAction:<ACTION> | Binexport IDC関数を呼び出して終了します |
-OBinExportModule:<PARAM> | BinExportAutoActionの議論 |
-OBinExportLogFile:<FILE> | ファイルへのログメッセージ |
-OBinExportAlsoLogToStdErr:TRUE | 指定されている場合は、標準エラーにもログを記録します |
-OBinExportX86NoReturnHeuristic:TRUE | x86固有のヒューリスティックを有効にして、非復帰関数を識別します |
注:これらのオプションは、ファイルの前に来る必要があります。
現時点では、バイナリニンジャUIへの統合は最小限だけです。
Toolsを選択| Plugins | BinExport 。これにより、エクスポートプロセスが開始されます。 .BinExportファイルは、同じディレクトリに分析データベースの横に配置されます。
Fileを使用してファイルを最初にインポートします| Import File...Export...を選択します。.BinExport自動的に追加されます。BinExport.java Ghidraスクリプトは、ヘッドレスモードとGUIモードの両方で実行できます。 GUIモードでは、Script ManagerのBinExportカテゴリで利用できます。ヘッドレスモードの場合、次のコンテンツを含むBinExport.propertiesファイル(使用するオプションに応じて)を使用できます。
Choose export file Export = test.BinExport
Choose options IDA Pro Compatibility = "Subtract Imagebase;Remap mnemonics;Prepend Namespace to Function Names"
プロジェクトを作成し、バイナリをインポートして分析します。
$ ./analyzeHeadless <project_location> <project_name> -import <file>
BinExport.propertiesで指定された.BinExportファイルを生成するBinExport.javaを実行します。
$ ./analyzeHeadless <project_location> <project_name> -process <file> -propertiesPath <path> -preScript BinExport.java -noanalysis
または、 BinExport.propertiesの代わりにコマンドライン引数を使用します。
$ ./analyzeHeadless <project_location> <project_name> -process <file> -preScript BinExport.java test.BinExport "Prepend Namespace to Function Names" -noanalysis
以下は、IDA Proおよびバイナリニンジャのネイティブコードプラグインのビルド手順です。 Ghidra用のJavaベースの拡張機能を構築するには、Ghidraの指示についてはBinexportを参照してください。
満たすべき依存関係がかなりあります。
boost_partsの1.83.0船の部分コピー)third_party/idasdkに編集)好ましいビルド環境はDebian 11(「Bullseye」)です。
これにより、必要なすべてのパッケージをインストールする必要があります。
sudo apt update -qq
sudo apt install -qq --no-install-recommends build-essentialcmakeの最新の安定バージョンをインストールしてください:
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}次のセクションでは、現在の作業ディレクトリがクローンリポジトリのルートにあると想定しています。
IDA SDKのコンテンツをthird_party/idasdkに解凍します。表示されているコマンドは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_pro82すべての前提条件を設定して、Binexportを構成および構築し、テストを実行します。
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注:忍者を使用して実際のビルドを実行したくない場合は、 -G Ninjaパーツを省略します。
IDA Pro Buildを無効にするには、 -DBINEXPORT_ENABLE_IDAPRO=OFF setを設定します。同様に、バイナリNinja Buildを無効にするには、 -DBINEXPORT_ENABLE_BINARYNINJA=OFF set set -dbinexport_enable_binaryninja = set。
これにより、Abseil、Googletest、プロトコルバッファ、およびバイナリNinja APIをダウンロードして構築します。すべてがうまくいった場合、 build_linux/binexport-prefixディレクトリには、2つのファイルbinexport12_ida.soとbinexport12_ida64.so (それぞれidaとida64で使用します)とbinexport12_binaryninja.so (binary ninja)を含む必要があります。
好ましいビルド環境は、Xcode 15.1を使用したMacOS 13 "Ventura"です。 MacOS 12 "Monterey"を使用することも機能するはずです。
開発者ツールをインストールした後、コマンドラインツールもインストールしてください。
sudo xcode-select --install次のセクションでは、現在の作業ディレクトリがクローンリポジトリのルートにあると想定しています。
公式サイトからcmakeの最新の安定したバージョンをダウンロードし、そのディスク画像をマウントします。
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この時点で、Cmakeのライセンス契約を確認して受け入れる必要があります。 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 --install最後のコマンドでは、システムパスでcmakeを利用可能にします。
IDA SDKのコンテンツをthird_party/idasdkに解凍します。表示されているコマンドは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_pro82すべての前提条件を設定して、Binexportを構成および構築し、テストを実行します。
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 --strip注:これは、標準のcmake「makefileジェネレーター」を使用します。 XcodeまたはNinjaを発電機としても使用できます。
IDA Pro Buildを無効にするには、 -DBINEXPORT_ENABLE_IDAPRO=OFF setを設定します。同様に、バイナリNinja Buildを無効にするには、 -DBINEXPORT_ENABLE_BINARYNINJA=OFF set set -dbinexport_enable_binaryninja = set。
これにより、Abseil、Googletest、プロトコルバッファ、およびバイナリNinja APIをダウンロードして構築します。すべてがうまくいった場合、 build_mac/binexport-prefixディレクトリには、2つのファイルを含む必要がありますbinexport12_ida.dylibとbinexport12_ida64.dylib (それぞれidaおよびida64で使用するため)とbinexport12_binaryninja.dylib (binary ninjaの場合)。
好ましいビルド環境は、Visual Studio 2022コンパイラとWindows 10用のWindows SDKを使用したWindows 10(64ビットIntel)です。
ダウンロードページから最新のstable cmake(執筆時点で3.25.1)をダウンロードしてインストールします。 「すべてのユーザーのシステムパスにcmakeを追加する」を選択してください。
ダウンロードページからgitをダウンロードしてインストールします。次のオプションを選択してください。 *インストールディレクトリは、デフォルトの%ProgramFiles%Gitbingit.exe * "Windowsコマンドプロンプトからgitを使用します" - セットアップユーティリティをシステムパスに追加する必要があります。 *「Windowsのデフォルトコンソールウィンドウを使用」 - 通常のコマンドプロンプトからGitを使用できるように。
次のセクションでは、クローン化されたBinexportリポジトリのルートにある現在の作業ディレクトリを備えたオープンコマンドプロンプトを想定しています。
git clone https://github.com/google/binexport.git
cd binexport IDA SDKのコンテンツをthird_party/idasdkに解凍します。表示されているコマンドは、Gitが最初にデフォルトディレクトリにインストールされたと仮定して、IDA Pro 8.2のものです。
" %ProgramFiles% Gitusrbinunzip " PATHTOidasdk_pro82.zip -d third_party
rename third_partyidasdk_pro82 idasdkすべての前提条件が整っていると、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 --strip注:これは、Cmakeの「Visual Studio」ジェネレーターを使用します。忍者ジェネレーターも使用できます。
IDA Pro Buildを無効にするには、 -DBINEXPORT_ENABLE_IDAPRO=OFF setを設定します。同様に、バイナリNinja Buildを無効にするには、 -DBINEXPORT_ENABLE_BINARYNINJA=OFF set set -dbinexport_enable_binaryninja = set。
これにより、Abseil、Googletest、プロトコルバッファ、およびバイナリNinja APIをダウンロードして構築します。すべてがうまくいった場合、 build_msvc/binexport-prefixディレクトリには、2つのファイルbinexport12_ida.dllとbinexport12_ida64.dll (それぞれida.exeおよびida64.exeで使用して) binexport12_binaryninja.dll含む必要があります。