by ayaREI
当AVer抓到你的病毒时,他们通常都是要分析它的。他们需要了解病毒如何在复杂的网络环境下传播。这时候很多人会选择在诸如VMware等一些虚拟机下执行病毒以观察病毒的行为。对Vxer来说自然不希望出现这种情况,那么我们如何来检测病毒的运行系统不是VMware呢?
下面就有几种方法可以判定这个问题:
1.利用VMware的后门。
VMware系统存在后门,用于虚拟系统和真实系统的交互。这是一些函数,你可以在程序中执行以判断。当然了,最好你还要加上异常处理。
mov ecx, 0Ah ; CX=function# (0Ah=get_version)
mov eax, 'VMXh' ; EAX=magic
mov dx, 'VX' ; DX=magic
in eax, dx ; specially processed io cmd
; output: EAX/EBX/ECX = data
cmp ebx, 'VMXh' ; also eax/ecx modified (maybe vmw/os ver?)
je under_VMware
2.注册表键值
在真实系统中,VMware会注册HKLM/Software/VMware, Inc./VMware for Windows NT,而在虚拟系统中,VMware会注册HKLM/Software/VMWare, Inc./VMware Tools/,这也是一个比较好判断的方法。
3.程序路径
在真实或者虚拟系统中都是C:/Program Files/VMware。
4.其他方法
你可以判定系统的硬件信息等等,这些在VMware中会不同的东西都是我们判定VMware的工具。
当AVer抓到你的病毒时,他们通常都是要分析它的。他们需要了解病毒如何在复杂的网络环境下传播。这时候很多人会选择在诸如VMware等一些虚拟机下执行病毒以观察病毒的行为。对Vxer来说自然不希望出现这种情况,那么我们如何来检测病毒的运行系统不是VMware呢?
下面就有几种方法可以判定这个问题:
1.利用VMware的后门。
VMware系统存在后门,用于虚拟系统和真实系统的交互。这是一些函数,你可以在程序中执行以判断。当然了,最好你还要加上异常处理。
mov ecx, 0Ah ; CX=function# (0Ah=get_version)
mov eax, 'VMXh' ; EAX=magic
mov dx, 'VX' ; DX=magic
in eax, dx ; specially processed io cmd
; output: EAX/EBX/ECX = data
cmp ebx, 'VMXh' ; also eax/ecx modified (maybe vmw/os ver?)
je under_VMware
2.注册表键值
在真实系统中,VMware会注册HKLM/Software/VMware, Inc./VMware for Windows NT,而在虚拟系统中,VMware会注册HKLM/Software/VMWare, Inc./VMware Tools/,这也是一个比较好判断的方法。
3.程序路径
在真实或者虚拟系统中都是C:/Program Files/VMware。
4.其他方法
你可以判定系统的硬件信息等等,这些在VMware中会不同的东西都是我们判定VMware的工具。