首页
社区
课程
招聘
编写64位WIN10下的CPU虚拟化注意事项
发表于: 2022-4-26 12:23 9408

编写64位WIN10下的CPU虚拟化注意事项

2022-4-26 12:23
9408
  1. primay CPU控制字段设置:

    (1).MSR bitmap控制位必须置位,也就是必须设置MSR寄存器的访问位图控制,否则会导致VM EXIT故障,逻辑CPU直接进入shutdown状态,原因不明;

    (2).不管是否开启EPT内存虚拟化,辅助CPU控制字段也必须置位,原因请看下文;

  2. 辅助CPU控制设置:

    (1).此字段中所有不置位就好导致GUST下执行相应指令导致#UD异常的位必须置位;



最后再说一点编写VM EXIT处理需要注意的地方,VM EXIT处理中要谨慎使用需要与调试器通信的API,如DbgPrint,随意使用这类API大概率会造成调试器重入导致整个测试系统平台卡死


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

收藏
免费 1
支持
分享
最新回复 (6)
雪    币: 214
活跃值: (147)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
2
技术有些高深
2022-4-27 16:51
0
雪    币: 220
活跃值: (611)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

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。

对于楼主这种说法,我多少还复制粘贴运行过别人代码的,都一下子难得理解。对于更生疏一点的根本不知道说的是什么

这种东西在某些方面确实可以巧妙的处理一些自己需要的东西,但是把他认为学会就像吃了太上老君炼丹炉的仙丹足以长生不老

那是认知过于肤浅的表现。

最后于 2022-5-3 08:31 被mataoyong编辑 ,原因:
2022-5-3 07:57
0
雪    币: 3307
活跃值: (3903)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
mataoyong EXIT_REASON_MSR_READ和EXIT_REASON_MSR_WRITE 是你必须要自己处理的。这个跟是否win10没有关系。win10下牵扯到RDTSCP和xsaves ...
请出示自己处理MSR读写 VM EXIT在WIN10上成功运行的截图,不要一句VT代码没写过就在网上张口就来
2022-5-3 20:34
0
雪    币: 126
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
5

请教一下“此字段中所有不置位就好导致GUST下执行相应指令导致#UD异常的位必须置位”,为啥子second CPU control中的不置1而导致#UD的要手动处理呀,在Guest中系统不会处理#UD么?这个问题思考了好久

最后于 2023-5-9 09:24 被A1v1n编辑 ,原因:
2023-5-9 09:23
0
雪    币: 3307
活跃值: (3903)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
A1v1n 请教一下“此字段中所有不置位就好导致GUST下执行相应指令导致#UD异常的位必须置位”,为啥子second CPU control中的不置1而导致#UD的要手动处理呀,在Guest中 ...
Gust处理#ud,但是在ring0 #ud异常的最终结果就是蓝屏
2023-9-25 22:56
0
雪    币: 3059
活跃值: (30876)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢分享
2023-9-26 09:26
1
游客
登录 | 注册 方可回帖
返回
//