Copyright 2011-2024 Google LLC.
Отказ от ответственности: это не официальный продукт Google (экспериментальный или иным образом), это просто код, который принадлежит Google.
Binexport является компонентом экспортера Bindiff. Это плагин/расширение для Disassemblers Ida Pro, бинарной ниндзя и Ghidra, которые экспортируют данные разборки в формат буфера протокола, который требуется Bindiff.
Экспериментальная версия для программного обеспечения с открытым исходным программным обеспечением Ghidra доступна в каталоге java/BinExport .
Этот репозиторий содержит полный исходный код, необходимый для создания двоичных файлов плагина Binexport для Linux, MacOS и Windows.
Загрузите двоичные файлы со страницы релизов и скопируйте их в каталог плагинов 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 Native Dock. Если это не видно, включите его через 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 , который вы скачали на шаге 1 и нажмите OK .OK дважды, чтобы закрыть как диалог «Устройства установок», так и уведомление о перезапуске 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:
import idaapi
idaapi . ida_expr . eval_idc_expr ( None , ida_idaapi . BADADDR ,
'BinExportBinary("exported.BinExport");' )Binexport определяет следующие параметры плагина, которые можно указать в командной строке IDA:
| Вариант | Описание |
|---|---|
-OBinExportAutoAction:<ACTION> | Вызвать функцию IDC Binexport и выход |
-OBinExportModule:<PARAM> | Аргумент для BinExportAutoAction |
-OBinExportLogFile:<FILE> | Сообщения журнала в файл |
-OBinExportAlsoLogToStdErr:TRUE | Если указано, также войдите в стандартную ошибку |
-OBinExportX86NoReturnHeuristic:TRUE | Включить эвристику специфичной для x86 для выявления невозвратных функций |
Примечание. Эти параметры должны быть представлены в любых файлах.
В настоящее время существует только минимальная интеграция в бинарный интерфейс ниндзя.
Tools | Plugins | BinExport . Это начнет процесс экспорта. Файл .BinExport помещается рядом с базой данных анализа в том же каталоге.
File | Import File...Export... в контекстном меню..BinExport будет добавлен автоматически. Сценарий BinExport.java ghidra можно запускать как в режиме без головы, так и в режиме 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.java , который будет генерировать файл .BinExport , указанный в BinExport.properties :
$ ./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. Чтобы построить расширение на базе Java для Ghidra, пожалуйста, обратитесь к Binexport для инструкций Ghidra.
Есть довольно много зависимостей, чтобы удовлетворить:
boost_parts )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Со всеми предпосылками на месте, настраивайте и создайте Bunexport и запустите его тесты:
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 ПРИМЕЧАНИЕ. Если вы не хотите использовать Ninja для выполнения фактической сборки, опустите часть -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 и ida64 , соответственно), а также binexport12_binaryninja.so (для бирнарной ниндджи).
Предпочтительная среда сборки - MacOS 13 «Вентура» с использованием XCODE 15.1. Использование 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Со всеми предпосылками на месте, настраивайте и создайте Bunexport и запустите его тесты:
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 и ida64 соответственно), а также binexport12_binaryninja.dylib (для бирничного ниня).
Предпочтительная среда сборки-Windows 10 (64-битная Intel) с использованием компилятора Visual Studio 2022 и Windows SDK для Windows 10.
Загрузите и установите новейший стабильный Cmake (3.25.1 во время написания) со страницы загрузки. Обязательно выберите «Добавить Cmake в системный путь для всех пользователей».
Загрузите и установите GIT со страницы загрузки. Обязательно выберите следующие параметры: * Справочник по установке должен быть оставлен на по умолчании %ProgramFiles%Gitbingit.exe * «Используйте GIT из командной строки Windows» - Используйте утилиту установки добавить 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Со всеми предварительными условиями настройка и построить Bunexport:
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 (для бирки Ninja).