首页
社区
课程
招聘
Hypervisor From Scratch - 第 1 部分:基本概念和配置测试环境
发表于: 2024-3-30 10:13 10006

Hypervisor From Scratch - 第 1 部分:基本概念和配置测试环境

2024-3-30 10:13
10006

欢迎来到名为“ Hypervisor From Scratch ”的多部分系列教程的第一部分。顾名思义,本课程包含创建基于硬件虚拟化的基本虚拟机的技术细节。如果您遵循本教程,您将能够创建自己的虚拟环境,并了解 VMWare、VirtualBox、KVM 和其他虚拟化软件如何使用处理器的设施来创建虚拟环境。此外,您还可以了解HyperDbg调试器的“VMM”模块内部是如何工作的。

本教程的完整源代码可在 GitHub 上获取:

[ https://github.com/SinaKarvandi/Hypervisor-From-Scratch ]

为了设置嵌套虚拟化环境,请确保在虚拟机中启用以下功能
图片描述

我们将在本系列的其余部分中经常使用一些关键字,您应该了解它们(大多数定义源自英特尔软件开发人员手册,第 3C 卷)。

Virtual Machine Monitor (VMM): VMM 充当host并完全控制处理器和其他平台硬件。 VMM 能够保留对处理器资源、物理内存、中断管理和 I/O 的选择性控制。

Guest Software: 每个虚拟机 (VM) 都是一个guest软件环境。

VMX Root Operation and VMX Non-root Operation: VMM在VMX root operation中运行, 而guest software在VMX non-root operation中运行.

VMX transitions: VMX root operation和VMX non-root operation之间的转换.

VM entries: 转换为VMX non-root operation.

Extended Page Table (EPT): 一种使用第二层将guest机的物理地址转换为host的物理地址的机制。

VM exits: 从VMX non-root operation转换到VMX root operation.

Virtual machine control structure (VMCS): 是内存中的一种数据结构,在 VMM 管理时,每个 VM 只存在一次(或更准确地说,每个虚拟 CPU 存在一个)。 随着不同 VM之间执行上下文的每次更改,VMCS 都会针对当前 VM 进行恢复,从而使用 VMCS 定义 VM 虚拟处理器和 VMM 控制Guest software 的状态。

VMCS 由六个逻辑组组成:

​ 理器的当前状态信息保存在guest-state区域。

host-state区域:在VM-exit时,处理器的状态信息从host-state区域中加载。

VM-execution 控制区域:在进入VM后,处理器的行为由VM-execution控制区域中的字段提供控

​ 制。例如,可以设置某些条件使得在guest执行中产生 VM-exit.。

VM-exit控制区域:控制处理器在处理VM-exit时的行为,也影响返回VMM后处理器的某些状态。

VM-entry控制区域:控制处理器在处理VM-entry时的行为,也决定进入VM后处理器的某些状态。

VM-exit信息区域:记录引起VM-exit事件的原因及相关的明细信息。也可以记录VMX指令执行失败

​ 后的错误编号。

我发现了一篇很好的作品来说明 VMCS
图片描述
图片描述
不用担心这些字段,我将在后面的部分中清楚地解释其中的大部分内容。 请记住,VMCS 结构因处理器的不同版本而异。

VMX引入了一下新指令
图片描述

图片描述
以下几项总结了 VMM 及其guest软件的生命周期以及它们之间的交互:

现在就够了!

其他与虚拟机管理程序相关的作品和材料。

Awesome virtualization(介绍书籍、论文、项目、课程、CVE 和其他与虚拟机管理程序相关的作品)-https://github.com/Wenzel/awesome-virtualization

7 天虚拟化:虚拟机管理程序开发系列 - ( https://revers.engineering/7-days-to-virtualization-a-series-on-hypervisor-development/ )

最后,如果您想使用虚拟机管理程序进行调试、研究或逆向工程,您可以使用HyperDbg Debugger,因为该调试器中实现了许多基于虚拟机管理程序的创新方法,这将为您的逆向之旅提供帮助。

在这一部分中,我们研究了我们应该注意的一般关键字,并为我们将来的测试创建了一个简单的测试环境。 在下一部分中,我将解释如何使用我们上面制作的驱动程序在您的计算机上启用 VMX。 然后我们将调查虚拟化的其余部分,所以我们下一部分见。

[1] 英特尔® 64 和 IA-32 架构软件开发人员手册合并第 3 卷 ( https://software.intel.com/en-us/articles/intel-sdm )

[2] 硬件辅助虚拟化 ( http://www.cs.cmu.edu/~412/lectures/L04_VTx.pdf )

[3] 编写 Windows 内核驱动程序 ( https://resources.infosecinstitute.com/writing-a-windows-kernel-driver/ )

[4] 什么是 1 类虚拟机管理程序? – ( http://www.virtualizationsoftware.com/type-1-hypervisors/ )

[5] Intel / AMD CPU 内部结构 – ( https://github.com/LordNoteworthy/cpu-internals )

[6] Windows 10:禁用签名驱动程序强制执行 – ( https://ph.answers.acer.com/app/answers/detail/a_id/38288/~/windows-10%3A-disable-signed-driver-enforcement )

[7] 指令集映射 » VMX 指令 – ( https://docs.oracle.com/cd/E36784_01/html/E36859/gntbx.html )

[8] HyperDbg 文档 – ( https://docs.hyperdbg.org )


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2024-3-31 17:16 被zhang_derek编辑 ,原因:
收藏
免费 9
支持
分享
最新回复 (5)
雪    币: 4583
活跃值: (6836)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
虚拟化yyds
2024-3-30 13:00
0
雪    币: 100
活跃值: (2493)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好文终于有人翻译了
2024-3-30 14:07
0
雪    币: 7086
活跃值: (9294)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
4

Hypervisor From Scratch虚拟化技术文章翻译
原文地址:https://rayanfam.com/tutorials/

最后于 2024-3-31 18:47 被zhang_derek编辑 ,原因:
2024-3-31 18:46
0
雪    币: 3535
活跃值: (31016)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢分享
2024-3-31 21:29
1
雪    币: 233
活跃值: (1829)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
666
2024-4-11 16:09
0
游客
登录 | 注册 方可回帖
返回
//