
बूट समय पर PatchGuard और Driver Signature Enforcement अक्षम करें
EfiGuard एक पोर्टेबल x64 UEFI बूटकिट है जो Windows बूट मैनेजर, बूट लोडर और कर्नेल को बूट समय पर पैच करता है ताकि PatchGuard और Driver Signature Enforcement (DSE) को अक्षम किया जा सके।
यदि आप केवल EfiGuard आज़माना चाहते हैं, तो उपयोग पर जाएं।
वर्तमान में Vista SP1 से Windows 11 तक जारी सभी EFI-संगत Windows x64 संस्करणों का समर्थन करता है।
उपयोग में आसान: एक लोडर के माध्यम से USB स्टिक या Windows EFI विभाजन से बूट किया जा सकता है जो स्वचालित रूप से Windows को ढूंढता और बूट करता है। ड्राइवर को UEFI शेल या लोडर का उपयोग करके मैन्युअल रूप से भी लोड और कॉन्फ़िगर किया जा सकता है।
Zydis डिसेसम्बलर लाइब्रेरी का व्यापक उपयोग करता है ताकि फास्ट रनटाइम इंस्ट्रक्शन डिकोडिंग के लिए सिग्नेचर मैचिंग की तुलना में अधिक मजबूत विश्लेषण का समर्थन किया जा सके, जिसमें अक्सर नए OS अपडेट के साथ बदलाव की आवश्यकता होती है।
निष्क्रिय रूप से काम करता है: ड्राइवर Windows बूट मैनेजर को लोड या शुरू नहीं करता है। इसके बजाय यह फर्मवेयर बूट मैनेजर द्वारा bootmgfw.efi के लोड होने पर कार्य करता है, बूट चयन मेनू या लोडर जैसे EFI एप्लिकेशन के माध्यम से। यदि गैर-Windows OS बूट किया जाता है, तो ड्राइवर स्वचालित रूप से स्वयं को अनलोड कर देगा।
चार-चरणीय पैचिंग का समर्थन करता है जब bootmgfw.efi bootmgr.efi शुरू करता है, winload.efi के बजाय। यह तब होता है जब WinPE, Windows Setup या Windows Recovery मोड को बूट करने के लिए WIM फ़ाइल लोड की जाती है।
सुगम पुनर्प्राप्ति: पैच विफलता की स्थिति में, ड्राइवर त्रुटि जानकारी प्रदर्शित करेगा और बूट जारी रखने या ESC दबाकर रीबूट करने का संकेत देगा। यह अंतिम कर्नेल पैच चरण तक भी सच है, क्योंकि अंतिम पैच चरण ExitBootServices कॉल करने से पहले होता है। कई UEFI Windows बूटकिट OslArchTransferToKernel को हुक करते हैं, जबकि पैटर्न मैचिंग द्वारा खोजना आसान है, यह एक फ़ंक्शन है जो ExitBootServices के बाद संरक्षित मोड में निष्पादित होता है। इसका मतलब है कि उपयोगकर्ता को यह बताने के लिए कोई बूट सेवाएँ उपलब्ध नहीं हैं कि कुछ गलत हो गया है।

त्रुटि जानकारी के साथ अनुकरित पैच विफलता
डीबग करने योग्य: कर्नेल पैचिंग चरण के दौरान कर्नेल डीबगर और स्क्रीन पर संदेश आउटपुट कर सकता है (हालांकि बफर किए गए), और बूट मैनेजर और बूट लोडर पैचिंग चरणों के दौरान सीरियल पोर्ट या अनबफर्ड स्क्रीन पर। यदि ड्राइवर PDB डीबग जानकारी के साथ संकलित किया गया है, तो HAL आरंभीकरण के बाद किसी भी बिंदु पर वर्चुअल DXE ड्राइवर बेस निर्दिष्ट करके और इसे सामान्य NT ड्राइवर की तरह डीबग करके डीबग प्रतीकों को लोड करना संभव है।
DSE बाईपास: बूट समय पर सीधे UPGDSED-शैली DSE अक्षम करने के रूप में या SetVariable() EFI रनटाइम सेवा पर हुक के रूप में उपलब्ध। बाद वाला एक मनमाना कर्नेल मोड रीड/राइट बैकडोर के रूप में कार्य करता है जिसे Windows से NtSetSystemEnvironmentValueEx का उपयोग करके कॉल किया जा सकता है और g_CiEnabled/g_CiOptions को वांछित मान पर सेट करने की अनुमति देता है। एक छोटा DSEFix-शैली एप्लिकेशन जिसका नाम EfiDSEFix.exe है, प्रदान किया गया है जिसका उपयोग ऐसा करने के लिए किया जा सकता है। DSE को सक्षम छोड़ना और केवल PatchGuard को अक्षम करना भी संभव है। लोडर डिफ़ॉल्ट रूप से SetVariable हुक विधि का उपयोग करेगा, इस तथ्य के कारण कि कुछ एंटी-चीट और एंटी-वायरस प्रोग्राम चीट या मैलवेयर और सामान्य रूप से स्व-हस्ताक्षरित ड्राइवरों के बीच अंतर नहीं समझते हैं और UPGDSED फिक्स को लक्षित करते हैं।
हर चरण पर ImgpValidateImageHash के साथ-साथ ImgpFilterValidationFailure को पैच करके डिस्क पर संशोधित कर्नेल और बूट लोडर का समर्थन करता है, जो चुपचाप TPM या SI लॉग फ़ाइल में कुछ प्रकार के उल्लंघनों की रिपोर्ट कर सकता है।
Windows 7 के साथ Secure Boot को काम करने की अनुमति देता है (मज़ाक नहीं!)। Windows 7 स्वयं Secure Boot से अनजान है क्योंकि यह इसका समर्थन नहीं करता है, या (आधिकारिक तौर पर) CSM के बिना बूट भी नहीं करता है। यह उन लोगों के लिए उपयोगी है जो एक लॉक डाउन डिवाइस पर Windows 7 का उपयोग करना चाहते हैं जिसके लिए WHQL Secure Boot की आवश्यकता है। इसे काम करने के तरीके पर विकी प्रविष्टि यहाँ है।

Secure Boot सक्षम के साथ Windows 7 पर WinObjEx64
SetVariable हुक यदि g_CiOptions में लिखने के लिए उपयोग किया जाता है तो SECURE_KERNEL_ERROR बगचेक का कारण बनेगा।EfiGuard का उपयोग करने के दो तरीके हैं: लोडर एप्लिकेशन को बूट करना, जो आपके लिए ड्राइवर को लोड करेगा और Windows शुरू करेगा, या ड्राइवर को UEFI ड्राइवर प्रविष्टि के रूप में स्थापित करना ताकि यह फर्मवेयर द्वारा स्वचालित रूप से लोड हो जाए।
कुछ उन्नत कॉन्फ़िगरेशन में जैसे कि मल्टी-बूटिंग करते समय ड्राइवर स्थापित करना बेहतर हो सकता है, लेकिन लोडर का उपयोग करना सबसे आसान है और सभी कॉन्फ़िगरेशन में अच्छी तरह से काम करना चाहिए। दो विधियों के बीच सबसे महत्वपूर्ण अंतरों के लिए नीचे दी गई तालिका देखें। यदि अनिश्चित हैं, तो लोडर एप्लिकेशन चुनें।
| स्थान | स्थापना | छोड़ने योग्य? | कौन सा OS बूट होता है? | |
|---|---|---|---|---|
| UEFI ड्राइवर प्रविष्टि | ESP पर होना चाहिए | UEFI शेल के माध्यम से | ❌ | पहले जैसा ही |
| लोडर | कहीं भी | आवश्यक नहीं | ✔️ | Windows |
लोडर बनाम UEFI ड्राइवर प्रविष्टि तुलना
EFI/Boot/Loader.efi का नाम बदलकर bootx64.efi करें।X: मानते हुए, दो फ़ाइलों के पथ अब X:/EFI/Boot/{bootx64|EfiGuardDxe}.efi होने चाहिए।SetVariable हुक (डिफ़ॉल्ट) के साथ बूट किया है, तो बूट के बाद DSE को अक्षम करने के लिए एक व्यवस्थापक कमांड प्रॉम्प्ट से EfiDSEFix.exe -d चलाएं, या विकल्पों की पूरी सूची देखने के लिए EfiDSEFix.exe चलाएं।ध्यान दें कि आपको लोडर के लिए एक अलग ड्राइव का उपयोग करने की आवश्यकता नहीं है। यदि पसंद किया जाए, तो आप EfiGuard को उस ESP पर स्थापित कर सकते हैं जिस पर Windows पहले से स्थापित है। हालांकि, यह कुछ अधिक जटिल है क्योंकि आपको लोडर के लिए एक UEFI बूट प्रविष्टि जोड़ने की आवश्यकता होगी।