HOWTO: 解决 Windows 10 Hyper-V Host Compute 启动故障 0x80070005

  

        今天微软为 Windows 10 v1709 发布了新的累计更新 KB4093105(16299.402),解决了不少的问题,于是 gOxiA 一早更新了这个补丁,但在更新完毕重启后发现 Hyper-V 无法使用,但在已知问题列表中未查询到有价值的信息。

  

Snipaste_2018-04-24_13-29-53

  

        打开服务管理器(Services.msc)检查 Hyper-V 相关服务,发现 Hyper-V Host Compute Service 服务无法正常启动,提示 0x80070005 访问拒绝。而在事件查看器中也找到了这个事件的记录。

  

Snipaste_2018-04-24_13-41-28

  

Snipaste_2018-04-24_13-40-28

  

        抓包大概看了一下,在栈中比较可疑的是“mmunsecurevirtualmemory”,貌似因为传递了未加密的虚拟内存数据,难不成因为什么安全规则导致的?!但貌似这函数与Hyper-V也没有直接的关系,Bing 了一下也没什么参考资料,也许这个思路就是错误的!!!

  

Snipaste_2018-04-24_16-32-29

  

        之后也想过用 WinDbg 附加到该服务上看看具体过程,但使用 gflags 附加 vmcompute.exe 未能成功启动 WinDbg,也没再深入研究为什么!!迷茫中,想起来同系统版本的其他机器也打了补丁,倒是没有发生这个故障,比较了两个系统设置,唯独是正常运行Hyper-V的机器禁用了 Defender,之后做了对比和测试找到了影响 Hyper-V 服务启动的根因——Control Flow Guard(CFG),Exploit protection 的一个子功能。有关 CFG 的介绍可以参考官方文档:“Control Flow Guard”。

  

ControlFlowGuard

  

        结论,当 CFG 为关闭状态时就会导致 Hyper-V Compute Service服务启动失败,所以必须将其设置为“On by default”。其中的“奥妙”也许只能期待以后微软方面能给出详细的说明!

Windows Client | 评论(1) | 引用(0) | 阅读(1301)
游客
2018/05/03 23:43
记得以前在哪看过,从v1709还是v1803开始,如果VMconnect.exe被第三方DLL注入就将无法启动,不过时间有点长不记得是什么地方看到的了,估计也是使用了控制流量守卫(CFG)或者代码完整性保护(CIG),感觉可能跟本文内容有些关系故贴出来
分页: 1/1 第一页 1 最后页
发表评论
昵称 [注册]
密码 游客无需密码
网址
电邮
打开HTML 打开UBB 打开表情 隐藏 记住我