bindiffhelper
امتداد Ghidra الذي يستخدم Bindiff في مشروع Ghidra الخاص بك للعثور على وظائف مطابقة وإعادة تسميتها تلقائيًا (Bindiff 6 ، 7 ، 8 مدعوم). تحقق من دليل Bindiff لمعرفة كيفية عمله وكيفية مطابقة الوظائف / الكتل الأساسية. ومع ذلك ، مع هذا الامتداد ، يتم تآكل Bindiff من داخل Ghidra ، لذلك لا يتعين عليك اختلاف ثنائياتك بنفسك.
يرجى الإبلاغ عن الأخطاء عبر ميزة الإصدار على Github
ماذا تفعل / changelog
v0.6
- تحديث مكتبة سائق SQLite ، يجب أن تعمل الآن على Apple Silicon
- دعم الاختلافات النصية الخارجية بين الوظائف المقطوعة (انظر #24)
- تحديثات واجهة المستخدم
v0.5
- دعم BINDIFF 8
- إطلاق سراح Ghidra 11.1
v0.4.3
v0.4.2
- أضف وظيفة لاستيراد جميع الوظائف (وليس فقط تلك التي تم فحصها في الجدول)
- أضف وظيفة لتبديل مربع الاختيار لعناصر متعددة في الجدول
- تحديث لدعم Ghidra 10.3
v0.4.1
- تحديث لدعم Gradle 7.5 و Ghidra 10.1
v0.4.0
- دعم Bindiff 7 و Ghidra 10
v0.3.2
- تم إصلاح الخلل الذي لا يعمل فيه الانتشار بملف مختلف عن نفس المشروع
- إصلاح خلل حيث لا يمكن نشر الملفات ذات الأسماء القصيرة (<3 أحرف>)
v0.3.1
- تم إصلاح حادث تحطم عند فتح ملف عبر خيار "من المشروع"
v0.3
- تلوين الوظائف المتطابقة في القائمة
- أضف تعليقات إلى وظائف متطابقة في القائمة التي تربط بين الثنائي الآخر
- تم إصلاح خلل حيث كانت مكتبة Protobuf مفقودة في بعض البناء
- قائمة تحميل ملف جديدة
v0.2
- إصلاح الخلل حيث الملف للاستيراد إلى اللازم لفحصه.
- زيادة حجم مربع حوار اختيار ملف المشروع
v0.1
- تم افتتاح BINDIFF الثنائي في Ghidra مع ثنائي آخر من نفس مشروع Ghidra ، ويظهر النتائج وأسماء وظائف الاستيراد
- افتح ملف Bindiff ، تم إنشاؤه باستخدام Bindiff 6 ، من ملفين .binexport واستيراد أسماء وظائف المطابقة في Ghidra
الإصدارات التالية
- استيراد أسماء الوظائف ومعلمات الوظائف (النوع والاسم)
- قارن بين الثنائي الذي تم افتتاحه في Ghidra مع.
- التواصل مع Bindiff 6 واجهة المستخدم الرسومية لإظهار الرسوم البيانية للوظائف المختلفة
كيفية التثبيت
إما تنزيل ملف .zip من الإصدار ، إذا كان متوافقًا مع إصدار Ghidra الخاص بك ، وإلا انظر كيفية الإنشاء أدناه.
- مفتوح Ghidra
- في النافذة الرئيسية : انتقل إلى ملف-> قم بتثبيت الامتدادات ...
- انقر فوق +-button في أعلى اليمين وحدد ملف zip bindiffhelper
- أغلق مدير البرنامج المساعد. أعد تشغيل Ghidra لتحميل البرنامج المساعد الجديد
- انظر الاستخدام أدناه
أوصى الأدوات الأخرى
- ثنائيات Binexport Plugin أو تم تجميعها من المصدر لإصدار Ghidra المحدد الخاص بك
- bindiff (https://zynamics.com/software.html)
بدون هذه ، لن تكون قادرًا فقط على استيراد ملفات .bindiff وعدم التصدير تلقائيًا وتختلف عن مشروع Ghidra الخاص بك
الاستخدام
تأكد من تحميل المكون الإضافي في مستكشف الرمز عن طريق فتح ملف في Ghidra وفي Code Explorer ، انتقل إلى ملف-تكوين
انقر فوق المكونات الصغيرة في الجزء العلوي الأيمن:
وتأكد من فحص مربع الاختيار بجوار BindiffHelperPlugin.
استيراد خارجي. bindiff
يجب أن تكون ملفات .binexport المقابلة في نفس المجلد.
افتح الملف الذي تريد استيراد الأسماء إليه في متصفح الرمز ، ثم انتقل إلى Window-> bindiffhelper
استخدم زر فتح من BINDIFF أو عنصر القائمة وحدد ملف .bindiff الخاص بك.
حدد جميع أسماء الوظائف التي تريد استيرادها وانقر فوق زر استيراد أسماء دالة في أعلى اليمين أو عنصر القائمة.
قارن بين الملفات في مشروع Ghidra
انتقل إلى Window-> BindiffHelper ، تأكد من عدم وجود تحذيرات بشأن Binexport أو Bindiff ، ثم انقر فوق زر Open From Project .
حدد الملف الآخر من الشجرة وانقر فوق "موافق".
كيفية البناء
متطلبات:
- تركيب Ghidra (https://ghidra-sre.org) أو تم تجميعه من المصدر
- بعض JDK. قد تكون هناك قيود معينة اعتمادًا على كيفية بناء Ghidra الخاص بك وما هي الإضافات الأخرى التي تستخدمها. أوصي باستخدام Temurin 21 LTS ، حيث يبدو أن هذا يعمل حاليًا مع كل من Binexport و BindiffHelper.
- Gradle (تم اختباره بـ 7.5 ، 8.10)
استنساخ المستودع
استنساخ المستودع بشكل متكرر ، لأنه يعتمد على binexport لتعريف المخزن المؤقت للبروتوكول المعني.
git clone --recurse-submodules https://github.com/ubfx/BinDiffHelper.git
بنه
تحتاج إلى تعيين متغير بيئة GHIDRA_INSTALL_DIR على DIR تثبيت GHIDRA. إذا قمت بتثبيت JDKs مختلفة ، فتأكد من أن متغير البيئة JAVA_HOME يشير إلى واحد يستخدم تثبيت Ghidra الخاص بك.
سيتم بناء الامتداد لإصدار Ghidra على وجه التحديد.
ثم اذهب إلى مجلد BindiffHelper في قشرتك وافعل
سيؤدي ذلك إلى بناء كل من binexport في الجهاز الفرعي المعني و bindiffhelper في الدليل الأصل. كان ينبغي أن يكون هناك ملف .zip الذي تم إنشاؤه في Distory Directory. استخدم ملف .zip للتثبيت وفقًا للتعليمات أعلاه.
إعداد التنمية / تصحيح الأخطاء
في بعض الأحيان يكون من المفيد أن تكون قادرًا على تصحيح التمديد مع Ghidra ، وهنا بعض الملاحظات حول ذلك:
- استنساخ وبناء Ghidra ودع Gradle إنشاء مشاريع Eclipse وفقًا لـ DevGuide
- استيراد المشاريع إلى Eclipse (تأكد من أن لديها ملحقات ملحقات ذات صلة لتطوير التمديد)
- بناء وتثبيت ghidradev
- قم بفك بناء Ghidra وربط Ghidradev به. ربما يتعين عليهم تعيين متغير البيئة
GHIDRA_INSTALL_DIR - قم بتشغيل Ghidra من Eclipse وتثبيت Extension Binexport
- إنشاء مشروع Eclipse BindiffHelper مع
gradle build eclipse - استيراده إلى Eclipse واستخدم Ghidradev لربطه ببناء Ghidra
- Debug AS-> Ghidra
عند تصحيح الأخطاء Ghidra مع امتداد Eclipse ، يتم تحميل التمديد في Ghidra تلقائيًا (لا تمر عبر تثبيت التمديد المعتاد). ومع ذلك ، يجب تمكين البرنامج المساعد في مستكشف الرمز.
مراجع
- https://github.com/google/bindiff/release
- https://www.zynamics.com/bindiff/manual/
- https://github.com/google/binexport/
أيقونات من: رموز Fatcow Free