
أدوات تحليل ثابتة آلية للبرامج الثنائية
إطار تحليل البرامج الثنائية الساكنة Pharos هو مشروع من معهد هندسة البرمجيات في جامعة كارنيجي ميلون. صُمم الإطار لتسهيل التحليل الآلي للبرامج الثنائية. يستخدم البنية التحتية لمترجم ROSE الذي طورته مختبرات لورانس ليفرمور الوطنية لتفكيك الكود، وتحليل تدفق التحكم، ودلالات التعليمات، وغير ذلك. هذا البرنامج منشور تحت ترخيص BSD.
الإصدار الحالي هو تحديث كبير للإصدار السابق، ويضيف مجموعة متنوعة من الميزات بما في ذلك تحسينات على أداة OOAnalyzer، وكود تحليل المسار التجريبي، وتحسينات على المقسم (partitioner)، وتعدد الخيوط، والعديد من الميزات الصغيرة الأخرى.
إطار Pharos هو مشروع بحثي، والكود قيد التطوير النشط. لا يتم تقديم أي ضمانات للملاءمة لأي غرض. بينما يوفر هذا الإصدار تعليمات البناء، واختبارات الوحدة، وبعض التوثيق، لا يزال هناك الكثير من العمل الذي يجب القيام به. لقد اختبرنا عددًا قليلًا من تكوينات البناء المختارة، لكننا لم نختبر بنشاط قابلية نقل الكود المصدري. راجع تعليمات التثبيت لمزيد من التفاصيل.
نظرًا لأن الهدف الأساسي من إصدار هذا الكود هو توفير الشفافية في أبحاثنا وتحفيز الحوار مع باحثي تحليل البرامج الثنائية الساكنة الآخرين، فلا تتردد في الاتصال بـ Cory Cohen [email protected] مع أي أسئلة قد تكون لديك حول هذا العمل. قد لا أتمكن من الرد في الوقت المناسب، لكنني سأبذل قصارى جهدي.
ApiAnalyzer هي أداة لإيجاد تسلسلات من استدعاءات API مع علاقات البيانات والتحكم المحددة. تهدف هذه القدرة إلى استخدامها لكشف أنماط التفاعل الشائعة مع نظام التشغيل مثل فتح ملف، والكتابة إليه، ثم إغلاقه.
OOAnalyzer هي أداة لتحليل واستعادة التركيبات الموجهة للكائنات. كانت هذه الأداة موضوع ورقة بحثية بعنوان "استخدام البرمجة المنطقية لاستعادة فئات وطرق C++ من الملفات التنفيذية المترجمة" والتي نُشرت في مؤتمر ACM حول أمن الحاسوب والاتصالات في 2018. تحدد الأداة أعضاء وطرق الكائنات من خلال تتبع مؤشرات الكائنات بين الدوال في البرنامج. كان الإصدار السابق من هذه الأداة يُسمى "Objdigger"، لكن تم تغيير الاسم ليعكس إعادة تصميم كبيرة باستخدام قواعد Prolog لاستعادة سمات الكائنات. الإصدار الحالي من الأداة يدعم فقط تحليل الملفات التنفيذية 32-bit x86 المترجمة بواسطة Microsoft Visual C++. للحصول على تعليمات أكثر تفصيلاً حول كيفية تشغيل OOAnalyzer على ملفات تنفيذية كبيرة جدًا، راجع هذه الملاحظات.
كان توزيع Pharos يتضمن سابقًا إضافة تستورد معلومات الكائنات التي يصدرها OOAnalayzer إلى مجموعة أدوات الهندسة العكسية Ghidra. للحصول على هذه الوظيفة الآن وفي المستقبل، قم بتثبيت إضافة Kaiju لـ Ghidra، والتي تتضمن الوظيفة التي كانت توفرها إضافة OOAnalayzer.
CallAnalyzer هي أداة للإبلاغ عن المعاملات الثابتة لاستدعاءات API في برنامج ثنائي. إنها إلى حد كبير عرض لقدراتنا الحالية في اصطلاح الاستدعاء، وتحليل المعاملات، واكتشاف الأنواع، على الرغم من أنها توفر أيضًا تحليلاً مفيدًا للكود في البرنامج.
FN2Yara هي أداة لتوليد تواقيع YARA لمطابقة الدوال في برنامج تنفيذي. البرامج التي تشترك في أعداد كبيرة من الدوال من المحتمل أن تشترك في السلوك.
FN2Hash هي أداة لتوليد مجموعة متنوعة من التجزئات (hashes) وغيرها من الخصائص الوصفية للدوال في برنامج تنفيذي. مثل FN2Yara، يمكن استخدامها لدعم تحليل التشابه الثنائي، أو توفير ميزات لخوارزميات التعلم الآلي.
DumpMASM هي أداة لتفريغ قوائم التفكيك من ملف تنفيذي باستخدام إطار Pharos بنفس أسلوب الأدوات الأخرى. لم يتم صيانتها بنشاط، ويجب عليك التفكير في استخدام recursiveDisassemble القياسي من ROSE بدلاً من ذلك http://rosecompiler.org/ROSE_HTML_Reference/rosetools.html.