|
发表于 2020-12-8 19:41:32
|
显示全部楼层
本帖最后由 tangptr@126.com 于 2020-12-15 19:18 编辑
要说让PatchGuard,PCHunter啥的检测不到倒是简单,但是要说“无痕”那可太难了。从原理上讲可以用单步调试异常的方式检测特定的钩子,这个检测方式不是说VT就不能阻止,而是要小心一个问题,那就是你针对调试异常的处理会不会重新产生CVE-2018-8897漏洞。(微软已经修复了Windows 7及以上的版本,问题在于你这一处理会不会“捅破”这个补丁)。
提到VBS是因为有了它,处理器的虚拟化接口被占且不给嵌套,只能用微软提供的API了。所以如果你非要以Windows驱动的方式使用处理器的硬件虚拟化技术的话,那必然会产生与VBS,WSL,Hyper-V啥的不兼容现象。
用EPT在Intel系CPU上隐藏Hook欺骗PatchGuard以及ARK还算可行,几乎不会额外占CPU,因为极少产生VM-Exit。但在AMD上,NPT页表定义和EPT有个很致命的差别,这使得每次调用这个函数时就会产生至少两次的VM-Exit(相应的,在Intel上调用被Hook的函数可以只在刚检测钩子之后调用函数才产生VM-Exit,平时不会产生VM-Exit)。因此如果是要HOOK极高频的函数,那就会很占CPU且难以优化,用户会显著感受到电脑变慢了。
据说腾讯早年玩过VT,后来又放弃了。你可以自己猜测一下他们为什么放弃。(别问我,我不知道,并且我还不想去猜)
补充材料:有关CVE-2018-8897漏洞:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-8897
http://everdox.net/popss.pdf
https://www.0xaa55.com/thread-26223-1-1.html |
评分
-
查看全部评分
|