
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