الفريق العربي للهندسة العكسية

نسخة كاملة : حل التمرين BLACKSPACE #02
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم و رحمة الله

شرح سريع للتمرين BlackSpace #02:
https://www.at4re.net/f/thread-2435.html

- التمرين مبني على آلية محاولة كشف البيئة التي يتم تشغيله فيها، اعتمادا على جلب معلومات المعالج.
- المعلومات التي نحاول جلبها هي قيمة البت رقم 31.
- حسب التوثيق قيمة البت رقم 31 هي دائما صفر في الأجهزة "الحقيقية" و واحد في الأجهزة "لافتراضية".
- لجلب المعلومات نستعمل الــ OPCODE المسمى CPUID اختصار لـ CPU Identification.

مراحل العملية (لاحظ الصورة) :
01
يمثل تمرير القيمة 1 للـ EAX يمكننا من تحديد ما نريده من معلومات، في حالتنا (EAX=1 (Processor Info and Feature Bits
02 تمثل وضع الــ OPCODE المسمى CPUID و النتيجة سوف تكون في ECX.
03 باعتماد الأمر TEST نلاحظ في الــ FLAGS ان العلم SF يحمل القيمة 0 او 1 (حالة الجهاز الحقيقي تكون القيمة 0 و في حالة الجهاز الافتراضي تكون القيمة 1)
 
[صورة مرفقة: OUM0NxN.png]


الحل:
بما المطلوب في التمرين كان اظهار رسالة النجاح دون التعديل عليه و طبعا عند تشغيل التمرين في الجهاز الحقيقي يظهر رسالة الفشل، بعد فهم ما يجري يكفي تشعيله في الجهاز الافتراضي لكي يظهر رسالة النجاح...

ملاحظة:
بالنسبة للبرنامج VMWare فهو يتيح لنا التعديل على الاعدادات (ملف vmx) لتخطي الآلية التي تعتمد على البت رقم 31 و جعله دائما صفر.

يكفي اضافة هذا السطر:
cpuid.1.ecx="0---:----:----:----:----:----:----:----"
نتمنى ان يكون هناك المزيد مثل هذا الشرح البسيط لتعم الفائده و بدون تحميل مرفقات
بارك الله فيك اخي Yanis على تحديات وحلولها الله يعطيك الصحة والعافيه باانتظار تمارين فك ضغط  unpackme