حقوق الطبع والنشر 2011-2020 لشركة Google LLC
BinNavi عبارة عن بيئة تطوير متكاملة (IDE) للتحليل الثنائي - وهي بيئة تسمح للمستخدمين بفحص الرسوم البيانية لتدفق التحكم للتعليمات البرمجية المفككة والتنقل فيها وتحريرها والتعليق عليها، والقيام بالشيء نفسه بالنسبة لرسم بياني للملف القابل للتنفيذ، وجمع ودمج آثار التنفيذ، وتتبع المسار بشكل عام نتائج التحليل بين مجموعة من المحللين.
ملحوظة: مشروع BinNavi لم يعد قيد التطوير النشط.
يستخدم BinNavi مكتبة تصور رسوم بيانية تجارية تابعة لجهة خارجية (yFiles) لعرض الرسوم البيانية وتخطيطها. هذه المكتبة قوية للغاية، ولا يمكن استبدالها بسهولة.
من أجل تنفيذ التطوير المباشر باستخدام yFiles، تحتاج إلى ترخيص مطور لذلك. وفي الوقت نفسه، نريد أن يكون المجتمع قادرًا على المساهمة في BinNavi دون الحاجة إلى ترخيص yFiles تجاري. من أجل القيام بذلك والتوافق مع ترخيص yFiles، يجب أن تكون جميع واجهات yFiles مشوشة بشكل صحيح.
ومن أجل تحقيق ذلك قمنا بما يلي:
com.google.security.zynamics.binnavi
com.google.security.zynamics.binnavi.yfileswrap
com.google.security.zynamics.zylib
com.google.security.zynamics.zylib.yfileswrap
com.google.security.zynamics.reil
com.google.security.zynamics.reil.yfileswrap
نحن نقوم بتوزيع ملف JAR مُعد مسبقًا بجميع التعليمات البرمجية الموجودة في حزم yfileswrap
الفرعية - المرتبطة مسبقًا والمبهمة مقابل yFiles. إذا كنت ترغب في تغيير أو إضافة تعليمات برمجية في BinNavi وليس لديك ترخيص yFiles، فيمكنك القيام بكل ما تريده بحرية في الحزم غير yfileswrap - يمكنك ببساطة وضع lib/yfileswrap-obfuscated.jar
في مسار الفصل الخاص بك اختبار ومعرفة النتائج.
إذا كنت ترغب في إجراء تغييرات على الدلائل الفرعية yfileswrap
، يرجى العلم أنك ستحتاج إلى ترخيص yFiles صالح - وأي مساهمة تقدمها لمشروع BinNavi يجب أن تحترم اتفاقية الترخيص الخاصة بهم. هذا يعني أنه لا يمكنك ببساطة الكشف عن واجهات برمجة التطبيقات الداخلية الخاصة بهم تحت أسماء مختلفة وما إلى ذلك.
سوف نقوم بتنفيذ هذا - نحن سعداء جدًا لأننا وجدنا طريقة لفتح BinNavi مفتوح المصدر باستخدام تبعية yFiles، وسوف نتأكد من أن أي كود نسحبه يحترم ترخيص yFiles.
لإعادة بناء مكتبة غلاف yFiles، قم أولاً بنسخ y.jar
و ysvg.jar
إلى third_party/java/yfiles
. ثم أعد البناء باستخدام:
mvn dependency:copy-dependencies
ant build-yfiles-wrapper-jar
mvn install:install-file
-Dfile=target/yfileswrap-obfuscated.jar
-DgroupId=com.google.security.zynamics.binnavi
-DartifactId=yfileswrap-obfuscated
-Dversion=6.1
-Dpackaging=jar
-DlocalRepositoryPath=lib
يستخدم BinNavi Maven لإدارة التبعية، ولكن ليس للبناء الفعلي. Java 11 هو الإصدار الأدنى المدعوم.
للبناء من الصفر استخدم هذه الأوامر:
mvn dependency:copy-dependencies
ant build-binnavi-fat-jar
يرجى العلم أن BinNavi يستخدم قاعدة بيانات PostgreSQL مركزية لتخزين عمليات التفكيك/التعليقات/الآثار - لذلك تحتاج إلى تشغيل مثل هذا المثيل في مكان ما يمكنك الوصول إليه. يمكنك تشغيل BinNavi على النحو التالي:
java -jar target/binnavi-all.jar
يتطلب تحميل الكود في Eclipse لمزيد من التطوير القليل من التكوين.
build.xml
PROJECT_LOC/src/main/java
java
**/yfileswrap/**
إلى قائمة الدلائل المراد استبعادها.CMain
.يجب أن تكون على استعداد للذهاب من هنا.
كجزء من هذا المشروع، نقوم بتوزيع مكون IDA Pro الإضافي الذي يصدر عمليات التفكيك من IDA إلى تنسيق قاعدة بيانات PostgreSQL الذي يتطلبه BinNavi. عند تشغيل BinNavi، ما عليك سوى تكوين المسار الصحيح لـ IDA، والنقر فوق الزر "تثبيت البرنامج المساعد" إذا لزم الأمر - يجب أن تكون الآن قادرًا على استيراد عمليات التفكيك.
في الوقت الحالي، ليس لدينا سوى البرنامج الإضافي للتصدير من IDA - ولكننا نأمل كثيرًا أن يساعدنا شخص ما في بناء وظائف التصدير لوحدات التفكيك الأخرى في المستقبل القريب.
يرجى ملاحظة أن إصدار Maven حاليًا هو نظام البناء الرسمي لـ BinNavi. Gradle تجريبي بحت ومن المرجح أن يتغير.
يمكنك إنشاء BinNavi باستخدام gradle عن طريق تشغيل ما يلي:
على نظام التشغيل Linux/OS X:
$ ./gradlew clean jar
على نظام التشغيل Windows:
/gradlew.bat clean jar
سيؤدي هذا إلى إنتاج الجرة في مسار المشروع ضمن build/libs/
.
على نظام التشغيل Linux/OS X:
$ ./gradlew eclipse
على نظام التشغيل Windows:
./gradlew.bat eclipse
كجزء من عملية إنشاء المشروع، سيتم تنزيل التبعيات. بمجرد الانتهاء، قم بما يلي للتحميل في Eclipse:
تم الآن إعداد مساحة عمل Eclipse وإكمالها لـ BinNavi.
على نظام التشغيل Linux/OS X:
$ ./gradlew idea
على نظام التشغيل Windows:
./gradlew.bat idea
كجزء من عملية إنشاء المشروع، سيتم تنزيل التبعيات. بمجرد الانتهاء، قم بما يلي للتحميل في IntelliJ:
تم الآن إعداد بيئة IntelliJ الخاصة بك واستكمالها لـ IntelliJ.