
Hypervisor Bareflank เป็นเครื่องมือพัฒนาซอฟต์แวร์ไฮเปอร์ไวเซอร์โอเพนซอร์ส (SDK) สำหรับการเกิดสนิมและ C ++ นำโดย Assured Information Security, Inc. (AIS) ซึ่งเป็นเครื่องมือที่จำเป็นในการสร้างต้นแบบอย่างรวดเร็วและสร้าง Hypervisor ของคุณเอง Bareflank SDK มีไว้สำหรับวัตถุประสงค์ในการเรียนการสอน/การวิจัยเนื่องจากให้การสนับสนุนการจำลองเสมือนจริงเพียงพอที่จะเริ่ม/หยุดไฮเปอร์ไวเซอร์ Bareflank ยังสามารถใช้เป็นรากฐานในการสร้างไฮเปอร์ไวเซอร์ที่ใช้งานได้อย่างสมบูรณ์เนื่องจากใช้ใบอนุญาต MIT รวมถึงการทดสอบการทดสอบหน่วย 100% และการปฏิบัติตาม Autosar หากคุณกำลังมองหา 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
ตรวจสอบการแฮ็คของเราหรือไม่®ท้าทายและทดสอบทักษะของคุณ! ส่งคะแนนของคุณเพื่อแสดงให้เราเห็นว่าคุณมีอะไร เรามีสำนักงานทั่วประเทศและเสนอการจ่ายเงินที่แข่งขันได้และผลประโยชน์ที่โดดเด่น เข้าร่วมทีมที่ไม่เพียง แต่มุ่งมั่นสู่อนาคตของไซเบอร์สเปซ แต่ยังประสบความสำเร็จของพนักงานของเราเช่นกัน

ตรวจสอบการสาธิตล่าสุดสำหรับวิธีการรวบรวมและใช้ Hypervisor Bareflank บน Ubuntu 20.04:
ตรวจสอบช่อง YouTube ของเราสำหรับเนื้อหาที่ยอดเยี่ยมมากขึ้นรวมถึงวิดีโอต่อไปนี้ที่ CPPCON ด้านล่าง:
ก่อนที่จะพยายามใช้ Bareflank โปรดตรวจสอบเคล็ดลับต่อไปนี้เนื่องจากพวกเขาสามารถสร้างความแตกต่างอย่างมากในประสบการณ์เริ่มต้นของคุณ:
bcdedit /set hypervisorlaunchtype off แม้ว่าคุณจะไม่ได้ใช้ WSL2 อีกต่อไปปัจจุบัน Hypervisor Bareflank รองรับคอมไพเลอร์ Clang/LLVM 10+ เท่านั้น อย่างไรก็ตามสิ่งนี้ทำให้มั่นใจได้ว่าไฮเปอร์ไวเซอร์สามารถรวบรวมได้บนหน้าต่างรวมถึงการสนับสนุนสำหรับการคอมไพล์ข้าม การสนับสนุนสำหรับคอมไพเลอร์ C ++ 20 อื่น ๆ สามารถเพิ่มได้หากจำเป็นเพียงแจ้งให้เราทราบหากเป็นสิ่งที่คุณต้องการ
ในการรวบรวม BSL บน Windows คุณต้องปิดการใช้งาน UEFI SecureBoot ก่อนและเปิดใช้งานโหมดการลงนามทดสอบ โปรดทราบว่าสิ่งนี้อาจทำให้คุณต้องติดตั้ง Windows ใหม่ ( คุณได้รับการเตือนแล้ว ) สามารถทำได้จากพรอมต์คำสั่งที่มีสิทธิ์ผู้ดูแลระบบ:
bcdedit.exe /set testsigning ON
<reboot>
ถัดไปติดตั้งต่อไปนี้:
Visual Studio เป็นสิ่งจำเป็นเนื่องจากมีไลบรารีเฉพาะ Windows ที่จำเป็นในระหว่างการรวบรวม แทนที่จะใช้โครงการ Clang/LLVM ที่จัดส่งด้วย Visual Studio เราใช้ Binaries มาตรฐาน/LLVM ที่จัดทำโดยโครงการ LLVM ซึ่งทำให้มั่นใจได้ว่าเราได้รับเครื่องมือทั้งหมดรวมถึง LLD, Clang Tidy และ Clang นอกจากนี้โปรดทราบว่าคุณต้องใส่นินจาที่ไหนสักแห่งในเส้นทางของคุณ (เรามักจะวางลงในโฟลเดอร์ Bin ของ CMake) สุดท้าย ตรวจสอบให้แน่ใจว่าคุณทำตามคำแนะนำทั้งหมดเมื่อติดตั้ง WDK คำแนะนำเหล่านี้เปลี่ยนแปลงบ่อยครั้งและแต่ละขั้นตอนจะต้องติดตั้งอย่างถูกต้องและตามลำดับที่ได้รับจากคำแนะนำ การข้ามขั้นตอนหรือการติดตั้งแพ็คเกจในลำดับที่ไม่ถูกต้องจะส่งผลให้การติดตั้ง WDK ที่ใช้งานไม่ได้
ในการรวบรวม BSL เราจะใช้ Bash มีหลายวิธีในการเริ่มต้นทุบตีรวมถึงการเปิดพรอมต์ CMD และพิมพ์ "ทุบตี" เมื่อเรียกใช้ทุบตีตรวจสอบให้แน่ใจว่าคุณเพิ่มสิ่งต่อไปนี้ลงในเส้นทางของคุณ:
ตัวอย่างเช่นใน. 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 "ในที่สุดเรียกใช้สิ่งต่อไปนี้จาก Bash:
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 Loader จะถูกรวบรวมสำหรับคุณโดยอัตโนมัติ เมื่อรวบรวมเคอร์เนลส่วนขยายและ UEFI Loader แล้วคุณสามารถคัดลอกไปยังพาร์ติชัน UEFI FS0 ของคุณ โปรดทราบว่าไบนารีทั้งหมดจะต้องคัดลอกไปยังพาร์ติชัน FS0 ของคุณและในบางระบบนี่อาจเป็นแท่ง USB เพื่อช่วยในกระบวนการคัดลอกนี้ระบบบิลด์มีคำสั่งต่อไปนี้:
make copy_to_efi_partitionโดยค่าเริ่มต้นสิ่งนี้ใช้พาร์ติชัน EFI แต่สามารถย้ายถิ่นฐานได้โดยใช้:
-DHYPERVISOR_EFI_FS0=< path to FS0>บางระบบต้องการให้คุณจัดหาเชลล์ UEFI และดังนั้น Bareflank จึงมีสำเนาของเชลล์นี้ซึ่งจะถูกคัดลอกพร้อมกับเคอร์เนล, ส่วนขยายและ UEFI Loader เมื่อคุณรีบูตลงในเชลล์ UEFI คุณสามารถเริ่มต้นไฮเปอร์ไวเซอร์ได้โดยใช้
start_bareflank.efi
โปรดทราบว่าโดยค่าเริ่มต้น Hypervisor ไม่สามารถบูตระบบปฏิบัติการได้ คุณต้องใช้ตัวอย่างที่ไม่ใช่ default ที่ให้การสนับสนุน UEFI ที่สมบูรณ์ยิ่งขึ้นหรือให้ส่วนขยายของคุณเองที่สามารถบูทระบบปฏิบัติการได้สำเร็จ ในที่สุดเรา ไม่ได้ ให้ฟังก์ชั่น VMMCTL อื่น ๆ เช่นหยุดหรือถ่ายโอนข้อมูล
Bareflank Hypervisor SDK ประกอบด้วยองค์ประกอบหลักต่อไปนี้:
"ส่วนขยาย" เป็นที่ที่คุณใส่รหัสของคุณ มันเป็นแอปพลิเคชั่น Ring 3 ที่ทำงานอยู่ด้านบนของ microkernel ของเราในรูท "แหวน -1" หรือรูท VMX "เคอร์เนล" เป็น microkernel ที่ได้รับการกล่าวขานและมีหน้าที่รับผิดชอบในการดำเนินการแอปพลิเคชัน Hypervisor ทั้งหมดที่ใช้ไฮเปอร์ไวเซอร์จริง กล่าวอีกนัยหนึ่งตรรกะไฮเปอร์ไวเซอร์ทั้งหมดถูกนำไปใช้ในส่วนขยายที่คุณให้ไว้และ microkernel ของเราอยู่ที่นั่นเพื่อดำเนินการส่วนขยายของคุณในรูท VMX "ตัวโหลด" วาง microkernel ของเราและส่วนขยายของคุณในรูท VMX มันเป็นหน้าที่เริ่มต้นและหยุด hypervisor และทิ้งเนื้อหาของแหวนดีบั๊ก แอปพลิเคชัน "VMMCTL" ใช้เพื่อควบคุมตัวโหลด มันเป็นวิธีง่ายๆในการบอกตัวโหลดว่าต้องทำอะไร
ในการเริ่มต้น Bareflank ให้รวบรวม "ตัวโหลด" และเรียกใช้ในเคอร์เนลของระบบปฏิบัติการของคุณ ในการทำเช่นนั้นให้เรียกใช้สิ่งต่อไปนี้ (แทนที่ Make ด้วย Ninja บน Windows):
make driver_build
make driver_load
สิ่งนี้จะสร้าง "ตัวโหลด" และเรียกใช้ในเคอร์เนลของระบบปฏิบัติการ หากคุณทำตามคำแนะนำ BULD ด้านบนโดยใช้ CMAKE คุณควรรวบรวม microkernel, VMMCTL และส่วนขยายของคุณแล้ว (ซึ่งโดยค่าเริ่มต้นเป็นตัวอย่างเริ่มต้นของเรา) เมื่อรวบรวมส่วนประกอบเหล่านี้แล้วคุณสามารถเรียกใช้ไฮเปอร์ไวเซอร์โดยใช้คำสั่งต่อไปนี้ (แทนที่ด้วยนินจาบน Windows):
make start
หากต้องการรับข้อมูลการดีบักให้ใช้สิ่งต่อไปนี้ (แทนที่ Make ด้วย Ninja บน Windows):
make dump
หากต้องการหยุด hypervisor ให้ใช้สิ่งต่อไปนี้ (แทนที่ Make ด้วย Ninja บน Windows):
make stop
ในที่สุดในการขนถ่าย "โหลด" และทำความสะอาดระบบบิลด์คุณสามารถเรียกใช้สิ่งต่อไปนี้ (แทนที่ Make ด้วย Ninja บน Windows):
make driver_unload
make driver_clean
และนั่นคือ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสร้างและใช้ BareFlank คุณสามารถเรียกใช้รายการหลักของคำสั่งที่สมบูรณ์ต่อไปนี้รวมถึงการกำหนดค่าการสร้างที่สมบูรณ์ (แทนที่ Make ด้วย Ninja บน Windows):
make info
Hypervisor Bareflank มาพร้อมกับชุดของส่วนขยายตัวอย่างที่คุณสามารถใช้เพื่อสร้างไฮเปอร์ไวเซอร์ที่กำหนดเองของคุณเอง ในการเริ่มต้นเราจะสร้างไดเรกทอรีการทำงานและโคลน repos บางอย่างเพื่อเร่งกระบวนการสร้าง:
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 ที่กำหนดเองของคุณ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่ Microkernel ให้ส่วนขยายของคุณด้วยโปรดดูข้อมูลจำเพาะของ microkernel syscall ในโฟลเดอร์ DOCS นอกจากนี้เรายังให้ตัวอย่างการใช้งานของ ABI นี้เป็นชุดของ C ++ API ที่คุณสามารถใช้ได้หากคุณต้องการ ชุดตัวอย่างของ APIs สามารถเห็นได้ในไฟล์ SyScall/include/mk_interface.hpp
ในการใช้ตัวอย่างสนิมคุณจะต้องติดตั้งสนิมและเปลี่ยนเป็นช่องกลางคืน
Hypervisor Bareflank ให้ทรัพยากรที่มีประโยชน์มากมายในการเรียนรู้วิธีการใช้ห้องสมุดรวมถึง:
หากคุณมีคำถามข้อบกพร่องหรือคำขอคุณลักษณะใด ๆ โปรดอย่าลังเลที่จะถามสิ่งต่อไปนี้:
หากคุณต้องการช่วย:
Hypervisor Bareflank ใช้ประโยชน์จากเครื่องมือต่อไปนี้เพื่อให้แน่ใจว่าคุณภาพของรหัสที่เป็นไปได้สูงสุด คำขอดึงแต่ละครั้งได้รับการทดสอบและตรวจสอบอย่างเข้มงวดต่อไปนี้:
บน Windows เอาต์พุตอนุกรมอาจไม่ทำงานและในบางระบบ (เช่น Intel Nuc) อุปกรณ์อนุกรม Windows เริ่มต้นอาจป้องกันไม่ให้ Bareflank เริ่มต้นเลย หากเป็นกรณีนี้ให้ปิดการใช้งานอุปกรณ์อนุกรมเริ่มต้นโดยใช้สิ่งต่อไปนี้:
reg add "HKEY_LOCAL_MACHINESystemCurrentControlSetServicesSerial" /f /v "start" /t REG_DWORD /d "4"
ดู "เคล็ดลับสำคัญ" ด้านบนสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการใช้อุปกรณ์อนุกรม
Hypervisor Bareflank ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT
หากคุณสนใจ Bareflank คุณอาจสนใจโครงการต่อไปนี้:
มากกว่า:
https://github.com/ainfosec/more
Simplevisor:
https://github.com/ionescu007/simplevisor
hyperplatform:
https://github.com/tandasat/hyperplatform