首页 > 解决方案 > 来宾虚拟机 - 退出

问题描述

对于以下一系列说明,是否可以退出?哪条指令可能导致退出以及哪种退出?特定类型的退出的原因是什么?

da3bd <mystery>:
da3bd:  4c 33 1c 24             xor    (%rsp),%r11
da3c1:  49 89 d0                mov    %rdx,%r8
da3c4:  49 89 c9                mov    %rcx,%r9
da3c7:  4d 85 c0                test   %r8,%r8
da3ca:  75 11                   jne    da3dd
da3cc:  48 c7 c7 16 6c 00 00    mov    $0x6c16,%rdi
da3d3:  48 c7 c0 74 a6 6d 81    mov    $0x816da674,%rax
da3da:  0f 79 f8                vmwrite %rax,%rdi
da3dd:  9c                      pushf
da3de:  58                      pop    %rax

假设页面包含在 CPL0 中运行的神秘函数,并且包含地址(例如 0xda000 – 0xdafff)的页面存在于内存中,并配置了所有页表。

标签: assemblyx86virtualizationinstruction-set

解决方案


请注意,此图表适用于问题中的特定代码。它不是对这些类型的指令可能出现的退出类型的一般描述。

指令类型 可能的虚拟机退出
1 reg,reg
reg,imm
jmp 短
调试异常
MTF
VMX 定时器
外部中断
NMI
INIT
SMI
2 内存读取 同 #1
EPT 违规
EPT 配置错误
页面错误异常
堆栈段异常
双错误异常
三重错误异常
3 内存写入 与#2
PML full相同
4 函数中的第一条指令 同 #2
中断窗口
NMI 窗口
5 vmwrite 与#1
vmwrite相同

显然,其中大多数都不是由特定指令“引起”的。


推荐阅读