
Bareflank機管管理員是由Assured Information Security,Inc。 (AIS)領導的Rust和C ++的開源操縱處軟件開發工具包(SDK),它提供了快速原型並創建自己對64位Intel和AMD的64位版本(ARMV8 CPUS,RISC-cpus,Risc-v and Powerpc也計劃)所需的工具。 Bareflank SDK旨在用於教學/研究目的,因為它僅提供足夠的虛擬化支持來啟動/停止管理程序。 Bareflank還可以用作創建自己的,功能齊全的管理程序的基礎,因為它使用MIT許可證,包括100%的單位測試覆蓋範圍和對AutoSar的合規性。如果您正在尋找完整的虛擬機管理程序(而不是SDK),請參閱Microv。如果您正在尋找最小的SDK以進行教育或進行研究,那麼這就是您的項目。如果您只是在尋找參考管理程序,請參閱SimpleVisor。
Bareflank使用一種分層的模塊化方法,可讓您在創建自己的自定義管理器時選擇項目中需要多少複雜性:
從GitHub獲取最新版本的Barefllank管理程序SDK:
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
make享受:
make driver_quick
make start
make dump
make stop
查看我們可以破解它嗎? ®挑戰並測試您的技能!提交您的分數以向我們展示您所擁有的。我們在全國設有辦事處,並提供有競爭力的工資和未償還的福利。加入一個團隊,不僅致力於網絡空間的未來,而且還致力於我們員工的成功。

查看有關如何編譯和使用Ubuntu上的Bareflank管理器的最新演示:20.04:
在下面的CPPCON上查看我們的YouTube頻道以及以下視頻:
在嘗試使用Bareflank之前,請查看以下技巧,因為它們可以對您的最初經歷產生巨大影響:
bcdedit /set hypervisorlaunchtype off HyperV,因為即使您不再使用WSL2,HYPERV仍將繼續運行。當前,Bareflank管理程序僅支持Clang/LLVM 10+編譯器。但是,這可以確保可以在窗戶上本地編譯該管理程序,包括對交叉編譯的支持。如果需要,可以添加對其他C ++ 20編譯器的支持,請告訴我們是否需要。
要在Windows上編譯BSL,您必須首先禁用UEFI Secureboot並啟用測試簽名模式。請注意,這可能需要您重新安裝窗口(已被警告)。這可以從具有管理特權的命令提示符中完成:
bcdedit.exe /set testsigning ON
<reboot>
接下來,安裝以下內容:
需要Visual Studio,因為它包含彙編過程中需要的特定於Windows的庫。我們使用LLVM Project提供的標準clang/LLVM二進製文件,而不是使用與Visual Studio一起運送的Clang/LLVM項目,該項目可確保我們獲得包括LLD,Clang Tidy和Clang格式在內的所有工具。另請注意,您必須將忍者放在路徑中的某個地方(我們通常放入CMAKE的bin文件夾中)。最後,請確保您在安裝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 "最後,從Bash中運行以下內容:
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
ninja info
ninja要在Ubuntu上編譯BSL(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然後,您可以正常地構建操縱虛擬機管理程序,並且將為您自動編譯UEFI加載程序。一旦收集了內核,擴展名和UEFI加載器,就可以將其複製到UEFI FS0分區。請注意,所有二進製文件必須複製到您的FS0分區,在某些系統上,這可能是USB棒。為了輔助此復製過程,構建系統包括以下命令:
make copy_to_efi_partition默認情況下,此使用EFI分區,但可以使用:
-DHYPERVISOR_EFI_FS0=< path to FS0>某些系統要求您提供UEFI外殼,因此Bareflank包含該外殼的副本,該副本將與內核,擴展程序和UEFI裝載機一起復制。重新啟動到UEFI外殼後,您可以使用
start_bareflank.efi
請注意,默認情況下,管理程序無法引導操作系統。您必須使用提供更完整的UEFI支持的非默認示例,或者提供能夠成功啟動操作系統的擴展程序。最後,我們目前不提供任何其他VMMCTL功能,例如停止或轉儲。
Bareflank管理程序SDK由以下主要組成部分組成:
“擴展”是您放置代碼的地方。這是一個環3應用程序,它在我們的微核頂部運行,以所謂的“ ring -1”或vmx root。 “內核”是上述的微核,它負責執行實際實施該虛擬機管理程序的所有虛擬機管理程序。換句話說,所有的管理程序邏輯都是在您提供的擴展中實現的,而我們的Microkernel就在那里以在VMX root中執行您的擴展名。 “加載程序”將我們的微核和您的擴展放在VMX根中。它負責啟動和停止管理程序,並傾倒其調試環的內容。 “ VMMCTL”應用程序用於控制加載程序。它提供了一種簡單的手段來告訴加載程序該怎麼做。
要啟動Bareflank,請編譯“裝載機”並將其運行在操作系統的內核中。為此,請運行以下(用Windows上的忍者替換):
make driver_build
make driver_load
這會構建“裝載機”並將其運行在操作系統的內核中。如果您使用CMAKE遵循上面的大部分指令,則應該已經編譯了微核,VMMCTL和擴展名(默認情況下是我們的默認示例)。一旦編譯了這些組件,您就可以使用以下命令運行操縱虛擬機(在Windows上替換為忍者):
make start
要獲取調試信息,請使用以下內容(用Windows上的Ninja替換Make):
make dump
要停止操縱虛擬機管理程序(用Windows上的忍者替換製造):
make stop
最後,要卸載“加載程序”並清理其構建系統,您可以運行以下內容(用Windows上的Ninja替換Make):
make driver_unload
make driver_clean
就是這樣。有關如何構建和使用Bareflank的更多信息,您可以運行以下核心列表的完整命令列表以及完整的構建配置(Windows上的忍者替換為忍者):
make info
Bareflank管理程序配備了一系列示例擴展,您可以使用您自己的自定義管理程序。首先,我們將創建一個工作目錄,並克隆一些存儲庫以加快構建過程:
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。這對於離線構建非常有用,或者在您經常重新構建的地方構建,並且不想等待BSL每次下載。
上面的其餘用法說明可用於啟動/停止自定義管理程序。有關Microkernel為您提供擴展名的ABIS的更多信息,請參閱DOCS文件夾中的Microkernel Syscall規範。我們還提供了該ABI的示例實現,作為一組C ++ API,您可以使用。可以在Syscall/include/mk_interface.hpp文件中看到此API的示例集。
要使用Rust示例,您將必須安裝Rust並切換到夜間通道。
Bareflank管理程序提供了大量有用的資源來學習如何使用庫,包括:
如果您有任何疑問,錯誤或功能請求,請隨時詢問以下任何:
如果您想提供幫助:
Bareflank管理程序利用以下工具來確保最高的代碼質量。每個拉的請求都會進行以下嚴格的測試和審查:
在Windows上,串行輸出可能不起作用,並且在某些系統(例如Intel NUC)上,默認的Windows串行設備可能會阻止Bareflank完全啟動。如果是這種情況,請使用以下內容禁用默認串行設備:
reg add "HKEY_LOCAL_MACHINESystemCurrentControlSetServicesSerial" /f /v "start" /t REG_DWORD /d "4"
有關如何使用串行設備的其他詳細信息,請參見上面的“重要提示”。
Bareflank管理程序由MIT許可證獲得許可。
如果您對Bareflank感興趣,您可能還會對以下項目感興趣:
更多的:
https://github.com/ainfosec/more
SimpleVisor:
https://github.com/ionescu007/simplevisor
增生:
https://github.com/tandasat/hyperplatform