tandasat/barevisor

GitHub: tandasat/barevisor

一个面向学习者的极简 Hypervisor 项目,使用 Rust 稳定版实现,帮助理解 x86 平台硬件辅助虚拟化技术在 AMD 和 Intel 处理器上的工作原理。

Stars: 343 | Forks: 17

# Barevisor 一个面向学习者的、运行在 AMD 和 Intel 处理器上的极简 Hypervisor。 ## 功能特性 - ✅ 使用 Rust 稳定版🦀 - ✅ 覆盖 AMD 和 Intel 处理器 - ✅ 编译为 UEFI 和 Windows 驱动程序 - ✅ 通过一个快捷键在 Bochs 和 VMware 上运行 - ✅ 支持特定硬件型号 - ✅ 可在 🪟Windows、🍎macOS 和 🐧Ubuntu 上构建 - ✅ 包含详尽的注释 ## 动机 本项目的主要目标是探索使用 Rust 稳定版编写 Hypervisor 的可能性,并设计出能够抽象 AMD 与 Intel 之间、以及 UEFI 与 Windows 之间差异的方案。 作为次要目标,它旨在为学习 x86 平台上的硬件辅助虚拟化技术(hardware-assisted virtualization)如何工作提供额外的资源,并展示如何用于“hyperjack”UEFI 和 Windows。 ## 包结构 本项目包含两个工作区:`src/windows/` 和 `src/uefi/`,分别将 Hypervisor 构建为 Windows 内核驱动程序和 UEFI 驱动程序。这两个工作区都依赖于 `src/hvcore/`,即核心的、OS 无关的 Hypervisor 实现,如下图所示: ``` windows --\ +-- (links) --> hvcore uefi -----/ ``` 你只能在 Windows 上构建 `src/windows/`,而 `src/uefi/` 是跨平台的: | 开发环境 | `src/windows/` | `src/uefi/` | |-----------|----------------|-------------| | Windows | ✅ | ✅ | | Ubuntu | ❌ | ✅ | | macOS | ❌ | ✅ | 有关详细的构建和测试说明,请参阅 [windows/README.md](src/windows/README.md) 和 [uefi/README.md](src/uefi/README.md)。 ## 致谢 [memN0ps](https://github.com/memN0ps) 的 Rust Hypervisor 项目给了我极大的启发,并帮助我开始了这项工作。我鼓励你将这些项目作为额外的资源进行学习。Barevisor 项目中的部分代码深受其影响,甚至直接复制自他们的作品,尽管未在每一处一一注明。 ## 非目标 本项目针对上述目标进行了优化,因此缺少了一些大家可能认为必不可少的功能,例如: - 安全性 Barevisor 并不试图保护自身免受客户机(guest)或 DMA 的攻击。Windows 版本甚至依赖于受客户机控制的内存。 - 实用功能 Barevisor 提供的唯一功能是通过 CPUID 指令报告 Hypervisor 名称。它不提供诸如客户机检查(inspection)或加固等特性。 - 广泛的兼容性 Barevisor 的主要功能目标是在 VMware、Bochs 和特定硬件型号上 hyperjack 并启动 UEFI 和 Windows。只有在实现足够简单的情况下,它才会处理其他场景。 出于教学目的,我已经编写过很多次 Hypervisor。可以说,学习硬件辅助虚拟化技术最具挑战性的部分之一就是入门和理解基础。一旦你跨过了这个阶段,学习了构建模块并保持动力,根据需要着手填补上述缺失的功能就会变得更容易。 如果你想了解更多关于这些缺失功能的内容,或有进一步的学习参考资料需求,请向我提问。我还提供一门为期 [4 天的培训课程](https://tandasat.github.io/),深入讲解其中许多内容。 ## 支持的硬件型号 - Intel: [11TNHi5 Full with 9-pin to DE-9P](https://simplynuc.com/product/nuc11tnhi5-full/) - AMD: [LLM1v6SQ](https://simplynuc.com/product/llm1v6sq/)
标签:0day挖掘, AMD-V, EDK2, Hyperjack, Hypervisor, Intel VT-x, Rootkit, Rust, Type-1型虚拟机, UEFI, VMM, WDM驱动, Windows驱动开发, x86架构, Zeek, 内核安全, 内联钩子, 可视化界面, 固件安全, 底层开发, 操作系统内核, 硬件辅助虚拟化, 系统编程, 网络流量审计, 虚拟化, 虚拟机逃逸, 计算机教育, 通知系统