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

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

2022-4-26 12:23
8210
  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)
雪    币: 114
活跃值: (136)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
Vagaeth2 2022-4-27 16:51
2
0
技术有些高深
雪    币: 220
活跃值: (526)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mataoyong 2022-5-3 07:57
3
0

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编辑 ,原因:
雪    币: 2534
活跃值: (3098)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Mr.hack 2022-5-3 20:34
4
0
mataoyong EXIT_REASON_MSR_READ和EXIT_REASON_MSR_WRITE 是你必须要自己处理的。这个跟是否win10没有关系。win10下牵扯到RDTSCP和xsaves ...
请出示自己处理MSR读写 VM EXIT在WIN10上成功运行的截图,不要一句VT代码没写过就在网上张口就来
雪    币: 124
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
A1v1n 2023-5-9 09:23
5
0

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

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