VT系列:退出事件系统构建(VMMEntryPoint)

本文详细介绍了VT执行流程中的VM-Exit事件处理,包括必须处理的事件、CR和MSR访问的细节,并提供了处理函数的汇编实现,涉及到寄存器保存和恢复的操作。
摘要由CSDN通过智能技术生成

VT执行流程:

产生退出事件 -> 根据退出事件指定特定的处理函数–> 决定自己处理还是交给CPU处理–> 完成了调用VmResume将控制权交给虚拟机.



而当发生退出事件时要调用的函数就是本章要讲的

VMCS位置:

HOST_RIP-->VMMEntryPoint(VM-Exit处理程序)


VM-Exit事件表:

#define EXIT_REASON_EXCEPTION_NMI       0                (EXCEPTION_BITMAP)//异常信息可以拦截int3等异常

#define EXIT_REASON_EXTERNAL_INTERRUPT  1

#define EXIT_REASON_TRIPLE_FAULT        2

#define EXIT_REASON_INIT                3

#define EXIT_REASON_SIPI                4

#define EXIT_REASON_IO_SMI              5

#define EXIT_REASON_OTHER_SMI           6

#define EXIT_REASON_PENDING_INTERRUPT   7

#define EXIT_REASON_TASK_SWITCH         9

#defineEXIT_REASON_CPUID               10 //必须处理的

#define EXIT_REASON_HLT                 12

#defineEXIT_REASON_INVD                13 //必须处理的

#define EXIT_REASON_INVLPG              14

#define EXIT_REASON_RDPMC               15

#define EXIT_REASON_RDTSC               16

#define EXIT_REASON_RSM                 17

#defineEXIT_REASON_VMCALL              18 //必须处理的因为可能存在多个VT

#define EXIT_REASON_VMCLEAR             19

#define EXIT_REASON_VMLAUNCH            20

#define EXIT_REASON_VMPTRLD             21

#define EXIT_REASON_VMPTRST             22

#define EXIT_REASON_VMREAD              23

#define EXIT_REASON_VMRESUME            24

#define EXIT_REASON_VMWRITE             25

#define EXIT_REASON_VMXOFF              26

#define EXIT_REASON_VMXON               27

#defineEXIT_REASON_CR_ACCESS            28 //必须处理的只要处理cr3寄存器

#defineEXIT_REASON_DR_ACCESS            29 //可以监控硬件断点

#defineEXIT_REASON_IO_INSTRUCTION       30 //可以监控键盘鼠标输入输出

#defineEXIT_REASON_MSR_READ            31 //必须处理的

#defineEXIT_REASON_MSR_WRITE           32 //必须处理的

#define EXIT_REASON_INVALID_GUEST_STATE 33

#define EXIT_REASON_MSR_LOADING         34

#define EXIT_REASON_MWAIT_INSTRUCTION   36

#define EXIT_REASON_MONITOR_INSTRUCTION 39

#define EXIT_REASON_PAUSE_INSTRUCTION   40

#define EXIT_REASON_MACHINE_CHECK       41

#define EXIT_REASON_TPR_BELOW_THRESHOLD 43


必须交由我们自己处理的VM-EXIT事件(即不在CPU_BASED_VM_EXEC_CONTROLEXCEPTION_BITMAP控制内的):

事件

代号

对应汇编指令

Model Specific Register Read (MSR寄存器读操作)

EXIT_REASON_MSR_READ(0x1F)

rdmsr

Model Specific Register Read (MSR寄存器写操作)

EXIT_REASON_MSR_WRITE(0x20)

wrmsr

Control Register Access

(CR寄存器读/写操作)

EXIT_REASON_CR_ACCESS(0x1C)

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值