
Lenovo Diagnostics Driver EoP - قراءة/كتابة عشوائية
التحكم غير الصحيح في الوصول لبرنامج تشغيل التشخيص من Lenovo يسمح لمستخدم ذي صلاحيات منخفضة بإصدار أوامر IOCTL للجهاز لتنفيذ قراءة/كتابة عشوائية للذاكرة الفعلية/الافتراضية.
شكرًا لـ ch3rn0byl لمساعدته في هذا (وقمت بنسخ اثنتين من وظائفه بالكامل 100%).
IOCTL 0x222000:
IOCTL 0x222008/0x22200C:
IOCTL 0x222010:
IOCTL 0x222014:
كتابة عبر MmMapIoSpace
يقوم هذا IOCTL بنسخ قيمة من مؤشر يتم توفيره في مخزن الإدخال إلى الذاكرة الفعلية المعينة
لحل MmPteBase والمتطلبات الأساسية الأخرى، يتم العثور على مساحة "تبديل" (swap) فعلية عن طريق البحث في نطاق الذاكرة الفعلية 0x1000 - 0x10000 عن 8 بايتات صفرية.
بمجرد العثور على تلك المساحة، يتم نسخ الذاكرة الافتراضية إلى مساحة التبديل تلك عبر IOCTL 0x222014 وقراءتها مرة أخرى باستخدام IOCTL 0x222010.
كما هو الحال الآن، تتم جميع القراءات الافتراضية باستخدام مساحة "التبديل" هذه.
هل هي أفضل طريقة للقراءة/الكتابة الافتراضية؟ على الأرجح لا.
هل تعمل؟ نعم.
أوه، أيضًا، احترس من الإزاحات (offsets) الخاصة بك -- تم اختبار هذا على Windows 11 21H2 مع تعطيل HVCI.