我一次又一次地看到这样的安全程序描述:“请不要尝试在虚拟机内运行该程序,因为该程序将无法启动”或“如果从虚拟机运行,安全程序会说它不在有效环境中”。
我在这里想知道的是:程序如何检测它们是否在虚拟机内? 是否有某个地方设置了某个标志,或者是特定的驱动程序?
答案1
我如何检测我是否在虚拟机内?
我过去做过的一个快速方法是使用西米利都从命令提示符中输入命令来查询 WMI 名称空间对象的计算机、品牌、型号和序列号。
您可以编写一些逻辑来将 WMIC 结果用作安装过程的一部分,如果它检测到已知的东西,您可以让它作为逻辑的一部分进行检查,表明它是一个 VM,或者您可以对其进行编程以查找其他值来表明它不是 VM,或者两者兼而有之。
获取硬件序列号:
WMIC BIOS GET SERIALNUMBER
获取硬件型号:
WMIC COMPUTERSYSTEM GET MODEL
获取硬件制造商:
WMIC COMPUTERSYSTEM GET MANUFACTURER
VM 结果与 VM 结果
非虚拟机 WMIC 结果:
VM WMIC 结果:
更多资源:
答案2
这个主题被强调了好几次。以下是一些依赖于操作系统的提示: