版权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)。