primay CPU控制字段设置:
(1).MSR bitmap控制位必须置位,也就是必须设置MSR寄存器的访问位图控制,否则会导致VM EXIT故障,逻辑CPU直接进入shutdown状态,原因不明;
(2).不管是否开启EPT内存虚拟化,辅助CPU控制字段也必须置位,原因请看下文;
辅助CPU控制设置:
(1).此字段中所有不置位就好导致GUST下执行相应指令导致#UD异常的位必须置位;
最后再说一点编写VM EXIT处理需要注意的地方,VM EXIT处理中要谨慎使用需要与调试器通信的API,如DbgPrint,随意使用这类API大概率会造成调试器重入导致整个测试系统平台卡死
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
EXIT_REASON_MSR_READ和EXIT_REASON_MSR_WRITE 是你必须要自己处理的。这个跟是否win10没有关系。win10下牵扯到RDTSCP和xsaves两条指令,这两条指令需要启用SECONDARY_VM_EXEC_CONTROL,
CPU_BASED_VM_EXEC_CONTROL的31位(从0位开始)为1表示SECONDARY_VM_EXEC_CONTROL被启用。
通常在win7下SECONDARY_VM_EXEC_CONTROL只有在使用EPT的情况下才需要用到,但是在win10下,
因为那两条指令需要进行处理,SECONDARY_VM_EXEC_CONTROL就要启用并进行相关的位设置为1。
对于楼主这种说法,我多少还复制粘贴运行过别人代码的,都一下子难得理解。对于更生疏一点的根本不知道说的是什么
这种东西在某些方面确实可以巧妙的处理一些自己需要的东西,但是把他认为学会就像吃了太上老君炼丹炉的仙丹足以长生不老
那是认知过于肤浅的表现。
mataoyong EXIT_REASON_MSR_READ和EXIT_REASON_MSR_WRITE 是你必须要自己处理的。这个跟是否win10没有关系。win10下牵扯到RDTSCP和xsaves ...
请教一下“此字段中所有不置位就好导致GUST下执行相应指令导致#UD异常的位必须置位”,为啥子second CPU control中的不置1而导致#UD的要手动处理呀,在Guest中系统不会处理#UD么?这个问题思考了好久
A1v1n 请教一下“此字段中所有不置位就好导致GUST下执行相应指令导致#UD异常的位必须置位”,为啥子second CPU control中的不置1而导致#UD的要手动处理呀,在Guest中 ...