حقوق الطبع والنشر 2011-2024 لشركة Google LLC.
يحتوي هذا المستودع على كود مصدر BinDiff. BinDiff هي أداة مقارنة مفتوحة المصدر للملفات الثنائية للعثور بسرعة على الاختلافات والتشابهات في التعليمات البرمجية المفككة.
BinDiff هي أداة مقارنة مفتوحة المصدر للملفات الثنائية، تساعد الباحثين والمهندسين في مجال الثغرات الأمنية على العثور بسرعة على الاختلافات وأوجه التشابه في التعليمات البرمجية المفككة.
باستخدام BinDiff، يمكن للباحثين تحديد وعزل إصلاحات الثغرات الأمنية في التصحيحات التي يوفرها البائع. يمكن استخدامه أيضًا لنقل الرموز والتعليقات بين عمليات تفكيك إصدارات متعددة من نفس الملف الثنائي. وهذا يجعل تتبع التغييرات بمرور الوقت أسهل ويسمح للمؤسسات بالاحتفاظ بنتائج التحليل ويتيح نقل المعرفة بين المحللين الثنائيين.
إذا كنت تريد البدء في استخدام BinDiff، فقم بتنزيل حزم التثبيت المعدة مسبقًا من صفحة الإصدارات.
ملاحظة: يعتمد BinDiff على أداة فك منفصلة. يأتي الجهاز مزودًا بدعم IDA Pro وBinary Ninja وGhidra. تسرد صفحة أدوات التجميع التكوينات المدعومة.
تتوفر مجموعة فرعية من الدليل الحالي في الدليل docs/
.
يحتوي BinDiff على المكونات التالية:
cmake
- إنشاء ملفات CMake التي تعلن عن التبعيات الخارجيةfixtures
- مجموعة من ملفات الاختبار لممارسة محرك BinDiff الأساسيida
- التكامل مع مفكك IDA Projava
- كود مصدر جافا. يحتوي هذا على واجهة مستخدم BinDiff visual diff ومكتبة الأدوات المساعدة المقابلة لها.match
- مطابقة الخوارزميات لمحرك BinDiff الأساسيpackaging
- مصادر الحزمة لحزم التثبيتtools
- الملفات التنفيذية المساعدة التي يتم شحنها مع المنتج يجب أن تكون التعليمات الواردة أدناه كافية لإنشاء كل من التعليمات البرمجية الأصلية والمكونات المستندة إلى Java.
سيتم إضافة المزيد من تعليمات البناء التفصيلية في وقت لاحق. يتضمن ذلك ملفات Dockerfile
والبرامج النصية الجاهزة لإنشاء حزم التثبيت.
يستخدم BinDiff CMake لإنشاء ملفات البناء الخاصة به لتلك المكونات التي تتكون من كود C++ الأصلي.
تبعيات البناء التالية مطلوبة:
تبعيات البناء التالية اختيارية:
deps/idasdk
)خطوات البناء العامة هي نفسها على أنظمة التشغيل Windows وLinux وmacOS. فيما يلي عرض لأوامر Linux.
تنزيل التبعيات التي لن يتم تنزيلها تلقائيًا:
mkdir -p build/out
git clone https://github.com/google/binexport build/binexport
unzip -q < path/to/idasdk_pro80.zip > -d build/idasdk
بعد ذلك، قم بتكوين دليل البناء وإنشاء ملفات البناء:
cmake -S . -B build/out -G Ninja
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=build/out
-DBINDIFF_BINEXPORT_DIR=build/binexport
" -DIdaSdk_ROOT_DIR= ${PWD} build/idasdk "
وأخيرا، استدعاء البناء الفعلي. سيتم وضع الثنائيات في build/out/bindiff-prefix
:
cmake --build build/out --config Release
(cd build/out ; ctest --build-config Release --output-on-failure)
cmake --install build/out --config Release
للإنشاء بدون IDA، ما عليك سوى تغيير خطوة التكوين المذكورة أعلاه إلى
cmake -S . -B build/out -G Ninja
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_INSTALL_PREFIX=build/out
-DBINDIFF_BINEXPORT_DIR=build/binexport
-DBINEXPORT_ENABLE_IDAPRO=OFF
يتطلب إنشاء واجهة المستخدم الرسومية المعتمدة على Java مكتبة yFiles التجارية لتصورات الرسوم البيانية التابعة لجهة خارجية لعرض الرسوم البيانية وتخطيطها. هذه المكتبة قوية للغاية، ولا يمكن استبدالها بسهولة.
للبناء، يستخدم BinDiff Gradle 6.x وJava 11 LTS. راجع دليل التثبيت الخاص به للحصول على إرشادات حول كيفية التثبيت.
بافتراض أنك صاحب ترخيص yFiles، قم بتعيين متغير البيئة YFILES_DIR
إلى دليل يحتوي على yFiles y.jar
و ysvg.jar
.
ملاحظة: لا يزال BinDiff يستخدم الفرع 2.x الأقدم من yFiles.
ثم قم باستدعاء Gradle لتنزيل التبعيات الخارجية وبناء:
ويندوز:
set YFILES_DIR=<pathtoyfiles_2.17>
cd java
gradle shadowJar
لينكس أو ماك:
export YFILES_DIR=<path/to/yfiles_2.17>
cd java
gradle shadowJar
بعد ذلك، يجب أن يحتوي الدليل ui/build/libs
الموجود في دليل java
الفرعي على قطعة أثرية bindiff-ui-all.jar
قائمة بذاتها، والتي يمكن تشغيلها باستخدام أمر java -jar
القياسي.
الأوراق الأصلية التي توضح الأفكار العامة وراء BinDiff:
أدوات أخرى في نفس مساحة المشكلة:
المشاريع التي تستخدم BinDiff:
تم ترخيص BinDiff بموجب شروط ترخيص Apache. راجع الترخيص لمزيد من المعلومات.
إذا كنت ترغب في المساهمة، يرجى قراءة CONTRIBUTING.md قبل إرسال طلبات السحب. يمكنك أيضًا الإبلاغ عن الأخطاء أو تقديم طلبات الميزات.