有没有一个 官方的 应用程序确定它是否在 VMWare 或 Virtual PC(或 Microsoft 现在所说的任何名称)中运行的方法?我看到的代码通常是一种黑客攻击,利用了特定版本的 VMWare 或 Virtual PC 中的一些奇怪的行为副作用。

理想情况下是 Delphi 代码,但如果您可以链接到官方解释,那么我确信我可以转换它。

有帮助吗?

解决方案

我去年写了一系列关于此的文章,并附有源代码。VMware 和 Wine 检测是 这里. 。虚拟电脑是 这里. 。所有这三个都具有非常可靠的检测,因为有对虚拟机管理程序的回调记录(对于 Wine,是标准 DLL 的扩展)。我在评论部分放置了一个未经测试的 VirtualBox 检测器(没有安装来测试)。也可以使用回调来检测并行,但我没有安装它。文档的链接(该链接很差,因为它来自专注于漏洞利用的安全研究人员),但位于 这里 如果您已安装并且感兴趣。还有一个PPT 这里 其中包含一些有关检测 Sandbox、Bochs 和 Xen 的信息。其中代码不多,但如果您必须检测这些代码,它可能会给您一个起点。

其他提示

我觉得这个最好的办法是检查硬件配置文件。虚拟化硬件通常采用公司名称的一部分。如果您检查,而在虚拟PC主板上的描述,你会发现它是由“微软公司”制造。同样在VMWare,以太网适配器将具有的VMnet前缀。

这个线程 SysInternals 论坛上有几个答案(当然是在 Delphi 中),其中包括一个 IsVM 函数。我已经在 VMWare 中的 XP 和 Vista 上托管的 XP 和 Win2003 上进行了测试,结果良好。

有是在这里发表WMI方式: http://blogs.msdn.com/virtual_pc_guy/archive/ 2005/10/27 / 484479.aspx

我双在Virtual PC上运行的XP映像检查,他们正在测试的值仍然是相同的。我不会在这里保证什么其他虚拟机的回报,但...

其实我已经有一个Delphi程序我几年前写得到的列表,并更改使用WMI的默认打印机,而不需要第三方组件之类的东西。如果你不使用从Delphi使用WMI,所以你有什么工作过(它不一定兼容Unicode的,但我可以给你一个副本,但它不应该是太难为我升级吧如果需要的话)。

我使用的 RedPill 方法(翻译成的Delphi,但代码ISN”牛逼很难理解),这得不错。我还包括了一些额外的检查,使用WMI调用得到的东西,如网络适配器供应商名称和版权,但这是用于检测虚拟PC的特定版本。

我的RedPill方法的理解是,它应该工作,并检测基础上,它是如何工作性质的所有虚拟机。有假阳性可能还产生作为视窗7的Windows功能中的新窗口可以被配置为运行无缝内的Windows 7在Windows XP的副本选择的节目的方法可行。

我有好运气只着眼于MAC地址的所有制造商都获得了区块及第一三个部分是唯一的他们。

//look at the MAC address and determine if it's a Virtual Machine
$temp = preg_split("/\s+/",exec("/sbin/ifconfig -a eth0 2>&1 | /bin/grep HWaddr"), -1, PREG_SPLIT_NO_EMPTY);
//Virtual Box MACs all start with '08:00:27:xx:xx:xx'
if (strpos($temp[4], '08:00:27') !== false) $_SESSION['DEVELOPMENT'] = true;  

要确定机器是物理或虚拟机

dmidecode | egrep -i 'manufacturer|product'

如果没有找到的dmidecode命令安装相应的转速。

这是根据EXSI,VMWARE和Hyper-V的机器进行测试。

如果你想通常检测任何类型的虚拟化的情况下,即是最分析的性能特征。就拿东西是虚拟化显著慢(如MMU繁重的工作就像一个叉炸弹)和时间,对一个正常的CPU绑定用户空间应用。从比率可以很容易地分辨。

最容易的工作量方面,如果你只关心某个虚拟机监视器是寻找他们的硬件即VMware的PCI设备:

00:07.3桥:Intel公司82371AB / EB / MB PIIX4 ACPI(修订版08)     子系统:VMware公司虚拟机芯片组

15ad:1976

供应商值是 '15ad'

也有跨越不同的VMM在各种版本一起使用的特定的后门端口。 SIDT招也不错,但如果VMM是不是他的代码检查就行了呢?

dmidecode -s system-product-name

测试VirtualBox上,结果是:

Virtualbox
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top