RelocAlloc: استخدام قسم .reloc لاستبدال استدعاءات التخصيص المعتادة
شرح الكود:
- أولاً، نحدد عناوين جميع مكتبات dll المعينة إلى عمليتنا.
- ثم نبني مصفوفة من البنى (structs) ونملؤها ببعض البيانات، وهذه هي دالة Initialize().
- الآن، لدينا مصفوفة كاملة، والخطوة التالية هي البحث عن العنوان المناسب.
- استدعاء GetSuitableAddress(SIZE_T ShellcodeSize) سيقوم بالمهمة؛ أي إيجاد كهف الكود المناسب (مكان فارغ في الذاكرة، يناسب حجم الشل كود)
- في حال العثور عليه سيتم إرجاعه.
- لاستخدامه يجب علينا تعديل حماية الذاكرة لتكون قابلة للكتابة/التنفيذ ... (الـ poc مباشرة rwx)
عرض توضيحي:
img1
img2
ملاحظة: هذا يعمل فقط مع الشل كودات الصغيرة، لأنه يعتمد على مكتبات dll المعينة، فكلما كبر قسم .reloc، زادت فرص الحصول على عنوان صالح. بالإضافة إلى ذلك، تم اختبار هذا فقط على جهاز x64، لكن يجب أن يعمل على x86 (أعتقد ذلك :p)
# ابقوا متابعين للمزيد
120064592-a5c83480-c075-11eb-89c1-78732ecaf8d3