基于内核的虚拟机(KVM)让 Linux 系统无需额外软件就能充当虚拟机监视器,但用它创建的虚拟机,行为并不完全等同于真实硬件。有时候这一点很要命,于是有人做了一个叫 vfio-native 的工具,专门掩盖"软件可能正跑在虚拟机里"这件事。

打开网易新闻 查看精彩图片

虚拟硬件与裸机之间的差异有不少。虚拟机在处理某些冷门指令时,可能以可测量的方式表现得略有不同;执行某些任务可能稍微慢一点;又或者,虚拟机监视器干脆直接把自己报出来。

vfio-native 包含一些内核补丁,用来修复与这些不同行为相关的缺陷,改变内核标识自己的方式,并试图强制 CPU 按真实硬件的方式行事。把这些都应用到虚拟机上之后,它在某款虚拟机检测工具上的得分是 1/85,而一台标准 KVM 虚拟机的得分是 10/85。

想试的话,它已经上架 Arch Linux 的 AUR。另外值得一提的是,用它的理由不止一个。比如,安全研究人员测试恶意软件时,需要知道这些软件在自认为身处真实硬件时会如何表现——有些恶意软件被限制在虚拟机里时,行为会变得温和。

还有一些授权软件在检测到自己运行在虚拟机中时,会把自己禁用掉。这对某些场景来说很麻烦,比如控制工业工具的软件,它们只能跑在早已停止维护的操作系统上,或者跑在如今已经找不到的硬件上。

此前也出现过其他执行类似任务的工具。