首页
社区
课程
招聘
[分享]VT-X开源学习框架
发表于: 2026-2-26 11:49 1850

[分享]VT-X开源学习框架

2026-2-26 11:49
1850

前言

想要入门 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地址: 3e6K9s2c8@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地址: 94cK9s2c8@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地址: 4cfK9s2c8@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上提供了关于基于虚拟机管理程序的逆向工程的免费且全面的教程,其中演示了大量如何利用虚拟机管理程序进行逆向工程的实用示例。

注意:《从零开始构建虚拟机管理程序》教程已于20228 月全面修订。所有部分的代码均已更新,不必要的细节已被删除,教程中也添加了新的解释和材料。

4. HyperPlatform

  • git地址: 60fK9s2c8@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地址: 475K9s2c8@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地址: 64fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6^5k6h3&6Q4x3X3c8H3M7X3!0B7k6h3y4@1i4K6u0r3P5r3g2F1

这是一个企业级 Type-1 Hypervisor框架, 支持 VT-x , 其特点是代码庞大(百万行级), 不适合入门,但适合理解工业架构, 在有基础的条件下有企业级需求以及想要深入学习细节的人接触

############################################################
__ __ _ _ _
\ \/ /___ _ __ _ _ _ __ ___| |_ __ _| |__ | | ___
 \ // _ \ '_ \ _____| | | | '_ \/ __| __/ _` | '_ \| |/ _ \
 / \ __/ | | |_____| |_| | | | \__ \ || (_| | |_) | | __/
/_/\_\___|_| |_| \__,_|_| |_|___/\__\__,_|_.__/|_|\___|

############################################################

d3bK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2^5k6h3&6Q4x3X3g2G2M7X3N6Q4x3V1j5`.

Xen是什么?
============

Xen 是一款虚拟机监视器 (VMM),最初由……开发。
剑桥大学计算机系统研究组
实验室是英国工程与物理科学研究委员会 (EPSRC) 资助的 XenoServers 项目的一部分。Xen
是根据 GNU 协议发布的可自由分发的开源软件。
GPL。自最初公开发布以来,Xen 的用户群已大幅增长。由 xen.org ( 198K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2^5k6h3&6Q4x3X3g2G2M7X3M7`. )
牵头的开发社区。

此文件包含一些在系统上安装 Xen 的快速入门说明。
您的系统。更多信息请访问6c1K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2^5k6h3&6Q4x3X3g2G2M7X3N6Q4x3V1k6Q4c8e0g2Q4z5e0u0Q4z5p5x3`.
f88K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4K9h3E0A6i4K6u0W2P5r3g2F1i4K6u0W2L8%4u0Y4i4K6u0r3

总结

以上内容为笔者为后续学习 VT-X 准备搜集的内容, 供大家参考学习讨论, 如有错漏 请留言


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 4天前 被mb_binusgki编辑 ,原因: 补充内容
收藏
免费 3
支持
分享
最新回复 (2)
雪    币: 5873
活跃值: (7067)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我是amd的cpu 咋没有amd的 推荐几个amd的
2026-2-27 11:20
0
雪    币: 309
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
木志本柯 我是amd的cpu 咋没有amd的 推荐几个amd的
amd的话推荐看看 Bareflank 
git地址: 62bK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6n7j5i4u0W2k6X3I4S2L8X3E0Q4x3V1k6Z5P5i4m8W2M7Y4k6A6M7$3!0J5
这是一个模块化 Hypervisor 框架, 可以用于构建自定义 Hypervisor, 支持 AMD-V 与 VT-x , 主要语言为C++, 主要也是用于教学/研究, 它仅提供启动/停止虚拟机管理程序所需的虚拟化支持, 相比SimpleVisor复杂一些, 因为采用了封装分层加模块化
2026-2-27 15:49
0
游客
登录 | 注册 方可回帖
返回