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

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

2024-3-30 10:13
3645

目录

一、基本概念和配置测试环境

1.1.介绍

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

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

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

1.2.VMware Workstation的嵌套虚拟化

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

1.3.概念

我们将在本系列的其余部分中经常使用一些关键字,您应该了解它们(大多数定义源自英特尔软件开发人员手册,第 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区域:在 VM-entry时,处理器的状态信息从guest-state区域中加载。在VM-exit时,处

​ 理器的当前状态信息保存在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 结构因处理器的不同版本而异。

1.4.VMX指令

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

1.5.VMM生命周期

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

  • 软件通过执行VMXON指令进入VMX操作。
  • 使用 VM entries,VMM 可以将 guest 虚拟机转变为 VM(一次一个)。 VMM使用指令VMLAUNCH和VMRESUME影响VM entries; 它使用 VM exits重新获得控制权。
  • VM exits将控制转移到VMM指定的入口点。 VMM可以针对VM exits的原因采取适当的操作,然后使用VM entries返回到VM。
  • 最终,VMM 可能决定自行关闭并离开 VMX 操作。 它通过执行 VMXOFF 指令来实现这一点。

现在就够了!

1.6.相关工作

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

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

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

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

1.7.结论

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

1.8.参考

[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 )


[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

最后于 2024-3-31 17:16 被zhang_derek编辑 ,原因:
收藏
点赞6
打赏
分享
最新回复 (5)
雪    币: 3803
活跃值: (5585)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
huangjw 2024-3-30 13:00
2
0
虚拟化yyds
雪    币: 1353
活跃值: (2246)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
恒大 2024-3-30 14:07
3
0
好文终于有人翻译了
雪    币: 6174
活跃值: (8264)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
zhang_derek 1 2024-3-31 18:46
4
0

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

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