
masm32 कर्नेल प्रोग्रामिंग, ड्राइवर, ट्यूटोरियल, उदाहरण, और टूल्स (क्रेडिट्स Four-F)
Dreg का अपनी ज़रूरतों के लिए रिपॉजिटरी
masm32 कर्नेल प्रोग्रामिंग, ड्राइवर, ट्यूटोरियल, उदाहरण और टूल्स (क्रेडिट Four-F)
इस समय C:\ में एक .sys बन जाता है
ड्राइवर लोड करें:
w2k_load.exe या osrloader.exe beeper.sys लोड करते समय एक एरर देते हैं, बस उसे अनदेखा करें।
यह एरर ड्राइवर कोड द्वारा स्वयं उत्पन्न होता है जब वह अपना निष्पादन समाप्त करता है (इस ट्रिक से आपको इसे अनलोड करने की आवश्यकता नहीं होती)
mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
ret
इसलिए, यदि beep.sys कर्नेल में सही ढंग से लोड होता है तो आपको अपने स्पीकर में बीप सुनाई देनी चाहिए (ड्राइवर कोड एक बीप उत्पन्न करता है)
जब आपको ड्राइवर अनलोड करना हो तो उपयोग करें:
मैंने w2k_load.exe (Sven B. Schreiber द्वारा) को windows 2000 से windows 10 तक काम करने के लिए संशोधित किया (manifest...)
osrloaderv30.zip को अनज़िप करें और इस GUI प्रोग्राम का उपयोग करें:
पुराने windows के लिए इस रिपॉजिटरी में संलग्न DbgView.exe का उपयोग करें। वैसे, मैंने इसे संशोधित किया है (manifest...)
आधुनिक windows के लिए sysinternal वेब साइट से नवीनतम dbgview.exe का उपयोग करें, और समस्या निवारण के लिए यह देखें:
इस रिपॉजिटरी में .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 खोजने का एक उदाहरण है।
यह ID 80h-400h वाले थ्रेड्स को स्कैन करता है, एक ऐसा थ्रेड खोजने की कोशिश करता है जिसका KTHREAD.ServiceTable KeServiceDescriptorTable के बराबर न हो। यदि ऐसा थ्रेड मिलता है, तो उसका KTHREAD.ServiceTable ServiceDescriptorTableShadow का पता रखता है।
ड्राइवर का डीबग आउटपुट DbgView (www.sysinternals.com) से देखें या SoftICE का उपयोग करें।
परीक्षण: Windows 2000, XP और Server 2003 पर।
यह एक साधारण लिगेसी (गैर-PnP) PS/2-कीबोर्ड फ़िल्टर ड्राइवर का उदाहरण है। चेतावनी: आप इसे USB-कीबोर्ड स्टैक से संलग्न करने में विफल रहेंगे।
परीक्षण: Windows 2000, XP और Server 2003 पर।
Four-F, [email protected]ये मैक्रो फ़ाइलें मेरे cocomac पैकेज से हैं।
यह एक साधारण लिगेसी (गैर-PnP) PS/2-माउस फ़िल्टर ड्राइवर का उदाहरण है। चेतावनी: आप इसे USB-माउस स्टैक से संलग्न करने में विफल रहेंगे।
परीक्षण: Windows 2000, XP और Server 2003 पर।
यह IoCreateDevice के बजाय IoCreateDeviceSecure को कॉल करके नामित डिवाइस ऑब्जेक्ट पर विशेष सुरक्षा सेटिंग्स लागू करने का एक उदाहरण है।
चूँकि IoCreateDeviceSecure रूटीन ऑपरेटिंग सिस्टम का हिस्सा नहीं है, हम wdmsec.lib को लिंक करते हैं, जिसमें सभी आवश्यक रूटीन शामिल हैं।
यहाँ मिलने वाली wdmsec.lib लाइब्रेरी DDK के साथ भेजी गई लाइब्रेरी नहीं है। आकार कम करने के लिए मुझे इसे पुनः बनाना पड़ा, अनावश्यक सदस्यों को हटाते हुए।
यह फ़ाइल बनाने, उसमें लिखने, उससे पढ़ने और उसे हटाने का एक उदाहरण है।
इसे रजिस्टर/अनरजिस्टर करने और प्रारंभ करने के लिए KmdManager का उपयोग करें। इसका डीबग आउटपुट DbgView (www.sysinternals.com) से देखें या SoftICE का उपयोग करें।
परीक्षण: Windows 2000, XP और Server 2003 पर।
यह ड्राइवर को रिसोर्सेस में पैक करने का एक उदाहरण है।
परीक्षण: Windows 2000, XP और Server 2003 पर।
यह जानने का तरीका कि सिस्टम सेफ मोड में चल रहा है या नहीं।
इसे रजिस्टर/अनरजिस्टर करने और प्रारंभ करने के लिए KmdManager का उपयोग करें। इसका डीबग आउटपुट DbgView (www.sysinternals.com) से देखें या SoftICE का उपयोग करें।
परीक्षण: Windows 2000, XP और Server 2003 पर।
basic/MemoryWorks/LookasideList
यह lookaside सूची और doubly linked सूची का उपयोग करके lookaside सूची से आवंटित मेमोरी ब्लॉक्स को प्रबंधित करने का एक उदाहरण है।
इसे रजिस्टर/अनरजिस्टर करने और प्रारंभ/रोकने के लिए KmdManager का उपयोग करें। इसका डीबग आउटपुट DbgView (www.sysinternals.com) से देखें या SoftICE का उपयोग करें।
परीक्षण: Windows 2000, XP और Server 2003 पर।
यह SEH के साथ अपवादों को संभालने का एक उदाहरण है। लेकिन याद रखें। आप कर्नेल मोड में SEH के साथ सभी अपवादों को संभाल नहीं सकते!
इसे रजिस्टर/अनरजिस्टर करने और प्रारंभ/रोकने के लिए KmdManager का उपयोग करें। इसका डीबग आउटपुट DbgView (www.sysinternals.com) से देखें या SoftICE का उपयोग करें।
परीक्षण: Windows 2000, XP और Server 2003 पर।
basic/MemoryWorks/SharedSection
यह यूज़र मोड प्रोसेस और कर्नेल मोड ड्राइवर के बीच मेमोरी साझा करने के लिए नामित सेक्शन ऑब्जेक्ट का उपयोग करने का एक उदाहरण है।
परीक्षण: Windows 2000, XP और Server 2003 पर।
basic/MemoryWorks/SharingMemory
यह यूज़र और कर्नेल मोड के बीच मेमोरी बफर साझा करने के एक संभावित तरीके का उदाहरण है।
परीक्षण: Windows 2000, XP और Server 2003 पर।
basic/MemoryWorks/SystemModules
यह कर्नेल मोड में मेमोरी आवंटित करने का एक उदाहरण है। इसे व्यर्थ आवंटित न करने के लिए हम इसे कुछ सिस्टम जानकारी से भर देते हैं।