
Bareflank Hypervisor عبارة عن مجموعة أدوات لتطوير البرمجيات Hypervisor مفتوحة المصدر (SDK) لـ Rust و C ++ ، بقيادة Aured Information Security ، Inc. (AIS) ، والتي توفر الأدوات اللازمة للنموذج الأولي وإنشاء Hypervisor الخاص بك على 64bits من INTEL و AMD (ARMV8 CPUS ، RISC-V و PowerPC أيضًا). يهدف Bareflank SDK لأغراض تعليمية/بحثية لأنه يوفر فقط ما يكفي من الدعم الافتراضي لبدء/إيقاف Hypervisor. يمكن أيضًا استخدام BareFlank كأساس لإنشاء Hypervisor الخاص بك ، حيث يستخدم ترخيص MIT ، يتضمن تغطية اختبار الوحدة بنسبة 100 ٪ والامتثال للسيارات. إذا كنت تبحث عن Hypervisor الكامل (وليس SDK) ، فيرجى رؤية Microv. إذا كنت تبحث عن الحد الأدنى من SDK للتعليم أو لإجراء البحوث ، فهذا هو المشروع المناسب لك. إذا كنت تبحث ببساطة عن Hypervisor المرجعية ، فيرجى الاطلاع على SimpleVisor.
يستخدم Bareflank نهجًا وحدنيًا ، يتيح لك اختيار مقدار التعقيد الذي تحتاجه في مشروعك عند إنشاء Hypervisor المخصص الخاص بك:
احصل على أحدث إصدار من Bareflank Hypervisor SDK من Github:
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
makeيتمتع:
make driver_quick
make start
make dump
make stop
تحقق من لدينا هل يمكنك اختراقها؟ ® تحدي واختبار مهاراتك! أرسل درجاتك لتظهر لنا ما لديك. لدينا مكاتب في جميع أنحاء البلاد ونقدم رواتب تنافسية وفوائد معلقة. انضم إلى فريق لا يلتزم فقط بمستقبل الفضاء الإلكتروني ، ولكن أيضًا إلى نجاح موظفنا أيضًا.

تحقق من أحدث عرض تجريبي لكيفية تجميع واستخدام Bareflank Hypervisor على Ubuntu 20.04:
تحقق من قناة YouTube الخاصة بنا للحصول على المزيد من المحتوى الرائع بالإضافة إلى مقاطع الفيديو التالية في CPPCON أدناه:
قبل محاولة استخدام BareFlank ، يرجى مراجعة النصائح التالية لأنها يمكن أن تحدث فرقًا كبيرًا في تجربتك الأولية:
bcdedit /set hypervisorlaunchtype off مع استمرار تشغيل HyperV حتى لو لم تعد تستخدم WSL2.حاليًا ، يدعم Bareflank Hypervisor فقط برنامج التحويل البرمجي Clang/LLVM 10+. ومع ذلك ، فإن هذا يضمن أنه يمكن تجميع Hypervisor أصلاً على Windows بما في ذلك الدعم للمجهة المتقاطعة. يمكن إضافة دعم المترجمين الآخرين C ++ 20 إذا لزم الأمر ، فقط أخبرنا إذا كان هذا شيء تحتاجه.
لتجميع BSL على Windows ، يجب أولاً تعطيل UEFI Secureboot وتمكين وضع توقيع الاختبار. لاحظ أن هذا قد يتطلب منك إعادة تثبيت النوافذ ( لقد تم تحذيرك ). يمكن القيام بذلك من موجه أوامر مع امتيازات المسؤول:
bcdedit.exe /set testsigning ON
<reboot>
بعد ذلك ، قم بتثبيت ما يلي:
هناك حاجة إلى Visual Studio لأنه يحتوي على مكتبات محددة Windows مطلوبة أثناء التجميع. بدلاً من استخدام مشروع CLANG/LLVM الذي يشحن أصلاً مع Visual Studio ، نستخدم ثنائيات Clang/LLVM القياسية التي يوفرها مشروع LLVM الذي يضمن حصولنا على جميع الأدوات بما في ذلك LLD و Clang Tidy و Clang. لاحظ أيضًا أنه يجب عليك وضع النينجا في مكان ما في طريقك (عادةً ما ننزل إلى مجلد سلة Cmake). أخيرًا ، تأكد من اتباع جميع التعليمات عند تثبيت WDK . تتغير هذه التعليمات بشكل متكرر ، ويجب تثبيت كل خطوة بشكل صحيح وبالترتيب المقدم من التعليمات. سيؤدي تخطي خطوة أو تثبيت حزمة بالترتيب الخطأ إلى تثبيت WDK الذي لا يعمل.
لتجميع BSL ، سوف نستخدم Bash. هناك العديد من الطرق لبدء Bash بما في ذلك فتح موجه CMD وكتابة "Bash". بمجرد تشغيل Bash ، تأكد من إضافة ما يلي إلى طريقك:
على سبيل المثال ، في .bashrc ، يمكنك إضافة ما يلي (اعتمادًا على مكان وضع Visual Studio هذه الملفات):
export PATH= " /c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin:/c/Program Files (x86)/Windows Kits/10/Tools/x64:/c/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x64: $PATH "أخيرًا ، قم بتشغيل ما يلي من باش:
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
ninja info
ninjaلتجميع BSL على Ubuntu (20.04 أو أعلى) يجب عليك أولاً تثبيت التبعيات التالية:
sudo apt-get install -y clang cmake lldلتجميع BSL ، استخدم ما يلي:
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
make info
makeلتجميع UEFI ، ما عليك سوى اتباع خطوات نظام التشغيل الخاص بك أعلاه ، ولكن أضف ما يلي إلى cmake:
-DHYPERVISOR_BUILD_EFI= ONيمكنك بعد ذلك إنشاء Hypervisor كالمعتاد وسيتم تجميع محمل UEFI لك تلقائيًا. بمجرد أن يتم تجميع kernel و extensions و UEFI Loader ، يمكنك نسخها إلى قسم UEFI FS0 الخاص بك. لاحظ أنه يجب نسخ جميع الثنائيات إلى قسم FS0 الخاص بك ، وعلى بعض الأنظمة ، قد تكون هذه عصا USB . للمساعدة في عملية النسخ هذه ، يتضمن نظام الإنشاء الأمر التالي:
make copy_to_efi_partitionبشكل افتراضي ، يستخدم هذا قسم EFI ، ولكن يمكن نقله باستخدام:
-DHYPERVISOR_EFI_FS0=< path to FS0>تتطلب منك بعض الأنظمة توفير قذيفة UEFI ، وبالتالي تحتوي BareFlank على نسخة من هذه القشرة التي سيتم نسخها مع kernel ، extensions و uefi loader. بمجرد إعادة تشغيل قذيفة UEFI ، يمكنك بدء تشغيل Hypervisor
start_bareflank.efi
لاحظ أنه افتراضيًا ، لا يستطيع Hypervisor تشغيل نظام التشغيل. يجب عليك إما استخدام مثال غير متوقع يوفر دعم UEFI أكثر اكتمالا ، أو توفير امتدادك الخاص القادر على تشغيل نظام التشغيل بنجاح. أخيرًا ، لا نقدم حاليًا أي من وظائف VMMCTL الأخرى مثل الإيقاف أو التفريغ.
يتكون SDK Bareflank Hypervisor من المكونات الرئيسية التالية:
"الامتداد" هو المكان الذي تضع فيه الرمز الخاص بك. إنه تطبيق Ring 3 الذي يعمل فوق Microkernel في ما يسمى "Ring -1" أو VMX Root. "kernel" هو microkernel المذكور أعلاه ، وهو مسؤول عن تنفيذ جميع تطبيقات Hypervisor التي تنفذ بالفعل Hypervisor. بمعنى آخر ، يتم تنفيذ جميع منطق Hypervisor في امتداد تقدمه ، و microkernel لدينا فقط لتنفيذ امتدادك في جذر VMX. يضع "Loader" microkernel لدينا وتمديدك في جذر VMX. وهي مسؤولة عن بدء وإيقاف Hypervisor ، وإلقاء محتويات حلقة تصحيح الأخطاء. يتم استخدام تطبيق "VMMCTL" للتحكم في المحمل. إنه يوفر وسيلة بسيطة لإخبار المحمل بما يجب القيام به.
لبدء Bareflank ، قم بتجميع "Loader" وقم بتشغيله في نواة نظام التشغيل الخاص بك. للقيام بذلك ، قم بتشغيل ما يلي (استبدل Make بـ Ninja على Windows):
make driver_build
make driver_load
هذا يبني "اللودر" ويديره في نواة نظام التشغيل. إذا اتبعت تعليمات BOLD أعلاه باستخدام CMAKE ، فيجب أن تكون قد قمت بالفعل بتجميع microkernel و VMMCTL وامتدادك (وهو مثالنا الافتراضي افتراضيًا). بمجرد تجميع هذه المكونات ، يمكنك تشغيل Hypervisor باستخدام الأمر التالي (استبدل Make بـ Ninja على Windows):
make start
للحصول على معلومات التصحيح ، استخدم ما يلي (استبدل Make بـ Ninja على Windows):
make dump
لإيقاف Hypervisor ، استخدم ما يلي (استبدل Make بـ Ninja على Windows):
make stop
أخيرًا ، لتفريغ "المحمل" وتنظيف نظام الإنشاء الخاص به ، يمكنك تشغيل ما يلي (استبدل Make with Ninja على Windows):
make driver_unload
make driver_clean
وهذا هو. لمزيد من المعلومات حول كيفية إنشاء واستخدام BareFlank ، يمكنك تشغيل Core التالية قائمة كاملة من الأوامر المتاحة لك وكذلك تكوين الإنشاء الكامل (استبدل Make with Ninja على Windows):
make info
يأتي Bareflank Hypervisor مع سلسلة من الامتدادات المثال التي يمكنك استخدامها لإنشاء Hypervisor المخصص الخاص بك. للبدء ، سنقوم بإنشاء دليل عمل ، ونستنسخ بعض الإعادة لتسريع عملية الإنشاء:
mkdir ~ /working
mkdir ~ /working/build
git clone https://github.com/bareflank/bsl ~ /working/bsl
git clone https://github.com/bareflank/hypervisor ~ /working/hypervisorبعد ذلك ، سننسخ مثالًا موجودًا في دليل العمل الخاص بنا (اختر المثال الذي يوفر أفضل نقطة انطلاق لمشروعك):
cp -R ~ /working/hypervisor/example/default ~ /working/extensionأخيرًا ، سنقوم بتكوين المشروع ، ونخبر نظام الإنشاء كيفية العثور على امتدادنا المخصص.
cd ~ /working/build
cmake
../hypervisor
-DHYPERVISOR_EXTENSIONS_DIR= $PWD /../extension
-DFETCHCONTENT_SOURCE_DIR_BSL= $PWD /../bsl يحدد HYPERVISOR_EXTENSIONS_DIR موقع امتدادك. لاحظ أن المسار يجب أن يكون مسارًا مطلقًا ، وهذا هو السبب في أننا استخدمنا المسار المطلق لمجلد الإنشاء كنقطة انطلاق ثم وضعنا موقع مجلد التمديد من هناك.
FETCHCONTENT_SOURCE_DIR_BSL اختياري. هذا يخبر نظام البناء أين يمكن العثور على BSL. نظرًا لأننا استنسخنا بالفعل BSL في دليل العمل الخاص بنا ، يمكننا استخدامه بدلاً من مطالبة نظام الإنشاء بجلب BSL لنا تلقائيًا. هذا أمر رائع بالنسبة للبناء غير المتصلة بالإنترنت ، أو يبني حيث تقوم بإعادة تشغيل Cmake كثيرًا ولا تريد الانتظار حتى يتم تنزيل BSL في كل مرة.
يمكن استخدام بقية تعليمات الاستخدام أعلاه لبدء/إيقاف Hypervisor المخصص. لمزيد من المعلومات حول ما يوفر Abis Microkernel امتداده ، يرجى الاطلاع على مواصفات Microkernel Syscall في مجلد المستندات. نقدم أيضًا تطبيقًا مثالًا لهذا ABI كمجموعة من واجهات برمجة تطبيقات C ++ التي يمكنك استخدامها إذا كنت ترغب في ذلك. يمكن رؤية هذا المثال من واجهات برمجة التطبيقات في ملف SYSCALL/Include/mk_interface.hpp.
لاستخدام مثال الصدأ ، سيتعين عليك تثبيت الصدأ والتبديل إلى القناة الليلية.
يوفر Bareflank Hypervisor الكثير من الموارد المفيدة لمعرفة كيفية استخدام المكتبة بما في ذلك:
إذا كان لديك أي أسئلة أو أخطاء أو طلبات ميزة ، فلا تتردد في طرح أي مما يلي:
إذا كنت ترغب في المساعدة:
يعمل Bareflank Hypervisor على الاستفادة من الأدوات التالية لضمان أعلى جودة رمز ممكن. يخضع كل طلب سحب للاختبار والمراجعة الصارمة التالية:
على Windows ، قد لا يعمل الإخراج التسلسلي ، وعلى بعض الأنظمة (مثل Intel NUC) ، قد يمنع الجهاز التسلسلي Windows الافتراضي BareFlank من البدء على الإطلاق. إذا كان هذا هو الحال ، قم بتعطيل الجهاز التسلسلي الافتراضي باستخدام ما يلي:
reg add "HKEY_LOCAL_MACHINESystemCurrentControlSetServicesSerial" /f /v "start" /t REG_DWORD /d "4"
انظر "نصائح مهمة" أعلاه للحصول على تفاصيل إضافية حول كيفية استخدام الأجهزة التسلسلية.
تم ترخيص Bareflank Hypervisor بموجب ترخيص MIT.
إذا كنت مهتمًا بـ BareFlank ، فقد تكون مهتمًا أيضًا بالمشاريع التالية:
أكثر:
https://github.com/ainfosec/more
SimpleVisor:
https://github.com/ionescu007/simplevisor
تضخم:
https://github.com/tandasat/hyperplatform