
O Bareflank Hypervisor é um kit de ferramentas de desenvolvimento de software de código aberto (SDK) para ferrugem e C ++, liderado pela garantia da Information Security, Inc. (AIS), que fornece as ferramentas necessárias para protótipos rapidamente e criar seu próprio hipervisor em versões de 64 bits de intelv8 (cpUs de ARMV8. O Bareflank SDK é destinado a fins instrucionais/de pesquisa, pois fornece apenas suporte de virtualização suficiente para iniciar/interromper um hipervisor. O Bareflank também pode ser usado como base para criar o seu próprio hipervisor totalmente funcional, pois usa a licença do MIT, inclui 100% de cobertura de teste de unidade e conformidade do AutoSAR. Se você está procurando um hipervisor completo (e não um SDK), consulte Microv. Se você está procurando um SDK mínimo para a educação ou para realizar pesquisas, este é o projeto para você. Se você está simplesmente procurando um hipervisor de referência, consulte Simplevisor.
O Bareflank usa uma abordagem modular em camadas, que permite escolher quanta complexidade você precisa em seu projeto ao criar seu próprio hipervisor personalizado:
Obtenha a versão mais recente do Bareflank Hypervisor SDK do GitHub:
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
makeAproveitar:
make driver_quick
make start
make dump
make stop
Confira nosso desafio? ® Desafio e teste suas habilidades! Envie sua pontuação para nos mostrar o que você tem. Temos escritórios em todo o país e oferecemos salários competitivos e benefícios pendentes. Junte -se a uma equipe que não está apenas comprometida com o futuro do ciberespaço, mas também com o sucesso de nossos funcionários.

Confira a demonstração mais recente sobre como compilar e usar o Hypervisor Bareflank no Ubuntu 20.04:
Confira nosso canal do YouTube para obter mais excelentes conteúdos, bem como os vídeos a seguir no CPPCON abaixo:
Antes de tentar usar o Bareflank, revise as dicas a seguir, pois elas podem fazer uma enorme diferença em sua experiência inicial:
bcdedit /set hypervisorlaunchtype off pois o HyperV continuará a funcionar mesmo que você não esteja mais usando o WSL2.Atualmente, o Bareflank Hypervisor suporta apenas o compilador CLANG/LLVM 10+. Isso, no entanto, garante que o hipervisor possa ser compilado nativamente no Windows, incluindo suporte para compilagem cruzada. O suporte a outros compiladores C ++ 20 pode ser adicionado, se necessário, informe -nos se isso é algo que você precisa.
Para compilar o BSL no Windows, você deve primeiro desativar o UEFI Secureboot e ativar o modo de assinatura de teste. Observe que isso pode exigir que você reinstale o Windows ( você foi avisado ). Isso pode ser feito a partir de um prompt de comando com privilégios de administrador:
bcdedit.exe /set testsigning ON
<reboot>
Em seguida, instale o seguinte:
O Visual Studio é necessário, pois contém bibliotecas específicas do Windows necessárias durante a compilação. Em vez de usar o projeto Clang/LLVM que envia nativamente com o Visual Studio, usamos os binários CLANG/LLVM padrão fornecidos pelo projeto LLVM, que garantemos que obtenhamos todas as ferramentas, incluindo LLD, Clang Tidy e Clang Format. Observe também que você deve colocar o Ninja em algum lugar no seu caminho (geralmente caímos na pasta Bin da CMake). Por fim, siga todas as instruções ao instalar o WDK . Essas instruções mudam com frequência e cada etapa deve ser instalada corretamente e na ordem fornecida pelas instruções. Ignorar uma etapa ou instalar um pacote na ordem errada resultará em uma instalação WDK que não funciona.
Para compilar o BSL, vamos usar o Bash. Existem muitas maneiras de começar o Bash, incluindo a abertura de um prompt de CMD e a digitação "Bash". Depois de executar o Bash, adicione o seguinte ao seu caminho:
Por exemplo, no seu .bashrc, você pode adicionar o seguinte (dependendo de onde o Visual Studio coloca esses arquivos):
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 "Finalmente, execute o seguinte da Bash:
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
ninja info
ninjaPara compilar o BSL no Ubuntu (20,04 ou superior), você deve primeiro instalar as seguintes dependências:
sudo apt-get install -y clang cmake lldPara compilar o BSL, use o seguinte:
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
make info
makePara compilar a UEFI, basta seguir as etapas para o seu sistema operacional acima, mas adicione o seguinte ao cmake:
-DHYPERVISOR_BUILD_EFI= ONEm seguida, você pode criar o hipervisor normal e o carregador UEFI será compilado para você automaticamente. Depois que o kernel, as extensões e o carregador UEFI são compilados, você pode copiá -los para sua partição UEFI FS0. Observe que todos os binários devem ser copiados para sua partição FS0 e, em alguns sistemas, isso pode ser um bastão USB . Para ajudar neste processo de cópia, o sistema de construção inclui o seguinte comando:
make copy_to_efi_partitionPor padrão, isso usa a partição EFI, mas pode ser realocada usando:
-DHYPERVISOR_EFI_FS0=< path to FS0>Alguns sistemas exigem que você forneça o shell UEFI e, portanto, o Bareflank contém uma cópia deste shell que será copiada junto com o kernel, extensões e carregador UEFI. Depois de reiniciar a concha da UEFI, você pode iniciar o hipervisor usando
start_bareflank.efi
Observe que, por padrão, o hipervisor não pode inicializar um sistema operacional. Você deve usar um exemplo não padrão que forneça suporte mais completo da UEFI ou forneça sua própria extensão capaz de inicializar com sucesso um sistema operacional. Finalmente, atualmente não fornecemos nenhuma das outras funções VMMCTL, como Stop ou Dump.
O Bareflank Hypervisor SDK consiste nos seguintes componentes principais:
A "extensão" é onde você coloca seu código. É um aplicativo Ring 3 que é executado em cima do nosso microkernel na chamada raiz "anel -1" ou vmx. O "kernel" é o microkernel acima mencionado e é responsável por executar todos os aplicativos de hipervisor que realmente implementam o hipervisor. Em outras palavras, toda a lógica do hipervisor é implementada em uma extensão que você fornece, e nosso microkernel está lá apenas para executar sua extensão na raiz VMX. O "carregador" coloca nosso microkernel e sua extensão na raiz VMX. É responsável por iniciar e interromper o hipervisor e despejar o conteúdo de seu anel de depuração. O aplicativo "vmmctl" é usado para controlar o carregador. Ele fornece um meio simples para dizer ao carregador o que fazer.
Para iniciar o Bareflank, compile o "carregador" e execute -o no kernel do seu sistema operacional. Para fazer isso, execute o seguinte (substitua o Ninja no Windows):
make driver_build
make driver_load
Isso constrói o "carregador" e o executa no kernel do sistema operacional. Se você seguiu as instruções BULD acima usando o CMake, já deve ter compilado o microokernel, o VMMCTL e sua extensão (que por padrão é o nosso exemplo padrão). Depois que esses componentes forem compilados, você poderá executar o hipervisor usando o seguinte comando (substitua a marca ninja no Windows):
make start
Para obter informações de depuração, use o seguinte (substitua o Ninja no Windows):
make dump
Para interromper o hipervisor, use o seguinte (substitua a marca Ninja no Windows):
make stop
Por fim, para descarregar o "carregador" e limpar seu sistema de compilação, você pode executar o seguinte (substitua a marca Ninja no Windows):
make driver_unload
make driver_clean
E é isso. Para obter mais informações sobre como construir e usar o Bareflank, você pode executar o seguinte núcleo uma lista completa de comandos disponíveis, bem como a configuração completa de compilação (substitua a marca Ninja no Windows):
make info
O Bareflank Hypervisor vem completo com uma série de extensões de exemplo que você pode usar para criar seu próprio hipervisor personalizado. Para começar, criaremos um diretório de trabalho e clonaremos alguns repositórios para acelerar o processo de construção:
mkdir ~ /working
mkdir ~ /working/build
git clone https://github.com/bareflank/bsl ~ /working/bsl
git clone https://github.com/bareflank/hypervisor ~ /working/hypervisorEm seguida, copiaremos um exemplo existente em nosso diretório de trabalho (escolha o exemplo que fornece o melhor ponto de partida para o seu projeto):
cp -R ~ /working/hypervisor/example/default ~ /working/extensionPor fim, configuraremos o projeto, informando ao sistema Build como encontrar nossa extensão personalizada.
cd ~ /working/build
cmake
../hypervisor
-DHYPERVISOR_EXTENSIONS_DIR= $PWD /../extension
-DFETCHCONTENT_SOURCE_DIR_BSL= $PWD /../bsl HYPERVISOR_EXTENSIONS_DIR define a localização da sua extensão. Observe que o caminho deve ser um caminho absoluto, e é por isso que usamos o caminho absoluto da pasta de construção como ponto de partida e, em seguida, elaboramos a localização da pasta de extensão a partir daí.
FETCHCONTENT_SOURCE_DIR_BSL é opcional. Isso informa ao sistema de construção onde encontrar o BSL. Como já clonamos o BSL em nosso diretório de trabalho, podemos usá -lo em vez de pedir ao sistema de compilação que busque automaticamente o BSL para nós. Isso é ótimo para compilações offline ou construções onde você está executando muito o CMake e não quer esperar o download do BSL a cada vez.
O restante das instruções de uso acima pode ser usado para iniciar/interromper seu hipervisor personalizado. Para obter mais informações sobre o que o ABIS the MicroKernel fornece à sua extensão, consulte a especificação Syscall MicroKernel na pasta Docs. Também fornecemos um exemplo de implementação deste ABI como um conjunto de APIs C ++ que você pode usar, se quiser. Este conjunto de APIs de exemplo pode ser visto no arquivo syscall/incluir/mk_interface.hpp.
Para usar o exemplo da ferrugem, você precisará instalar a ferrugem e mudar para o canal noturno.
O Bareflank Hypervisor fornece uma tonelada de recursos úteis para aprender a usar a biblioteca, incluindo:
Se você tiver alguma dúvida, bugs ou solicitações de recursos, sinta -se à vontade para perguntar em qualquer um dos seguintes:
Se você gostaria de ajudar:
O Hypervisor Bareflank aproveita as seguintes ferramentas para garantir a maior qualidade de código possível. Cada solicitação de tração sofre os seguintes testes e revisão rigorosos:
No Windows, a saída serial pode não funcionar e, em alguns sistemas (por exemplo, Intel NUC), o dispositivo serial padrão do Windows pode impedir que o Bareflank seja iniciado. Se for esse o caso, desative o dispositivo serial padrão usando o seguinte:
reg add "HKEY_LOCAL_MACHINESystemCurrentControlSetServicesSerial" /f /v "start" /t REG_DWORD /d "4"
Consulte "Dicas importantes" acima para obter detalhes adicionais sobre como usar dispositivos seriais.
O Hypervisor Bareflank é licenciado sob a licença do MIT.
Se você estiver interessado no Bareflank, também pode estar interessado nos seguintes projetos:
Mais:
https://github.com/ainfosec/more
Simplevisor:
https://github.com/ionescu007/simplevisor
Hyperplatform:
https://github.com/tandasat/hyperplatform