前言
想要入门 VT-X 传统的方式都是阅读 Intel SDM(Intel 64 and IA-32 Architectures Software Developer’s Manual) , 这是 Intel 官方 CPU 架构手册,VT-x 的全部细节都在这里但这几千页的 pdf 着实让人头疼, 更是劝退了很多想要入门的人(包括笔者), 于是根据开源框架进行学习是个新的思路, 可以让你快速入门并见到效果, 有了正反馈在进行深入学习效率会大大提速, 下面推荐几款 github 上优秀的 vt-x 开源框架共大家参考:
1. SimpleVisor
- git地址: 02dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6A6L8$3&6W2M7$3y4#2x3o6l9%4i4K6u0r3f1$3W2E0M7r3I4W2g2X3W2K6L8%4t1`.
这个框架是 Windows 下的极简 Type-1 Hypervisor, 特点是代码量小(约几千行), 主要由C和汇编组成(开发过内核驱动的人来说非常友好), 框架内部有清晰演示 VMXON / VMCS 初始化流程, 可以学习到 VMXON 区初始化 \ VMCS 字段设置 \ VM-Exit 处理, 适合想从零理解 VT-x 工作流程的人 (后续笔者也会从这个框架开始入门学习)
SimpleVisor 是一款简单易用、可移植的 Intel x64/EM64T VT-x 专用虚拟机管理程序,其目标有两个:尽可能减少汇编代码(仅 10 行),并尽可能减少与 VMX 相关的代码,以支持动态虚拟机劫持和反劫持(即从主机内部虚拟化主机状态),同时还支持 EPT 和 VPID 等高级功能。它目前可在 Windows 和 UEFI 环境下运行。
2. HyperBone
- git地址: c11K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6p5j5i4u0@1K9q4c8G2L8W2)9J5c8V1S2&6M7r3g2J5b7X3!0F1k6b7`.`.
HyperBone同样为轻量级 VT-x hypervisor 项目,其设计理念依旧是简洁,通过各种 hook实现对系统调用、中断和内核函数行为的拦截与处理, 实现功能:
- 系统调用钩子(Syscall Hooks via MSR_LSTAR):拦截系统调用执行路径。
- 内核内联钩子(Kernel Inline Hooks):允许修改或观察内核关键函数执行。
- 内核页替换(Kernel Page Substitution):在运行时替换内核页。
- EPT/页表技术:使用扩展页表来分割或重映射页面(EPT TLB Splitting)。
- MSR 和 IDT 的钩子:可挂钩多个模型特定寄存器和中断描述符表,扩展底层控制能力。
3.Hypervisor-From-Scratch
- git地址: 710K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6e0K9h3&6S2d9$3q4J5N6X3q4F1k6r3W2Q4x3V1k6t1P5i4m8W2M7Y4k6A6M7$3!0J5i4K6u0V1c8Y4u0G2L8g2)9J5k6q4y4U0M7X3q4@1j5$3R3`.
Hypervisor-From-Scratch 是一个开源的教学型虚拟化项目,目标是从零开始实现一个基于 Intel VT-x 的 Type-1 Hypervisor(裸机虚拟机监控器)。它是一个手把手教你写 Hypervisor 的教程 + 示例代码项目,主要运行在 Windows 内核模式下,基于 Intel VT-x 实现最基础的虚拟化功能。
如果您想使用虚拟机管理程序进行分析和逆向工程,不妨了解一下HyperDbg Debugger。它是一款基于虚拟机管理程序的调试器,专为分析、模糊测试和逆向工程应用程序而设计。OpenSecurityTraining2网站(推荐)和YouTube上提供了关于基于虚拟机管理程序的逆向工程的免费且全面的教程,其中演示了大量如何利用虚拟机管理程序进行逆向工程的实用示例。
注意:《从零开始构建虚拟机管理程序》教程已于2022 年 8 月全面修订。所有部分的代码均已更新,不必要的细节已被删除,教程中也添加了新的解释和材料。
4. HyperPlatform
- git地址: 2efK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6@1j5h3&6V1j5i4y4S2N6q4)9J5c8V1S2&6M7r3g2J5f1r3I4S2N6r3k6G2M7X3@1`.
这个框架为 Windows 内核驱动型 Hypervisor , 特点是结构清晰并且有大量注释, 重点会涉及EPT (Extended Page Table) \ MSR Hook \ CPUID Hook , 适合想研究 虚拟化监控 + 安全用途 的人
介绍
HyperPlatform 是一款基于 Intel VT-x 的虚拟机管理程序(又称虚拟机监视器),旨在为 Windows 系统上的研究提供一个轻量级平台。HyperPlatform 能够监视各种事件,包括但不限于对虚拟/物理内存和系统寄存器的访问、中断的发生以及特定指令的执行。
研究人员可以自由选择启用和/或禁用任何事件监控功能,并在 HyperPlatform 之上实现自己的逻辑。一些潜在的应用场景包括:
分析内核模式 rootkit
实施基于虚拟机的入侵防御系统(VIPS)
对 Windows 内核进行逆向工程
5.hvpp
- git地址: 42eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3N6A6N6r3S2#2j5W2)9J5k6h3y4G2L8g2)9J5c8Y4N6T1k6h3&6F1P5g2)9J5c8X3S2$3M7s2m8Z5N6Y4m8H3 是一个基于 Intel VT-x 的开源轻量级 Hypervisor(虚拟机监控器)项目, 主要运行在 Windows 平台内核态, 定位为学习和研究用途, 与很多传统 VT-x 示例(如 SimpleVisor)不同,hvpp 使用现代 C++ 编写
动机
尽管 目前已经有一些 旨在简化操作的开源 研究 型虚拟机管理程序 ,但我认为这个领域仍有待进一步探索,需要更多开源项目。这尤其能帮助那些刚刚开始探索虚拟化技术并正在寻找小型/参考项目的人。如果你是其中之一,我敢肯定你现在一定很失望,因为你能找到的只有寥寥几个(很棒的!)项目,以及一大堆英特尔手册。
选择 C++ 作为本项目编程语言的原因有二:
虚拟化架构可以用面向对象编程 (OOP) 的概念更好地表达(例如 VCPU、EPT 等对象)。
除了bareflank之外,我没有找到其他使用现代 C++17 特性的项目。虽然 bareflank 可以在 Windows、Linux 和 UEFI 下编译,但在 Windows 上,它使用 Cygwin 来交叉编译虚拟机管理程序。由于虚拟机管理程序是一个独立的 ELF 二进制文件,Windows 内核缺少虚拟机管理程序的调试符号,这使得使用 WinDbg 进行调试变得困难。
尽管本项目主要面向 Windows 平台开发,但我决定不使用传统的Windows 驱动程序命名约定(DrvCamelCase即 `<driver>`),而是采用传统的 C++snake_case代码。原因是虚拟机管理程序非常“独立”,不依赖于太多操作系统功能。因此,我决定将其视为一个普通的 C++ 项目。
6.Xen
- git地址: bb2K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6^5k6h3&6Q4x3X3c8H3M7X3!0B7k6h3y4@1i4K6u0r3P5r3g2F1
这是一个企业级 Type-1 Hypervisor框架, 支持 VT-x , 其特点是代码庞大(百万行级), 不适合入门,但适合理解工业架构, 在有基础的条件下有企业级需求以及想要深入学习细节的人接触
__ __ _ _ _
\ \/ /___ _ __ _ _ _ __ ___| |_ __ _| |__ | | ___
\ // _ \ '_ \ _____| | | | '_ \/ __| __/ _` | '_ \| |/ _ \
/ \ __/ | | |_____| |_| | | | \__ \ || (_| | |_) | | __/
/_/\_\___|_| |_| \__,_|_| |_|___/\__\__,_|_.__/|_|\___|
############################################################
6acK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2^5k6h3&6Q4x3X3g2G2M7X3N6Q4x3V1j5`.
Xen是什么?
============
Xen 是一款虚拟机监视器 (VMM),最初由……开发。
剑桥大学计算机系统研究组
实验室是英国工程与物理科学研究委员会 (EPSRC) 资助的 XenoServers 项目的一部分。Xen
是根据 GNU 协议发布的可自由分发的开源软件。
GPL。自最初公开发布以来,Xen 的用户群已大幅增长。由 xen.org ( bf6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2^5k6h3&6Q4x3X3g2G2M7X3M7`. )
牵头的开发社区。
此文件包含一些在系统上安装 Xen 的快速入门说明。
您的系统。更多信息请访问aebK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2^5k6h3&6Q4x3X3g2G2M7X3N6Q4x3V1k6Q4c8e0g2Q4z5e0u0Q4z5p5x3`.
75fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4K9h3E0A6i4K6u0W2P5r3g2F1i4K6u0W2L8%4u0Y4i4K6u0r3
总结
以上内容为笔者为后续学习 VT-X 准备搜集的内容, 供大家参考学习讨论, 如有错漏 请留言
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 4天前
被mb_binusgki编辑
,原因: 补充内容