
जॉर्मुंगंद्र एक COFF लोडर का कर्नेल कार्यान्वयन है, जो कर्नेल डेवलपर्स को अपने COFFs को कर्नेल में लोड और निष्पादित करने की अनुमति देता है।
Jormungandr COFF लोडर का एक कर्नेल कार्यान्वयन है, जो कर्नेल डेवलपर्स को अपने COFF को कर्नेल में लोड और निष्पादित करने की अनुमति देता है। केवल समर्थित COFF प्रकार x64 कर्नेल COFF है (अर्थात, ऐसा COFF जो NTOSKRNL या SSDT में से किसी के फ़ंक्शन का उपयोग करता है)। यह प्रोजेक्ट VBS सक्षम के साथ चलाने के लिए समर्थित नहीं है क्योंकि यह निष्पादन अनुमतियों वाले पूल का उपयोग करता है, लेकिन यह प्रोजेक्ट Windows 7 से शुरू होने वाले Windows के किसी भी संस्करण पर काम करेगा।
यदि आप COFF और COFF लोडिंग से अपरिचित हैं, तो कृपया COFF लोडर के बारे में TrustedSec का ब्लॉग पोस्ट देखें।
ड्राइवर के साथ संवाद करने के लिए, आप CMake के साथ उदाहरण फ़ाइल का उपयोग और संकलन कर सकते हैं। यह सबसे बुनियादी उपयोग का एक उदाहरण है:
int main() {
HANDLE hDrv = CreateFile(DRIVER_NAME, GENERIC_WRITE | GENERIC_READ, 0, nullptr, OPEN_EXISTING, 0, nullptr);
// ...
BOOL result = WriteFile(hDrv, &data, sizeof(data), &bytesWritten, NULL);
// ...
}
मौजूदा उदाहरण को चलाने और निष्पादित करने के लिए, आपको बस अपना स्वयं का COFF बनाना है या उदाहरण का उपयोग करना है:
JormungandrExample.exe example.out

कर्नेल COFF लिखने के लिए, एक नई C फ़ाइल बनाएं और निम्नानुसार अपने इच्छित फ़ंक्शन आयात करें:
DECLSPEC_IMPORT <FUNCTION_RETURN_TYPE> __cdecl <LIBRARY>$<FUNCTION_NAME>(<PARAMETERS>);
<FUNCTION_RETURN_TYPE> को अपने इच्छित फ़ंक्शन के रिटर्न प्रकार से बदलें, <LIBRARY> या तो ntoskrnl या ntdll हो सकता है, बाकी फ़ंक्शन का सिग्नेचर है। फ़ंक्शन आयात करने के बाद, आप इसका उपयोग उसी तरह कर सकते हैं जैसे आप कोड लिखने के आदी हैं।
COFF बनाने के लिए, निम्न कमांड के साथ mingw का उपयोग करें:
x86_64-w64-mingw32-gcc -c example.c -o example.out
क्लाइंट को संकलित करने के लिए, आपको CMake और Visual Studio 2022 स्थापित करना होगा और फिर बस चलाएँ:
cd <JORMUNGANDR PROJECT DIRECTORY>/Example
mkdir build
cd build
cmake ..
cmake --build .
प्रोजेक्ट को संकलित करने के लिए, आपको निम्नलिखित टूल की आवश्यकता होगी:
रिपॉजिटरी को क्लोन करें और ड्राइवर बनाएं।
इसे अपने परीक्षण वातावरण में परीक्षण करने के लिए, उन्नत cmd के साथ निम्न कमांड चलाएँ:
bcdedit /set testsigning on
रीबूट करने के बाद, एक सेवा बनाएं और ड्राइवर चलाएँ:
sc create nidhogg type= kernel binPath= C:\Path\To\Driver\Nidhogg.sys
sc start nidhogg
अपने परीक्षण वातावरण में ड्राइवर को डिबग करने के लिए, उन्नत cmd के साथ यह कमांड चलाएँ और अपने कंप्यूटर को रीबूट करें:
bcdedit /debug on
रीबूट के बाद, आप DebugView जैसे टूल में डिबगिंग संदेश देख सकते हैं।
इस प्रोजेक्ट में योगदान देने वाले सभी लोगों का बहुत-बहुत धन्यवाद: