
واجهة أمامية مبنية بـ PyQt5 للمكوّن الإضافي binjatron الخاص بـ Binary Ninja، تتضمن ميزات تظليل تهدف إلى تسهيل تعلّم الهندسة العكسية للمبتدئين.
تُعد القدرة على هندسة ثنائيات x86 عكسيًا مهارة مهمة حتى خارج مجال أمن المعلومات. ومع ذلك، وعلى الرغم من وفرة المواد التدريبية المتاحة، تظل مهارة صعبة التعلّم. أعرب العديد من الطلاب عن إحباطهم من حجم المعرفة الأساسية المطلوبة لإحراز تقدم متواضع حتى مع الثنائيات البسيطة.
غالبًا ما يُروَّج لـ Binary Ninja بين الطلاب نظرًا لتكلفته المنخفضة نسبيًا وواجهته النظيفة وسهولة استخدامه. كما توفر اللغات الوسيطة منخفضة المستوى ومتوسطة المستوى طريقة سهلة لفهم ما تفعله التعليمات. يهدف هذا المشروع إلى جعل Binary Ninja أداة أفضل للمبتدئين من خلال تسهيل تصوّر تنفيذ الثنائيات.
هذا المشروع هو ثمرة برنامج التدريب الصيفي لعام 2017 في NCC Group. يمكن اعتبار مكونات التصحيح المرئي خليفةً روحيًا لـ Microcorruption، وهي مسابقة CTF أمنية مدمجة أُنتجت بواسطة Matasano Security. ستُتتبَّع التحديثات اللاحقة على https://github.com/ehennenfent/binja_dynamics. لا تتحمل NCC Group مسؤولية أي تغييرات لاحقة تُجرى على المستودع بعد 18 أغسطس 2017.
داخل مجلد إضافات Binary Ninja لديك، شغّل:
git clone https://github.com/ehennenfent/binja_dynamics.git
cd binja_dynamics
./install.sh
بعد تحميل ثنائي، انقر على عنصر Enable Dynamic Analysis Tools في قائمة الأدوات. ستظهر نافذة مصحح يمكنك التحكم بها عبر الأزرار الموجودة في شريط الأدوات. أثناء تنقلك خطوة بخطوة عبر التنفيذ، يتم تحديث الواجهة في الوقت الفعلي لتعكس حالة البرنامج. بفضل Binjatron، يتم تظليل التعليمات الحالية وأي نقاط توقف في عرض الثنائي. بالنسبة لكل عنوان ذاكرة ولكل سجل، يتم تظليل القيمة باللون البرتقالي كلما تغيّرت نتيجةً للتعليمة السابقة. وعلى نحو مماثل، يتم تظليل أعلى وأسفل إطار المكدس الحالي (بالإضافة إلى الموقع المتوقع لعنوان العودة) لتسهيل تحديد الأجزاء المهمة من الذاكرة بالنسبة للمبتدئين. يعرض عارض التتبع الخلفي أثرًا خلفيًا لإطارات المكدس الحالية، ويوفر زرًا ينقل عرض الثنائي تلقائيًا إلى الموقع المحدد بعنوان الذاكرة الذي تتوقع الإضافة العثور على عنوان العودة عنده. في بعض الدوال، لا يتم تفكيك إطار المكدس بالطريقة التي تتوقعها الإضافة، لذلك قد لا يكون عنوان العودة المتوقع صحيحًا دائمًا.

(في لقطة الشاشة أعلاه، يظهر مؤشر القاعدة باللون الأخضر الزيتوني)
في بعض الأحيان، قد يكون من الضروري الرجوع إلى الكود المصدري لفهم السلوك الدقيق للواجهات. واستباقًا لهذه الحاجة، تم شرح الكثير من قرارات التصميم وتفاصيل التنفيذ في تعليقات سطرية.
لا يزال الويكي فقيرًا نسبيًا، لكن محتوى مثل قائمة العوائق وسجل التطوير قد يكون مفيدًا في استكشاف الأخطاء وإصلاحها.
يُفضَّل الاطلاع على مستودع binja_sensei للحصول على أمثلة قد تساعدك في البدء.
باستثناء Binary Ninja، سيتولى install.sh التعامل مع هذه التبعيات نيابةً عنك.