如何利用 VTx 禁用屏幕捕获?

逆向工程 虚拟机
2021-07-03 00:52:19

我在玩 Kaspersky '15 时遇到了这个很酷的功能。基本上,当您启动“Smart Money”受保护浏览器(该浏览器只是 Chrome 的修改、全新安装)时,如果您的计算机硬件支持 VTx,则您将无法在受保护浏览器运行时截取屏幕截图。

我试着自己做一些研究(疯狂的谷歌搜索,浏览像 kernelmode.info 之类的 RE 网站,等等...)但我不知道他们是怎么做的。有关更多详细信息,请查看有关该技术的“故障排除”部分:http : //support.kaspersky.com/us/9955

有没有人知道如何做到这一点?当我尝试抓取屏幕时,我只会得到一个全黑的屏幕截图。我不知道如何利用 VTx 来完成这样的任务。他们只是使用 VTx 来挂钩所有屏幕捕获系统调用吗?!或者有更有趣的方式吗?

我可能会尝试使用 KAV 驱动程序,但它们绝对不会让重新安装它们变得容易。

1个回答

这个问题很可能会因为主要基于意见而被关闭,因为除非有关于它的文档或有人已经对其进行了逆向工程,否则无法回答“特定系统如何工作”。

因此,对这个答案持保留态度 - 它描述了我将如何解决这个问题。经过仔细调查,这甚至可能都不可行,而卡巴斯基可能做了完全不同的事情。

您想要做的是允许视频驱动程序写入视频卡内存,同时防止它读取相同的内存 - 这很难通过仅处理内存访问位来实现,因为驱动程序Ring 0在内核中特权运行此外,可以通过读取视频内存单元、弄乱值并将其写回来实现诸如 alpha 混合之类的功能,因此您不能仅仅阻止所有视频内存读取。

VT-X 允许您在 Ring 0 模式下捕获指令,因此它们可能会捕获对视频内存的读取访问,检查管理程序内的调用堆栈,然后决定是否要读取实际值或仅通过替换来模拟黑色读取值为 0。

他们甚至可能会跟踪该值的使用情况,允许视频驱动程序使用实际值,但是每当驱动程序外部的某些内容尝试访问它时,将其替换为 0(但是,我怀疑他们是否正在这样做,因为这太难了正确执行,并且需要模拟处理器直到它离开驱动程序,这也有性能问题)。