这个问题,可以往大里回答,也可以往小里回答。如果往大里回答的话,那就是设计到反虚拟化和反调试技术了,可以推荐论文《Towards an Understanding of Anti-virtualization and Anti-debugging Behavior in Modern Malware》,百度学术里有,你可以去参阅一下,我是没有能力写长篇大论的,很多技术也不太明白;如果往小里回答,我有几个小技巧可以让你基本判断一下的。
个人虚拟机现在的流行种类不外乎3种,一种是你提问图里的vmware,一种是Oracle VM VirtualBox,还有一种是windows自带的haper-v(前身是Microsoft Virtual PC)。这3种虚拟机,除了haper-v我没有测试过,其它2种我测试了一下,都可以根据进程来判断。
一、是否vmware虚拟机的判断办法
虚拟机的进程中有vmtoolsd.exe这个名字,我们可以写一个简单的vbs来判断一下,代码如下:
执行一下:
当然你用命令:tasklist |find 'vmtoolsd.exe',和我写的vbs是一个道理。
如果你觉得我的方法太单一了,肯定还会有细心的人说vmware没有装vmware tools你的办法就失效了,那么我再推荐你一个工具,地址在http://www.trapkit.de/tools/scoopyng/,这个工具有源码的,里边有5种办法判断你是否采用的vmware虚拟机,虽然是2008年的工具,但我在最新的vmare14版上依然有效。
二、是否Oracle VM VirtualBox的判断办法
你依旧可以用我的vbs代码来判断,只需把vmtoolsd.exe换成VBoxTray.exe就可以了。这次我们用命令判断,tasklist |find 'VBoxTray.exe'。如果有,证实是虚拟机。
三、其它
至于如何判断是否采用了haper-v,仔细分析一下进程应当也可以找到办法。不过如果你开启了haper-v,好像有个说法是整个windows系统都变成了一个虚拟机了。另外,还有很多大型企业采用的Citrix,我也没有做过测试。这个回答一是提问提太大了,二是涉及到的范围太广了,我只希望抛砖引玉一下,希望大家有更精彩的回答吧。
不过话又说回来,也许整个人类都不知道自己是否活在一个外星人的虚拟机中呢?