谢尔盖·布拉图斯(Sergey Bratus)和朱利安·班格特(Julian Bangert)在Github上的trapcc项目声称,使用x86 MMU的Turing完整功能,代码可以使用单个指令(移动,零则分支,减量)转义虚拟机。它是通过页面错误和双重错误来实现的。我试图阅读这篇论文,但似乎太令人困惑。这个想法可行吗?

评论

我没有看到任何声称可以用来逃避VM的说法。它主要只是为了展示一个巧妙的技巧,尽管它也有可能用于混淆。

而且由于没有提到逃脱的事实,我不喜欢标题,因为它极具误导性。

#1 楼

实际上,他们根本不声称要逃避任何虚拟机。但是,通过使用MMU故障处理程序机制来执行计算,他们希望使程序的封装不切实际。实际上,关键是要找到意外的原语来执行计算,这样做只有少数虚拟机环境将能够处理此类特定程序。而且,即使这样做,虚拟机也由虚拟机管理程序管理,这可能会由于处理此类程序所需的所有中断信号而变得不堪重负。

因此,实际上,他们提出了一种与C(车削完成)一样强大的编程方式,但是在虚拟化环境中运行将非常繁琐。

当然,这样做的目的是在虚拟机中运行时减慢对程序的分析(将其与防调试技术进行比较,以避免动态分析)。