
Rusty Hypervisor - برنامج Hypervisor من النوع 1 بتقنية Blue Pill لـ UEFI على Windows مكتوب بلغة Rust (الاسم الرمزي: Illusion)
المدونة: https://memn0ps.github.io/hypervisors-for-memory-introspection-and-reverse-engineering/
هايبرفايزر بحثي من النوع الأول (type-1) مكتوب بلغة Rust، خفيف الوزن وآمن من ناحية الذاكرة وسريع للغاية، مع خطافات (hooks) لمعمارية Intel VT-x، ويركز على دراسة المفاهيم الأساسية للمحاكاة الافتراضية (virtualization).
ملاحظة: إن Illusion hypervisor (Windows UEFI Blue Pill Type-1 Hypervisor in Rust) أكثر استقرارًا، ويدعم ميزات أكثر، وهو أفضل تصميمًا بشكل عام. أما Matrix hypervisor (Windows Kernel Blue Pill Type-2 Hypervisor in Rust) فهو نسخة أقدم وتجريبية وغير مخصصة للاستخدام الإنتاجي. كلا المشروعين يخدمان كقوالب لمساعدة الأشخاص على البدء في تطوير الهايبرفايزرات بلغة Rust.
الترقيم الصفحي (Paging): ترجمة عناوين x64 الافتراضية إلى عناوين فيزيائية
يوضح هذا المخطط آلية ترجمة عناوين x64 الافتراضية إلى عناوين فيزيائية في أنظمة الترقيم الصفحي التقليدية. في معمارية x64، تتضمن هذه الترجمة أربعة مستويات من جداول الصفحات: PML4 وPDPT وPDT وPT (Page Map Level 4 وPage Directory Pointer Table وPage Directory Table وPage Table). يستخدم كل مستوى 9 بتات من العنوان الافتراضي للفهرسة في المستوى التالي، مما يشير في النهاية إلى عنوان فيزيائي محدد في ذاكرة الوصول العشوائي (RAM). تُدار هذه العملية بواسطة نظام التشغيل ووحدة إدارة الذاكرة (MMU)، التي تترجم العناوين الافتراضية المستخدمة من قبل البرمجيات إلى عناوين فيزيائية تستخدمها العتاد.

الشكل 1: ترجمة عنوان x64 الافتراضي (جميع الحقوق: Guided Hacking)
جداول الصفحات الموسعة (EPT): ترجمة العناوين من المستوى الثاني (SLAT)
تُعد جداول الصفحات الموسعة (EPT) ميزة من ميزات تقنيات المحاكاة الافتراضية المدعومة بالعتاد مثل Intel VT-x وجداول الصفحات المتداخلة (NPT) الخاصة بـ AMD-V. تطبق EPT ترجمة العناوين من المستوى الثاني (SLAT)، المصممة خصيصًا للبيئات الافتراضية. بينما يترجم الترقيم الصفحي التقليدي العناوين الافتراضية إلى عناوين فيزيائية داخل نظام التشغيل الضيف (guest OS)، تضيف EPT طبقة إضافية عبر ترجمة العناوين الفيزيائية للضيف (المستخدمة من قبل نظام التشغيل الضيف) إلى العناوين الفيزيائية للمضيف (المستخدمة من قبل الهايبرفايزر). تُدار هذه الطبقة الثانية من الترجمة بواسطة الهايبرفايزر، مما يسمح لأنظمة التشغيل الضيفة بإدارة جداول صفحاتها الخاصة بشكل مستقل. تعمل SLAT على تحسين الأداء عبر تقليل الحاجة إلى مخارج الآلة الافتراضية (VM exits) أثناء عمليات الذاكرة، مما يقلل من الحمل الزائد ويعزز كفاءة المحاكاة الافتراضية.
يوضح المخطط أدناه كيفية تنفيذ خطافات EPT المخفية في Windows UEFI Blue Pill Type-1 Hypervisor (الاسم الرمزي: Illusion) المكتوب بلغة Rust.

الشكل 2: خطافات جداول الصفحات الموسعة (EPT) (Illusion)
ExceptionOrNmi (#GP, #PF, #BP, #UD) (0)، InitSignal (3)، StartupIpi (4)، Cpuid (10)، Getsec (11)، Hlt (12)، Invd (13)، Vmcall (18)، Vmclear (19)، Vmlaunch (20)، Vmptrld (21)، Vmptrst (22)، Vmresume (24)، Vmxon (27)، Vmxoff (26)، ControlRegisterAccesses (28)، Rdmsr (31)، Wrmsr (32)، MonitorTrapFlag (37)، Rdtsc (49)، EptViolation (48)، EptMisconfiguration (50)، Invept (53)، Invvpid (55)، Xsetbv (55).UNUSABLE).cargo install cargo-make.cargo make build-debug.cargo make build-release.cargo make run-debug.cargo make run-release.bcdedit.exe /set testsigning on.bcdedit.exe /bootdebug {bootmgr} on
bcdedit.exe /bootdebug on
bcdedit.exe /debug on
bcdedit.exe /dbgsettings net hostip:w.x.y.z port:n.يعمل برنامج UEFI blue-pill hypervisor في ظل الشروط التالية: