
Bareflank Hypervisor adalah perangkat lunak Source Hypervisor Software Development Toolkit (SDK) untuk Rust dan C ++, yang dipimpin oleh Assured Information Security, Inc. (AIS), yang menyediakan alat yang diperlukan untuk dengan cepat membuat prototipe dan membuat hypervisor Anda sendiri pada versi 64bit dari Intel dan AMD (ARMV8 CPUS, RISC-V dan PowerP juga. Bareflank SDK dimaksudkan untuk tujuan instruksional/penelitian karena hanya memberikan dukungan virtualisasi yang cukup untuk memulai/menghentikan hypervisor. Bareflank juga dapat digunakan sebagai fondasi untuk membuat hypervisor Anda sendiri yang berfungsi penuh karena menggunakan lisensi MIT, termasuk cakupan uji unit 100% dan kepatuhan untuk Autosar. Jika Anda mencari hypervisor lengkap (dan bukan SDK), silakan lihat Microv. Jika Anda mencari SDK minimal untuk pendidikan atau untuk melakukan penelitian, ini adalah proyek untuk Anda. Jika Anda hanya mencari hypervisor referensi, silakan lihat SimpleVisor.
Bareflank menggunakan pendekatan modular berlapis, yang memungkinkan Anda memilih seberapa banyak kompleksitas yang Anda butuhkan dalam proyek Anda saat membuat hypervisor kustom Anda sendiri:
Dapatkan versi terbaru dari Bareflank Hypervisor SDK dari GitHub:
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
makeMenikmati:
make driver_quick
make start
make dump
make stop
Lihatlah Can You Hack It? ® Challenge dan uji keterampilan Anda! Kirimkan skor Anda untuk menunjukkan kepada kami apa yang Anda miliki. Kami memiliki kantor di seluruh negeri dan menawarkan gaji kompetitif dan manfaat luar biasa. Bergabunglah dengan tim yang tidak hanya berkomitmen untuk masa depan dunia maya, tetapi juga untuk keberhasilan karyawan kami.

Lihatlah demo terbaru untuk cara mengkompilasi dan menggunakan hypervisor Bareflank di Ubuntu 20.04:
Lihat saluran YouTube kami untuk konten yang lebih bagus serta video berikut di CPPCON di bawah ini:
Sebelum mencoba menggunakan Bareflank, silakan tinjau tips berikut karena mereka dapat membuat perbedaan besar dalam pengalaman awal Anda:
bcdedit /set hypervisorlaunchtype off karena HyperV akan terus berjalan bahkan jika Anda tidak lagi menggunakan WSL2.Saat ini, Hypervisor Bareflank hanya mendukung kompiler Clang/LLVM 10+. Namun, ini memastikan bahwa hypervisor dapat dikompilasi secara asli pada jendela termasuk dukungan untuk kompilasi silang. Dukungan untuk kompiler C ++ 20 lainnya dapat ditambahkan jika diperlukan, beri tahu kami jika itu adalah sesuatu yang Anda butuhkan.
Untuk mengkompilasi BSL pada Windows, Anda harus terlebih dahulu menonaktifkan UEFI SecureBoot dan mengaktifkan mode penandatanganan tes. Perhatikan bahwa ini mungkin mengharuskan Anda untuk menginstal ulang Windows ( Anda telah diperingatkan ). Ini dapat dilakukan dari prompt perintah dengan hak istimewa admin:
bcdedit.exe /set testsigning ON
<reboot>
Selanjutnya, instal yang berikut:
Visual Studio diperlukan karena berisi pustaka spesifik Windows yang diperlukan selama kompilasi. Alih -alih menggunakan proyek dentang/llvm yang secara asli dikirimkan dengan Visual Studio, kami menggunakan biner klang/llvm standar yang disediakan oleh proyek LLVM yang memastikan kami mendapatkan semua alat termasuk format LLD, Clang Tidy dan Clang. Perhatikan juga bahwa Anda harus meletakkan ninja di suatu tempat di jalur Anda (kami biasanya jatuh ke folder bin CMake). Terakhir, pastikan Anda mengikuti semua instruksi saat memasang WDK . Instruksi ini sering berubah, dan setiap langkah harus diinstal dengan benar dan dalam urutan yang disediakan oleh instruksi. Melewati satu langkah, atau memasang paket dalam urutan yang salah akan menghasilkan instalasi WDK yang tidak berfungsi.
Untuk mengkompilasi BSL, kami akan menggunakan Bash. Ada banyak cara untuk memulai bash termasuk membuka prompt CMD dan mengetik "bash". Setelah menjalankan bash, pastikan Anda menambahkan yang berikut ke jalur Anda:
Misalnya, di .bashrc Anda, Anda dapat menambahkan yang berikut (tergantung di mana Visual Studio meletakkan file -file ini):
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 "Akhirnya, jalankan yang berikut dari Bash:
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
ninja info
ninjaUntuk mengkompilasi BSL pada Ubuntu (20.04 atau lebih tinggi) Anda harus terlebih dahulu menginstal dependensi berikut:
sudo apt-get install -y clang cmake lldUntuk mengkompilasi BSL, gunakan yang berikut:
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
make info
makeUntuk menyusun UEFI, cukup ikuti langkah -langkah untuk OS Anda di atas, tetapi tambahkan yang berikut ini ke CMake:
-DHYPERVISOR_BUILD_EFI= ONAnda kemudian dapat membangun hypervisor seperti biasa dan loader UEFI akan dikompilasi untuk Anda secara otomatis. Setelah kernel, ekstensi dan pemuat UEFI dikompilasi, Anda dapat menyalinnya ke partisi UEFI FS0 Anda. Perhatikan bahwa semua binari harus disalin ke partisi FS0 Anda, dan pada beberapa sistem, ini mungkin tongkat USB . Untuk membantu dalam proses penyalinan ini, sistem build mencakup perintah berikut:
make copy_to_efi_partitionSecara default ini menggunakan partisi EFI, tetapi dapat dipindahkan menggunakan:
-DHYPERVISOR_EFI_FS0=< path to FS0>Beberapa sistem mengharuskan Anda untuk menyediakan shell UEFI, dan karenanya Bareflank berisi salinan shell ini yang akan disalin bersama dengan kernel, ekstensi dan loader UEFI. Setelah Anda reboot ke shell UEFI, Anda dapat memulai hypervisor menggunakan
start_bareflank.efi
Perhatikan bahwa secara default, hypervisor tidak dapat mem -boot OS. Anda harus menggunakan contoh non-default yang menyediakan dukungan UEFI yang lebih lengkap, atau memberikan ekstensi Anda sendiri yang mampu berhasil mem-boot OS. Akhirnya, saat ini kami tidak menyediakan fungsi VMMCTL lainnya seperti Stop atau Dump.
Bareflank Hypervisor SDK terdiri dari komponen utama berikut:
"Ekstensi" adalah tempat Anda meletakkan kode Anda. Ini adalah aplikasi Ring 3 yang berjalan di atas microkernel kami di apa yang disebut "ring -1" atau vmx root. "Kernel" adalah microkernel yang disebutkan di atas, dan bertanggung jawab untuk melaksanakan semua aplikasi hypervisor yang benar -benar menerapkan hypervisor. Dengan kata lain, semua logika hypervisor diimplementasikan dalam ekstensi yang Anda berikan, dan microkernel kami hanya ada untuk menjalankan ekstensi Anda di root VMX. "Loader" menempatkan microkernel dan ekstensi Anda di root VMX. Ini bertanggung jawab untuk memulai dan menghentikan hypervisor, dan membuang isi cincin debugnya. Aplikasi "VMMCTL" digunakan untuk mengontrol loader. Ini memberikan sarana sederhana untuk memberi tahu loader apa yang harus dilakukan.
Untuk memulai Bareflank, kompilasi "loader" dan jalankannya di kernel OS Anda. Untuk melakukan itu, jalankan yang berikut (ganti buat dengan ninja di windows):
make driver_build
make driver_load
Ini membangun "loader" dan menjalankannya di kernel OS. Jika Anda mengikuti instruksi Buld di atas menggunakan CMake, Anda seharusnya sudah menyusun microkernel, vmmctl dan ekstensi Anda (yang secara default adalah contoh default kami). Setelah komponen -komponen ini dikompilasi, Anda dapat menjalankan hypervisor menggunakan perintah berikut (ganti make dengan ninja di windows):
make start
Untuk mendapatkan informasi debug, gunakan yang berikut (ganti Make with Ninja di Windows):
make dump
Untuk menghentikan hypervisor gunakan yang berikut (ganti buat dengan ninja di windows):
make stop
Akhirnya, untuk membongkar "loader" dan membersihkan sistem build -nya, Anda dapat menjalankan yang berikut (ganti Make with Ninja di Windows):
make driver_unload
make driver_clean
Dan itu dia. Untuk informasi lebih lanjut tentang cara membangun dan menggunakan Bareflank, Anda dapat menjalankan inti berikut daftar perintah lengkap yang tersedia untuk Anda serta konfigurasi build lengkap (ganti Make with Ninja di Windows):
make info
Hypervisor Bareflank dilengkapi dengan serangkaian ekstensi contoh yang dapat Anda gunakan untuk membuat hypervisor khusus Anda sendiri. Untuk memulai, kami akan membuat direktori yang berfungsi, dan mengkloning beberapa repo untuk mempercepat proses pembangunan:
mkdir ~ /working
mkdir ~ /working/build
git clone https://github.com/bareflank/bsl ~ /working/bsl
git clone https://github.com/bareflank/hypervisor ~ /working/hypervisorSelanjutnya, kami akan menyalin contoh yang ada ke direktori kerja kami (pilih contoh yang memberikan titik awal terbaik untuk proyek Anda):
cp -R ~ /working/hypervisor/example/default ~ /working/extensionAkhirnya, kami akan mengonfigurasi proyek, memberi tahu sistem build bagaimana menemukan ekstensi khusus kami.
cd ~ /working/build
cmake
../hypervisor
-DHYPERVISOR_EXTENSIONS_DIR= $PWD /../extension
-DFETCHCONTENT_SOURCE_DIR_BSL= $PWD /../bsl HYPERVISOR_EXTENSIONS_DIR menentukan lokasi ekstensi Anda. Perhatikan bahwa jalur harus menjadi jalur absolut, itulah sebabnya kami menggunakan jalur absolut dari folder build sebagai titik awal dan kemudian menyusun lokasi folder ekstensi dari sana.
FETCHCONTENT_SOURCE_DIR_BSL adalah opsional. Ini memberi tahu sistem build di mana menemukan BSL. Karena kami sudah mengkloning BSL ke direktori kerja kami, kami dapat menggunakannya alih -alih meminta sistem build untuk secara otomatis mengambil BSL untuk kami. Ini bagus untuk build offline, atau build di mana Anda sering melakukan rerunning cmake dan tidak ingin menunggu BSL diunduh setiap kali.
Sisa instruksi penggunaan di atas dapat digunakan untuk memulai/menghentikan hypervisor khusus Anda. Untuk informasi lebih lanjut tentang apa yang diberikan Microkernel dengan ekstensi Anda, silakan lihat spesifikasi Microkernel Syscall di folder Docs. Kami juga memberikan contoh implementasi ABI ini sebagai satu set API C ++ yang dapat Anda gunakan jika Anda mau. Contoh ini set API dapat dilihat di file Syscall/include/mk_interface.hpp.
Untuk menggunakan contoh karat, Anda harus menginstal karat dan beralih ke saluran malam.
Hypervisor Bareflank menyediakan banyak sumber daya yang berguna untuk mempelajari cara menggunakan perpustakaan termasuk:
Jika Anda memiliki pertanyaan, bug, atau permintaan fitur, jangan ragu untuk menanyakan hal berikut:
Jika Anda ingin membantu:
Hypervisor Bareflank memanfaatkan alat -alat berikut untuk memastikan kualitas kode setinggi mungkin. Setiap permintaan tarik menjalani pengujian dan ulasan yang ketat berikut:
Pada Windows, output serial mungkin tidak berfungsi, dan pada beberapa sistem (misalnya Intel Nuc), perangkat serial Windows default dapat mencegah Bareflank memulai sama sekali. Jika ini masalahnya, nonaktifkan perangkat serial default menggunakan yang berikut:
reg add "HKEY_LOCAL_MACHINESystemCurrentControlSetServicesSerial" /f /v "start" /t REG_DWORD /d "4"
Lihat "Tips Penting" di atas untuk detail tambahan tentang cara menggunakan perangkat serial.
Hypervisor Bareflank dilisensikan di bawah lisensi MIT.
Jika Anda tertarik pada Bareflank, Anda mungkin juga tertarik dengan proyek -proyek berikut:
Lagi:
https://github.com/ainfosec/more
SimpleVisor:
https://github.com/ionescu007/simplevisor
Hyperplatform:
https://github.com/tandasat/hyperplatform