
Jormungandr هو تنفيذ kernel لمحمل COFF، مما يسمح لمطوري kernel بتحميل وتنفيذ ملفات COFF الخاصة بهم في kernel.
Jormungandr هو تطبيق kernel لمحمّل COFF، يتيح لمطوّري النواة تحميل وتنفيذ ملفات COFF الخاصة بهم داخل النواة. النوع الوحيد المدعوم من COFF هو COFF نواة x64 (أي COFF يستخدم دوالً من NTOSKRNL أو SSDT). هذا المشروع غير مدعوم للعمل مع تفعيل VBS لأنه يستخدم تجمّعات ذاكرة (pools) بصلاحيات تنفيذ، لكن يجب أن يعمل هذا المشروع مع أي إصدار من ويندوز بدءًا من ويندوز 7.
إذا لم تكن معتادًا على COFF وتحميل ملفات COFF، فيُرجى الرجوع إلى تدوينة TrustedSec حول محمّلات COFF.
للتواصل مع برنامج التشغيل (driver)، يمكنك استخدام وتجميع ملف المثال بواسطة 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 .
لتجميع المشروع، ستحتاج إلى الأدوات التالية:
استنسخ المستودع وقم ببناء برنامج التشغيل.
لاختباره في بيئة الاختبار الخاصة بك، قم بتشغيل هذه الأوامر في موجه أوامر بصلاحيات مرتفعة (elevated cmd):
bcdedit /set testsigning on
بعد إعادة التشغيل، أنشئ خدمة وقم بتشغيل برنامج التشغيل:
sc create nidhogg type= kernel binPath= C:\Path\To\Driver\Nidhogg.sys
sc start nidhogg
لتصحيح أخطاء برنامج التشغيل في بيئة الاختبار الخاصة بك، قم بتشغيل هذا الأمر في موجه أوامر بصلاحيات مرتفعة وأعد تشغيل جهاز الكمبيوتر الخاص بك:
bcdedit /debug on
بعد إعادة التشغيل، يمكنك رؤية رسائل التصحيح في أدوات مثل DebugView.
شكرًا جزيلًا لكل من ساهم في هذا المشروع: