版權2011-2024 Google LLC。
免責聲明:這不是官方的Google產品(實驗或其他方式),而是恰好由Google擁有的代碼。
Binexport是Bindiff的出口商組成部分。它是拆卸器IDA Pro,二進制忍者和Ghidra的插件/擴展程序,將拆卸數據導出到Bindiff所需的協議緩衝區格式中。
java/BinExport目錄中可用開源軟件逆向工程套件Ghidra的實驗版本。
該存儲庫包含為Linux,MacOS和Windows構建Binexport插件所需的完整源代碼。
從發布頁面下載二進製文件,然後將其複製到IDA Pro插件目錄中。這些是默認路徑:
| 作業系統 | 插件路徑 |
|---|---|
| Linux | /opt/idapro-8.2/plugins |
| macos | /Applications/IDA Pro 8.2/idabin/plugins |
| 視窗 | %ProgramFiles%IDA 8.2plugins |
要僅針對當前用戶安裝,請將文件複製到以下目錄之一中:
| 作業系統 | 插件 |
|---|---|
| Linux/MacOS | ~/.idapro/plugins |
| 視窗 | %AppData%Hex-RaysIDA Proplugins |
在IDA中,選擇Help | About programm...
點擊Addons...
如果正確安裝,將出現以下對話框:

從“版本”頁面下載二進製文件,然後將其複製到二進制忍者插件目錄中。這些是當前用戶的默認路徑:
| 作業系統 | 插件路徑 |
|---|---|
| Linux | ~/.binaryninja/plugins |
| macos | ~/Library/Application Support/Binary Ninja/plugins/ |
| 視窗 | %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兩次,以關閉“安裝擴展”對話框和重新啟動Ghidra的通知。File | Install Extensions...主要用例是通過bindiff。但是,Binexport也可以用來將拆卸為不同的格式:
打開IDA Pro數據庫
選擇Edit | Plugins | BinExport 12
出現以下對話框:

選擇要導出的文件的類型
Binexport插件在下面註冊IDC函數。
| IDC功能名稱 | 出口 | 爭論 |
|---|---|---|
| Binexportbinary | 協議緩衝區 | 文件名 |
| binexporttext | 文本文件轉儲 | 文件名 |
| Binexportstatistics | 統計文本文件 | 文件名 |
另外,可以通過直接調用其主函數來調用插件:
static main () {
batch ( 0 );
auto_wait ();
load_and_run_plugin ( "binexport12_ida" , 2 /* kBinary */ );
qexit ( 0 );
}請注意,這確實提供了對輸出文件名的任何控制。 Binexport將始終使用當前加載的數據庫的文件名(無擴展)並附加“ .binexport”。
參數與IDC相同(上面列出)。
註冊IDC功能之一的調用示例:
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模式下,它可在腳本管理器的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和Binary Ninja的本機代碼插件的構建說明。要為Ghidra構建基於Java的擴展名,請參考Binexport以獲取Ghidra說明。
有很多依賴性要滿足:
boost_parts中的1.83.0船的部分副本)third_party/idasdk )首選的構建環境是Debian 11(“ Bullseye”)。
這應該安裝所有必要的軟件包:
sudo apt update -qq
sudo apt install -qq --no-install-recommends build-essential安裝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}以下各節假定您當前的工作目錄是克隆存儲庫的根。
將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構建,請設置-DBINEXPORT_ENABLE_IDAPRO=OFF 。同樣,要禁用二進制忍者構建,請設置-DBINEXPORT_ENABLE_BINARYNINJA=OFF 。
這將下載並構建Abseil,Googletest,協議緩衝區和二進制忍者API。如果一切順利, build_linux/binexport-prefix目錄應包含兩個文件binexport12_ida.so和binexport12_ida64.so (分別與ida和IDA和ida64一起使用),以及binexport12_binaryninja.so (用於Binary Ninja)。
首選的構建環境是使用Xcode 15.1的MacOS 13“ Ventura”。使用MacOS 12“蒙特雷”也應起作用。
安裝開發人員工具後,請確保安裝命令行工具:
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 Generator”。您也可以將Xcode或Ninja用作發電機。
要禁用IDA Pro構建,請設置-DBINEXPORT_ENABLE_IDAPRO=OFF 。同樣,要禁用二進制忍者構建,請設置-DBINEXPORT_ENABLE_BINARYNINJA=OFF 。
這將下載並構建Abseil,Googletest,協議緩衝區和二進制忍者API。如果一切順利,則build_mac/binexport-prefix目錄應包含兩個文件binexport12_ida.dylib和binexport12_ida64.dylib (供ida和IDA和ida64 )以及binexport12_binaryninja.dylib (for Binary Ninja)。
首選的構建環境是Windows 10(64位Intel)使用Visual Studio 2022編譯器和Windows SDK的Windows 10。
從其下載頁面下載並安裝最新的穩定Cmake(在寫作時3.25.1)。確保選擇“為所有用戶的系統路徑添加CMAKE”。
從下載頁面下載並安裝git。確保選擇以下選項: *安裝目錄應在默認%ProgramFiles%Gitbingit.exe *“使用windows命令提示符中使用git” - 讓設置實用程序將git添加到系統路徑。 *“使用Windows的默認控制台窗口” - 能夠從常規命令提示符中使用git。
以下各節假設一個打開的命令提示符,當前工作目錄位於克隆的Binexport存儲庫的根部:
git clone https://github.com/google/binexport.git
cd binexport將IDA SDK的內容解壓縮到third_party/idasdk中。顯示的命令適用於IDA Pro 8.2,假設GIT首先安裝到默認目錄中:
" %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構建,請設置-DBINEXPORT_ENABLE_IDAPRO=OFF 。同樣,要禁用二進制忍者構建,請設置-DBINEXPORT_ENABLE_BINARYNINJA=OFF 。
這將下載並構建Abseil,Googletest,協議緩衝區和二進制忍者API。如果一切順利,則build_msvc/binexport-prefix目錄應包含兩個文件binexport12_ida.dll和binexport12_ida64.dll (可分別與ida.exe和ida64.exe一起使用),以及binexport12_binaryninja.dll (for binary ninja)。