
أداة حقن DLL لنظام Windows 10 عبر برنامج تشغيل تستخدم VAD وتُخفي برنامج التشغيل المُحمَّل
Driver DLL Injector الوصف
Driver DLL Injector هو أداة قوية تتيح للمستخدمين تحميل برامج التشغيل التي يختارونها باستخدام أداة التحميل (المابّر) المفضلة لديهم. ومن خلال الاستفادة من إمكانيات أداة تحميل برامج تشغيل غير موقعة، مثل KDmapper، تم بناء هذا الحاقن واختباره على عمليات Windows 10 2004 x64
يقوم برنامج التشغيل بربط دالة آمنة من Patch Guard تُعرف باسم xKdEnumerateDebuggingDevices للتواصل مع عملية وضع المستخدم الخاصة بنا. هذه الطريقة مكتشفة بشكل كبير في برامج مكافحة الغش الشائعة، لذلك نذهب خطوة أبعد ونحبس مؤشر ترابط وضع مستخدم داخل النواة للتواصل مع استعادة عنوان الدالة الأصلية، وبالتالي تجاوز فحوصات سلامة الدوال.
يقوم برنامج التشغيل بما يلي لإخفاء الآثار المتروكة:
التلاعب بـ VAD: يقوم برنامج التشغيل بتخصيص ذاكرة بشكل استراتيجي خلف "مكدس مؤشر الترابط" بالاستفادة من دوال واصف العنوان الافتراضي (VAD) غير الموثقة مثل MiInsertChange و MiAllocVad، والتي ليست معروفة على نطاق واسع. بمجرد تخصيص VAD وتحميل DLL بنجاح، سيقوم برنامج التشغيل بإزالة VAD من شجرة VAD.
التلاعب بـ PTE: لتجاوز فحوصات NtQueryVirtualMemory، يقوم برنامج التشغيل بالتلاعب بإدخالات جدول الصفحات (PTEs) لجعل الصفحات المخصصة بواسطة VAD قابلة للتنفيذ. من خلال تعديل PTEs، يضمن برنامج التشغيل ألا يتم تحديث VAD مع تمكين البت القابل للتنفيذ (X)، متجاوزًا القيود المحتملة.
مسح PiDDBCacheTable و MmUnloadedDrivers (قائمة مجموعات التجزئة).
اعتمادًا على أداة التحميل اليدوي (manual mapper) التي تستخدمها لبرنامج التشغيل، ستحتاج أيضًا إلى مراعاة التجمعات الكبيرة (big pools).
تستخدم عملية وضع المستخدم تراكب Discord لاستدعاء الدالة الرئيسية الخاصة بـ DLL الخاص بنا.
تقوم عملية وضع المستخدم بما يلي:
لاستخدام Driver DLL Injector، اتبع الخطوات التالية:
1. اختر وقم بتثبيت أداة تحميل (mapper) متوافقة، مثل KDmapper.
2. قم بترجمة أو بناء مشروع Driver DLL Injector.
3. قم بتحميل برنامج التشغيل باستخدام أداة التحميل المحددة
4. شغّل تطبيق الاختبار (مع تمكين تراكب Discord)
5. شغّل تطبيق وضع المستخدم وانتظر مربع رسالة Hello World.
عند إنشاء هذا المشروع، كانت هناك عدة عوائق على طول الطريق. بعضها كان كالتالي:
/sdl- و /GS- ومكتبة التشغيل إلى /MT أصلح مشكلات التعطل لديّ.KMODE_EXCEPTION، وتم إصلاح ذلك عن طريق تعيين خاصية برنامج التشغيل /GS-.ModMap - لإظهار التلاعب بـ VAD
SkCrypt - للتشفير
Stealthy Kernel Mode Injector - لقاعدة برنامج التشغيل
Poseidon - لحبس مؤشر ترابط وضع المستخدم في النواة
FACE INJECTOR - للشيل كود