حقوق الطبع والنشر 2011-2024 Google LLC.
إخلاء المسئولية: هذا ليس منتج Google الرسمي (تجريبي أو غير ذلك) ، إنه مجرد رمز يمتلكه Google.
Binexport هو مكون المصدر لـ Bindiff. إنه مكون إضافي/امتداد ل Disassemblers Ida Pro و Binary Ninja و Ghidra الذي يصدر بيانات التفكيك إلى تنسيق المخزن المؤقت للبروتوكول الذي يتطلبه Bindiff.
يتوفر نسخة تجريبية لبرنامج Open Source Software Engineering Suite Ghidra في دليل java/BinExport .
يحتوي هذا المستودع على رمز المصدر الكامل اللازم لإنشاء ثنائيات البرنامج المساعد Binexport لـ Linux و MacOs و Windows.
قم بتنزيل الثنائيات من صفحة الإصدارات ونسخها إلى دليل IDA Pro Plugins. هذه هي المسارات الافتراضية:
| نظام التشغيل | مسار البرنامج المساعد |
|---|---|
| Linux | /opt/idapro-8.2/plugins |
| ماكوس | /Applications/IDA Pro 8.2/idabin/plugins |
| النوافذ | %ProgramFiles%IDA 8.2plugins |
للتثبيت فقط للمستخدم الحالي ، انسخ الملفات إلى واحدة من هذه الدلائل بدلاً من ذلك:
| نظام التشغيل | البرنامج المساعد |
|---|---|
| Linux/Macos | ~/.idapro/plugins |
| النوافذ | %AppData%Hex-RaysIDA Proplugins |
في IDA ، حدد Help | About programm...
انقر فوق Addons...
إذا تم تثبيته بشكل صحيح ، يظهر مربع الحوار التالي:

قم بتنزيل الثنائيات من صفحة الإصدارات ونسخها إلى دليل المكونات الإضافية Ninja الثنائية. هذه هي المسارات الافتراضية للمستخدم الحالي:
| نظام التشغيل | مسار البرنامج المساعد |
|---|---|
| Linux | ~/.binaryninja/plugins |
| ماكوس | ~/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 قمت بتنزيله في الخطوة 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> | استدعاء وظيفة Binexport IDC والخروج |
-OBinExportModule:<PARAM> | حجة BinExportAutoAction |
-OBinExportLogFile:<FILE> | تسجيل الرسائل إلى ملف |
-OBinExportAlsoLogToStdErr:TRUE | في حالة تحديد ، قم أيضًا بتسجيل الدخول إلى خطأ قياسي |
-OBinExportX86NoReturnHeuristic:TRUE | قم بتمكين مجريات الأمور الخاصة بـ X86 لتحديد الوظائف غير الممتدة |
ملاحظة: يجب أن تأتي هذه الخيارات قبل أي ملفات.
لا يوجد سوى الحد الأدنى من التكامل في واجهة مستخدم Ninja الثنائية في هذا الوقت.
Tools | Plugins | BinExport . هذا سيبدأ عملية التصدير. يتم وضع ملف .BinExport بجوار قاعدة بيانات التحليل ، في نفس الدليل.
File | Import File...Export... من قائمة السياق..BinExport تلقائيًا. يمكن تشغيل البرنامج النصي BinExport.java ghidra في كل من الوضع غير المقطعي والرؤوس. في وضع واجهة المستخدم الرسومية ، يتوفر ضمن فئة 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مع وجود جميع المتطلبات الأساسية ، قم بتكوين وبناء 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 ملاحظة: إذا كنت لا ترغب في استخدام Ninja لأداء البناء الفعلي ، فاحصل على جزء -G Ninja .
لتعطيل بناء IDA Pro ، قم بتعيين -DBINEXPORT_ENABLE_IDAPRO=OFF . وبالمثل ، لتعطيل بناء النينجا الثنائية ، قم بتعيين -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
سيؤدي ذلك إلى تنزيل وبناء Abseil ، Googletest ، المخازن المؤقتة للبروتوكول و API Binary Ninja. إذا سارت الأمور على ما يرام ، يجب أن يحتوي دليل build_linux/binexport-prefix على ملفين في الملفتين binexport12_ida.so و binexport12_ida64.so (للاستخدام مع ida و ida64 ، على التوالي) وكذلك binexport12_binaryninja.so (ل ninja الثنائي).
بيئة الإنشاء المفضلة هي MacOS 13 "Ventura" باستخدام Xcode 15.1. باستخدام 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 Generator". يمكنك استخدام Xcode أو Ninja كمولدات أيضًا.
لتعطيل بناء IDA Pro ، قم بتعيين -DBINEXPORT_ENABLE_IDAPRO=OFF . وبالمثل ، لتعطيل بناء النينجا الثنائية ، قم بتعيين -DBINEXPORT_ENABLE_BINARYNINJA=OFF .
سيؤدي ذلك إلى تنزيل وبناء Abseil ، Googletest ، المخازن المؤقتة للبروتوكول و API Binary Ninja. إذا سارت الأمور على ما يرام ، فيجب أن يحتوي دليل build_mac/binexport-prefix على ملفين بين الملفات binexport12_ida.dylib و binexport12_ida64.dylib (للاستخدام مع ida و ida64 ، على التوالي) وكذلك binexport12_binaryninja.dylib (for bubinary ninja).
بيئة الإنشاء المفضلة هي 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مع وجود جميع المتطلبات الأساسية ، قم بتكوين وبناء 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 Binary Ninja. إذا سارت الأمور على ما يرام ، يجب أن يحتوي دليل build_msvc/binexport-prefix على ملفين بين الملفات binexport12_ida.dll و binexport12_ida64.dll (للاستخدام مع ida.exe و ida64.exe ، على التوالي) بالإضافة إلى binexport12_binaryninja.dll (لـ brinary ninja).