
ابحث بسرعة عن الاختلافات وأوجه التشابه في الكود المُفكَّك

حقوق النشر 2011-2026 Google LLC.
يحتوي هذا المستودع على الكود المصدري لـ BinDiff. BinDiff هي أداة مفتوحة المصدر لمقارنة الملفات الثنائية، لتتيح العثور بسرعة على الاختلافات وأوجه التشابه في الكود المفكك.
BinDiff هي أداة مفتوحة المصدر لمقارنة الملفات الثنائية، تساعد باحثي الثغرات الأمنية والمهندسين على العثور بسرعة على الاختلافات وأوجه التشابه في الكود المفكك.
باستخدام BinDiff، يمكن للباحثين تحديد وعزل الإصلاحات الخاصة بالثغرات الأمنية في التصحيحات المقدمة من البائعين. كما يمكن استخدامه لنقل الرموز والتعليقات بين عمليات التفكيك لإصدارات متعددة من نفس الملف الثنائي. وهذا يسهّل تتبع التغييرات بمرور الوقت، ويتيح للمؤسسات الاحتفاظ بنتائج التحليل، ويمكّن من نقل المعرفة بين محللي الملفات الثنائية.
إذا كنت تريد البدء في استخدام BinDiff فحسب، يمكنك تنزيل حزم التثبيت المعدّة مسبقًا من صفحة الإصدارات.
ملاحظة: يعتمد BinDiff على أداة تفكيك منفصلة. وهو يأتي بشكل افتراضي مع دعم لـ IDA Pro و Binary Ninja و Ghidra. تعرض صفحة أدوات التفكيك الترتيبات المدعومة.
يتوفر جزء من الدليل الحالي في دليل docs/.
يتكون BinDiff من المكوّنات التالية:
cmake - ملفات بناء CMake التي تصرّح بالاعتماديات الخارجيةfixtures - مجموعة من ملفات الاختبار لاختبار المحرك الأساسي لـ BinDiffida - التكامل مع أداة التفكيك IDA Projava - الكود المصدري بلغة Java. يحتوي على واجهة المستخدم المرئية للفرق في BinDiff ومكتبة الأدوات المساعدة المقابلة.match - خوارزميات المطابقة للمحرك الأساسي لـ BinDiffpackaging - مصادر الحزم لحزم التثبيتtools - ملفات تنفيذية مساعدة تُشحن مع المنتجالتعليمات أدناه كافية لبناء كل من الكود الأصلي والمكوّنات القائمة على Java.
ستُضاف تعليمات بناء أكثر تفصيلاً في وقت لاحق. ويتضمن ذلك ملفات Dockerfile جاهزة ونصوصًا برمجية لبناء حزم التثبيت.
يستخدم BinDiff أداة CMake لتوليد ملفات البناء الخاصة بالمكوّنات التي تتكون من كود C++ أصلي.
يلزم توفر اعتماديات البناء التالية:
خطوات البناء العامة هي نفسها على Windows و Linux و macOS. فيما يلي الأوامر الخاصة بنظام Linux.
بعد ذلك، قم بتهيئة دليل البناء وتوليد ملفات البناء:
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
أخيرًا، نفّذ عملية البناء الفعلية. ستوضع الملفات الثنائية في build/:
cmake --build build --config Release
(cd build; ctest --build-config Release --output-on-failure)
cmake --install build --config Release
للبناء بدون IDA، غيّر ببساطة خطوة التهيئة السابقة إلى
cmake -S . -B build/out -G Ninja -DCMAKE_BUILD_TYPE=Release \
-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 لتنزيل الاعتماديات الخارجية والبناء:
Windows:
set YFILES_DIR=<path\to\yfiles_2.17>
cd java
gradle shadowJar
Linux أو macOS:
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. راجع LICENSE لمزيد من المعلومات.
إذا كنت ترغب في المساهمة، يرجى قراءة CONTRIBUTING.md قبل إرسال طلبات السحب. يمكنك أيضًا الإبلاغ عن الأخطاء أو تقديم طلبات ميزات.