在我上次面试的一次面试中,我被问到一个问题,直到现在我甚至都没有找到解决问题的线索。承认虚拟环境
因为这是非常有趣的问题我想也许这里有人会有一个想法。
退出简单问题: “建议构建应用程序的方法,以便能够识别它是否在虚拟机上运行。” (虚拟机不是指像CLR或JVM之类的东西,而是指可以使用VMware构建的完全虚拟化环境)
任何想法?
在我上次面试的一次面试中,我被问到一个问题,直到现在我甚至都没有找到解决问题的线索。承认虚拟环境
因为这是非常有趣的问题我想也许这里有人会有一个想法。
退出简单问题: “建议构建应用程序的方法,以便能够识别它是否在虚拟机上运行。” (虚拟机不是指像CLR或JVM之类的东西,而是指可以使用VMware构建的完全虚拟化环境)
任何想法?
看看Thwarting Virtual Machine Detection,如何做相反的(停止应用程序检测,它是在虚拟机上,以防止恶意程序更改其行为运行)介绍
此演示文稿中列出的许多那通常是用来检测虚拟机环境不同的机制:
最终却没有100%可靠以检测您是否在虚拟机上运行 - 如果目标是提供完全无法检测的环境,那么可以“固定”这些机制中的每一个,以便VM完全无法检测到。
我还看到了直接从处理器缓存,分支预测和其他难以虚拟化的信息中获取数据的实例,以便检测指示虚拟化的异常情况。基本上,虚拟化是虚拟化和检测之间的军备竞赛。 – adelphus 2012-02-28 12:54:54
您确定这不表示VMware? Java应用程序只能在JVM内部运行(对于C#/ CLR也是如此)。 – Groo 2012-02-28 09:55:27
对不起,我修正了它 – MoShe 2012-02-28 11:16:28
我对你为什么要检测这个问题背后的原因感兴趣。 – CodeCaster 2012-02-28 11:34:37