
masm32 kernel programming, drivers, tutorials, examples, and tools (credits Four-F)
مستودع Dreg لاحتياجاته الشخصية
برمجة نواة masm32، برامج تشغيل، دروس تعليمية، أمثلة، وأدوات (يعود الفضل إلى Four-F)
في هذه اللحظة يتم إنشاء ملف .sys في C:\
تحميل برنامج التشغيل:
عند تحميل w2k_load.exe أو osrloader.exe قد يظهر خطأ في تحميل beeper.sys، تجاهله فقط.
يتم إنشاء هذا الخطأ بواسطة كود برنامج التشغيل نفسه عندما ينتهي من تنفيذه (بهذه الحيلة لا تحتاج إلى إلغاء تحميله)
mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
ret
لذا، إذا تم تحميل beep.sys بشكل صحيح في النواة، يجب أن تسمع صوت صفير من مكبرات الصوت (كود برنامج التشغيل يولّد صفيرًا)
عند الحاجة إلى إلغاء تحميل برنامج تشغيل استخدم:
لقد قمت بتعديل w2k_load.exe بواسطة Sven B. Schreiber ليعمل من ويندوز 2000 إلى ويندوز 10 (manifest...)
قم بفك ضغط osrloaderv30.zip واستخدم هذا البرنامج الرسومي:
لإصدارات ويندوز الأقدم فقط استخدم DbgView.exe المرفق في هذا المستودع. بالمناسبة، قمت بتعديله (manifest...)
بالنسبة لإصدارات ويندوز الحديثة استخدم آخر إصدار من dbgview.exe من موقع sysinternals، وتحقق من هذا لاستكشاف الأخطاء وإصلاحها:
اقرأ ملفات .pdf في هذا المستودع وشاهد الأمثلة في دليل KmdKit18/examples
تحذير: جميع أكواد ASM المصدرية موجودة داخل ملفات .bat (كود batch + كود asm مختلطان في نفس الملف)
مثال مع advanced\FindShadowTable\FindShadowTable.bat
;@echo off
;goto make
ASM DRIVER CODE GOES HERE
:make
set drv=FindShadowTable
\masm32\bin\ml /nologo /c /coff %drv%.bat
\masm32\bin\link /nologo /driver /base:0x10000 /align:32 /out:%drv%.sys /subsystem:native %drv%.obj
del %drv%.obj
echo.
pause
يحتوي هذا الملف على كود BATCH الذي يولّد ملف .sys ويحتوي أيضًا على كود برنامج التشغيل المصدر نفسه. لذا، نعم، الأمر معقد جدًا، فسكربت البناء وكود المصدر معًا في مكان واحد
هذا مثال حول كيفية العثور على ServiceDescriptorTableShadow.
إنه فقط يمسح الخيوط (threads) ذات المعرف 80h-400h محاولًا العثور على خيط يكون فيه KTHREAD.ServiceTable غير مساوٍ لـ KeServiceDescriptorTable. إذا تم العثور على مثل هذا الخيط، فإن KTHREAD.ServiceTable الخاص به يحمل عنوان ServiceDescriptorTableShadow.
شاهد مخرجات التصحيح الخاصة ببرنامج التشغيل باستخدام DbgView (www.sysinternals.com) أو استخدم SoftICE.
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
هذا مثال لبرنامج تشغيل تصفية بسيط قديم (غير PnP) للوحة مفاتيح PS/2. تحذير: ستفشل في إرفاقه بمكدس لوحة المفاتيح USB.
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
Four-F, [email protected] ملفات الماكرو هذه من حزمتي cocomac.
هذا مثال لبرنامج تشغيل تصفية بسيط قديم (غير PnP) لفأرة PS/2. تحذير: ستفشل في إرفاقه بمكدس الفأرة USB.
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
هذا مثال حول كيفية تطبيق إعدادات أمان معينة على كائن جهاز مسمى عن طريق استدعاء IoCreateDeviceSecure بدلاً من IoCreateDevice.
نظرًا لأن روتين IoCreateDeviceSecure ليس جزءًا من نظام التشغيل، فإننا نربط wdmsec.lib، الذي يحتوي على جميع الروتينات المطلوبة.
مكتبة wdmsec.lib التي ستجدها هنا ليست تلك التي تأتي مع DDK. كان عليّ إعادة بنائها لتقليل حجمها، مع إزالة الأعضاء غير الضرورية.
هذا مثال حول كيفية إنشاء الملف والكتابة إليه والقراءة منه وحذفه.
استخدم KmdManager للتسجيل/إلغاء التسجيل وتشغيله. شاهد مخرجات التصحيح الخاصة به باستخدام DbgView (www.sysinternals.com) أو استخدم SoftICE.
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
هذا مثال حول كيفية تعبئة برنامج التشغيل داخل الموارد (resources).
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
الطريقة التي تعرف بها ما إذا كان النظام يعمل في الوضع الآمن أم لا.
استخدم KmdManager للتسجيل/إلغاء التسجيل وتشغيله. شاهد مخرجات التصحيح الخاصة به باستخدام DbgView (www.sysinternals.com) أو استخدم SoftICE.
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
basic/MemoryWorks/LookasideList
هذا مثال حول كيفية استخدام قائمة lookaside والقائمة المرتبطة المزدوجة لإدارة كتل الذاكرة المخصصة من قائمة lookaside.
استخدم KmdManager للتسجيل/إلغاء التسجيل وتشغيله/إيقافه. شاهد مخرجات التصحيح الخاصة به باستخدام DbgView (www.sysinternals.com) أو استخدم SoftICE.
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
هذا مثال حول كيفية التعامل مع الاستثناءات باستخدام SEH. لكن تذكر. لا يمكنك التعامل مع جميع الاستثناءات باستخدام SEH في وضع النواة!
استخدم KmdManager للتسجيل/إلغاء التسجيل وتشغيله/إيقافه. شاهد مخرجات التصحيح الخاصة به باستخدام DbgView (www.sysinternals.com) أو استخدم SoftICE.
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
basic/MemoryWorks/SharedSection
هذا مثال حول كيفية استخدام كائن مقطع مسمى (section object) لمشاركة الذاكرة بين عملية وضع المستخدم وبرنامج تشغيل وضع النواة.
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
basic/MemoryWorks/SharingMemory
هذا مثال على إحدى الطرق الممكنة لمشاركة مخزن الذاكرة بين وضع المستخدم ووضع النواة.
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
basic/MemoryWorks/SystemModules
هذا مثال حول كيفية تخصيص الذاكرة في وضع النواة. لكي لا نخصصها دون فائدة، نقوم بملئها ببعض معلومات النظام.
استخدم KmdManager للتسجيل/إلغاء التسجيل وتشغيله/إيقافه. شاهد مخرجات التصحيح الخاصة به باستخدام DbgView (www.sysinternals.com) أو استخدم SoftICE.
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
هذا مثال حول كيفية إنشاء مفتاح الريجستري وتعيينه وقراءته وحذفه. استخدم KmdManager للتسجيل/إلغاء التسجيل وتشغيله. شاهد مخرجات التصحيح الخاصة به باستخدام DbgView (www.sysinternals.com) أو استخدم SoftICE.
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
هذا مثال حول كيفية وضع الكود في مقاطع PE مختلفة.
basic/Synchronization/MutualExclusion
هذا مثال حول كيفية تنفيذ وصول حصري متبادل إلى المورد.
استخدم KmdManager للتسجيل/إلغاء التسجيل وتشغيله/إيقافه. شاهد مخرجات التصحيح الخاصة به باستخدام DbgView (www.sysinternals.com) أو استخدم SoftICE.
[basic/Synchronization/SharedEvent - ProcessMon](KmdKit18/examples/basic/Synchronization/SharedEvent - ProcessMon)
هذا مثال حول كيفية إخطار وضع المستخدم بحدوث نوع ما من الأحداث.
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
basic/Synchronization/TimerWorks
هذا مثال حول كيفية إنشاء المؤقت وتعيينه والانتظار عليه وإلغائه. استخدم KmdManager للتسجيل/إلغاء التسجيل وتشغيله/إيقافه. شاهد مخرجات التصحيح الخاصة به باستخدام DbgView (www.sysinternals.com) أو استخدم SoftICE.
تم الاختبار على: ويندوز 2000 وXP وServer 2003.
مثال WorkItem
في هذا المثال نتعامل مع جهاز قرص موجود.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
يوفر معلومات حول ميزات كل قسم من أقسام القرص.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
في هذا المثال نتعامل مع جهاز قرص موجود.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
في هذا المثال نتعامل مع جهاز لوحة مفاتيح موجود.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
في هذا المثال نتعامل مع جهاز لوحة مفاتيح موجود. يقدم هذا المثال بعضًا من وظائف لوحة التحكم القياسية -> برنامج لوحة المفاتيح.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
قراءة MBR من وضع المستخدم هي أسهل شيء يمكن فعله إذا كنت تعرف الجهاز الذي يجب القراءة منه.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
في هذا المثال نتعامل مع جهاز تسلسلي موجود.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
هذا مثال حول كيفية استخدام بعض دوال أجهزة الإعداد (setup device functions). يقوم بتعداد جميع أجهزة القرص المتاحة والحصول على خاصية الجهاز. قم بتشغيله من سطر الأوامر.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
كيفية إصدار صفير باستخدام مكبر صوت النظام.
تم الاختبار على: ويندوز NT4.0+sp6 و2000 وXP وServer 2003
يعطي وصولًا مباشرًا لمنافذ الإدخال/الإخراج لعملية وضع المستخدم استنادًا إلى مقالة وكود المصدر بلغة C الخاصة بـ Dale Roberts.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
هذا مثال حول كيفية العثور على قاعدة ntoskrnl.exe.
استخدم KmdManager للتسجيل/إلغاء التسجيل وتشغيله/إيقافه. شاهد مخرجات التصحيح الخاصة به باستخدام DbgView (www.sysinternals.com) أو استخدم SoftICE.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
يوضح اتصال برنامج التشغيل باستخدام ReadFile، دون استخدام أي من الطريقتين. وكيفية استخدام SEH في ring0.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
أبسط برنامج تشغيل ممكن لوضع النواة لا يفعل شيئًا على الإطلاق.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
الكود الهيكلي لبرنامج تشغيل جهاز بوضع النواة لويندوز NT.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
يوضح اتصال برنامج التشغيل باستخدام DeviceIoControl، باستخدام الطريقة المخزنة (buffered method). وكيفية ترجمة العناوين الافتراضية.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
يتيح لك هذا المثال معرفة IRQL وسياق العملية/الخيط التي تعمل عندها روتينات برنامج التشغيل الرئيسية. استخدم DebugView (www.sysinternals.com) لمشاهدة مخرجاته.
تم الاختبار على: ويندوز 2000 وXP وServer 2003
وثائق Windows Driver Kit (WDK) الإصدار 7.1.0: https://www.microsoft.com/en-us/download/details.aspx?id=11800
وثائق WDK: https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk
دليل المطوّر لبنية Intel 64 وIA-32، المجلدات المجمعة: 1، 2A، 2B، 2C، 2D، 3A، 3B، 3C، 3D، و4
تسريب كود مصدر ويندوز 2003، WRK، CRK ...
كتاب Undocumented Windows NT بقلم Prasad Dabak وSandeep Phadke وMilind Borate
كتاب Windows Kernel Programming بقلم Pavel Yosifovich
كتب Windows Internals بقلم Mark Russinovich وDavid A. Solomon وآخرين
(كتاب) The Rootkit Arsenal 2nd بقلم Bill Blunden
(كتاب) What Makes It Page?: The Windows 7 (x64) Virtual Memory Manager بقلم Enrico Martignetti
(كتاب) Subverting the Windows Kernel
(كتاب) Rootkits and Bootkits: Reversing Modern Malware and Next Generation Threats
osdev (مجتمع المهتمين بتطوير أنظمة التشغيل)
github/gist عشوائي، OSR، phrack، uninformed، openrce، kernelmode، rootkit.com، arteam...