使虚拟机对应用程序来说像是一台真正的机器

时间:2019-11-30 11:05:33

标签: virtual-machine

我正在使用VmWare Workstation 14,并且在安装操作系统(其中的任何一个)时,某些程序和应用程序能够识别我正在使用虚拟机。

我已经看到虚拟机正在使用真正称为虚拟的虚拟化设备。 (例如VmWare Network Card等),是否可以在这些虚拟机上安装假冒的真实的类似硬件驱动程序的方法?这个简单的更改可以使应用程序将此虚拟机视为真实计算机吗?

如何使此虚拟机在应用程序中显示为真实计算机?
真的有什么办法吗?

1 个答案:

答案 0 :(得分:0)

这是一个是或否的问题,所以我的回答是:

是的……大概。但工作量很大。

Tom Liston 和 Ed Skoudis 在 2006 年的演讲中谈到了这一点:https://handlers.sans.org/tliston/ThwartingVMDetection_Liston_Skoudis.pdf

它专注于 VMware,但其中一些也适用于其他类型的虚拟机环境 (VME)。

总而言之,他们确定了尽可能多的可以允许 VM 检测的东西,每个都必须解决,并且他们还提到了一些针对它们的 VMware 特定的缓解措施。

  • 进程、文件系统和/或 Windows 注册表中的 VME 工件。这些将包括 VMtools 服务和“文件系统中对‘VMware’和 vmx 的 50 多个不同引用”和“超过注册表中有 300 个对“VMware”的引用”,所有这些都必须被删除或更改。
  • 内存中的 VME 工件。 来宾 (VM) 中的特定内存区域往往与主机不同,即中断描述符表 (IDT)、全局 描述符表 (GDT) 和本地描述符表 (LDT)。构建 VM 的方法可能允许这些在来宾中的显示与在主机中的显示相同。
  • 特定于 VME 的虚拟硬件。这将包括您提到的驱动程序,例如 VmWare Network Card。必须删除驱动程序或将其替换为与任何虚拟驱动程序的名称或代码签名不匹配的驱动程序。在开源系统上可能最容易做到,只需修改驱动程序源代码并构建即可。
  • 特定于 VME 的处理器指令和功能。一些 VME 添加非标准机器语言指令,或修改现有指令的行为。这些可以通过编辑 VME 源代码来更改或删除,但代价是方便的主客交互。
  • VME 行为差异。 VM 可能在网络上的响应不同,或者在时间同步时失败。这可以通过额外的源代码更改(在主机和来宾上)来缓解,以使网络流量看起来更接近正常,并且为 VM 提供足够的 CPU 内核将有助于确保它的运行速度不会比挂钟时间慢。< /li>

这还是 2006 年的,所以如果有人有更新的参考资料,我很乐意看到他们的回答。