
Гипервизор Bareflank-это инструментарий программного обеспечения для разработки программного обеспечения с открытым исходным кодом (SDK) для ржавчины и C ++, возглавляемой гарантированной информационной безопасностью, Inc. (AIS), который предоставляет инструменты, необходимые для быстрого прототипа и создания собственного гипервизора на 64-битных версиях Intel и AMD (CPU ARMV8, RISC-V и PowerPC также спланировали). Bareflank SDK предназначен для учебных/исследовательских целей, поскольку он обеспечивает только достаточную поддержку виртуализации для запуска/остановки гипервизора. Bareflank также может быть использован в качестве основы для создания вашего собственного, полностью функционального гипервизора, поскольку он использует лицензию MIT, включает в себя 100% модульный тестовый охват и соответствие для AutoSar. Если вы ищете полный гипервизор (а не SDK), см. Microv. Если вы ищете минимальный SDK для образования или для проведения исследований, это проект для вас. Если вы просто ищете эталонный гипервизор, см. Simplevisor.
Bareflank использует многоуровневый модульный подход, который позволяет вам выбрать, сколько сложности вам нужна в вашем проекте при создании собственного гипервизора:
Получите последнюю версию гипервизора Bareflank 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
Проверьте наши, вы можете взломать это? ® Задайте себе вызов и протестируйте свои навыки! Отправьте свой счет, чтобы показать нам, что у вас есть. У нас есть офисы по всей стране, и мы предлагаем конкурентоспособную оплату и непогашенные льготы. Присоединяйтесь к команде, которая не только привержена будущему киберпространства, но и к успеху нашего сотрудника.

Ознакомьтесь с последней демонстрацией того, как компилировать и использовать гипервизор Bareflank на Ubuntu 20.04:
Проверьте наш канал на YouTube, чтобы получить более отличный контент, а также следующие видео на CPPCON ниже:
Прежде чем попытаться использовать Bareflank, просмотрите следующие советы, поскольку они могут иметь огромное значение в вашем первоначальном опыте:
bcdedit /set hypervisorlaunchtype off так как HyperV будет продолжать работать, даже если вы больше не используете WSL2.В настоящее время гипервизор Bareflank только поддерживает компилятор Clang/LLVM 10+. Это, однако, гарантирует, что гипервизор может быть изначально скомпилирован в окнах, включая поддержку перекрестной компиляции. Поддержка других компиляторов C ++ 20 может быть добавлена при необходимости, просто дайте нам знать, если вам это нужно.
Чтобы скомпилировать BSL в Windows, сначала необходимо отключить UEFI SecureBoot и включить режим теста. Обратите внимание, что это может потребовать, чтобы вы переустановили Windows ( вы были предупреждены ). Это можно сделать из командной строки с привилегиями администратора:
bcdedit.exe /set testsigning ON
<reboot>
Далее установите следующее:
Visual Studio необходима, поскольку она содержит конкретные библиотеки Windows, которые необходимы во время компиляции. Вместо того, чтобы использовать проект Clang/LLVM, который изначально поставляется с Visual Studio, мы используем стандартные двоичные файлы Clang/LLVM, предоставленные проектом LLVM, который гарантирует, что мы получаем все инструменты, включая LLD, Clang Tidy и Clang Format. Также обратите внимание, что вы должны поместить ниндзя где -то на свой путь (мы обычно падаем в папку Cmake's 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Для составления 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Затем вы можете создать гипервизор как обычно, и загрузчик 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 Hypervisor SDK состоит из следующих основных компонентов:
«Расширение» - это то место, где вы ставите свой код. Это приложение Ring 3, которое работает поверх нашего Microkernel в так называемом «кольцо -1» или vmx root. «Ядро» - это вышеупомянутый микрокернел, и он отвечает за выполнение всех приложений гипервизора, которые фактически реализуют гипервизора. Другими словами, вся логика гипервизора реализована в расширении, которое вы предоставляете, и наш Microkernel просто там, чтобы выполнить ваше расширение в корне VMX. «Погрузчик» помещает наш микрокернел и ваше расширение в корне VMX. Он отвечает за запуск и остановку гипервизора и сброс содержимое его отладчика. Приложение «VMMCTL» используется для управления загрузчиком. Это обеспечивает простые средства для того, чтобы рассказать загрузчику, что делать.
Чтобы начать Bareflank, составьте «погрузчик» и запустите его в ядре вашей ОС. Для этого запустите следующее (замените Make с ниндзя в Windows):
make driver_build
make driver_load
Это строит «погрузчик» и запускает его в ядре ОС. Если вы следовали инструкциям Buld, выше, используя CMAKE, вы должны были уже собрать MicroKernel, VMMCTL и ваше расширение (что по умолчанию является нашим примером по умолчанию). Как только эти компоненты будут скомпилированы, вы можете запустить гипервизор, используя следующую команду (замените Make на Ninja в Windows):
make start
Чтобы получить информацию отладки, используйте следующее (замените Make с ниндзя в Windows):
make dump
Чтобы остановить гипервизор использовать следующее (замените Make с ниндзя в Windows):
make stop
Наконец, чтобы разгрузить «погрузчик» и очистить его систему сборки, вы можете запустить следующее (замените Make на Ninja в Windows):
make driver_unload
make driver_clean
И это все. Для получения дополнительной информации о том, как построить и использовать Bareflank, вы можете запустить следующее ядро полный список доступных вам команд, а также полную конфигурацию сборки (замените Make с ниндзя в 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 для нас. Это отлично подходит для автономных сборок или строительства, где вы многое переживаете Cmake и не хотите ждать, пока BSL скачивает каждый раз.
Остальные инструкции по использованию выше можно использовать для запуска/остановки пользовательского гипервизора. Для получения дополнительной информации о том, с каким ABIS Microkernel предоставляет ваше расширение, см. Спецификацию Syscall Microkernel в папке DOCS. Мы также приводим пример реализации этого ABI как набора API C ++, который вы можете использовать, если хотите. Этот пример набора API можно увидеть в файле syscall/include/mk_interface.hpp.
Чтобы использовать пример 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