虚拟机检测与反检测相关

虚拟机软件的漏洞和虚拟机执行环境的检测与反检测(一)

虚拟机软件的漏洞和虚拟机执行环境的检测与反检测(二)

vmware的检测与反检测

检测虚拟机汇编代码

漏洞法检测虚拟机

虚拟机检测技术剖析

检测源码:

#include <windows.h>
#include <stdio.h>

BOOL gInVMWARE, gInVirtualPC;

BOOL VMWareTest()
{
BYTE PortValue1,PortValue2;
__try
{
    __asm
    {
      pushad 
      pushfd
      xor ebx,ebx
      mov ecx,0xa 
      mov eax, 'VMXh'        ; EAX=magic    //564D5868
      mov dx, 'VX'            ; DX=magic
      in eax, dx            ; specially processed io cmd
      cmp ebx, 'VMXh'        ; also eax/ecx modified (maybe vmw/os ver?)
      sete al;
    movzx eax, al
      mov gInVMWARE, eax;
      popfd
      popad
    }
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
    gInVMWARE=FALSE;
}
return gInVMWARE;
}

BOOL VirtualPCTest()
{
__try
{
    __asm
    {
      pushad      
      mov ebx, 0 // Flag
      mov eax, 1 // VPC function number
      __emit 0Fh
      __emit 3Fh
      __emit 07h
      __emit 0Bh
      test ebx, ebx
    sete al
    movzx eax, al
      mov gInVirtualPC , eax;
      popad
    }

}
__except(EXCEPTION_EXECUTE_HANDLER)
{
    gInVirtualPC=FALSE;
}
return gInVirtualPC;
}

BOOL VMTest()
{
    ULONG xdt = 0 ;
    ULONG InVM = 0;
    __asm
    {
        push edx
            sidt [esp-2]
            pop edx
            nop
            mov xdt , edx
    }
    printf("idt = %08x\n" , xdt);
    if (xdt > 0xd0000000)
    {
        //printf("IDT Test :running in vm!\n");
        InVM = 1;
    }
    else
    {
        InVM = 0;
    }
    __asm
    {
        push edx
            sgdt [esp-2]
            pop edx
            nop
            mov xdt , edx
    }
    
    printf("gdt = %08x\n" , xdt);
    
    if (xdt > 0xd0000000)
    {
        InVM += 1;
    }
    else
    {
        InVM += 0;
    }
    return InVM;
}

int main()
{
    if (VMWareTest())
    {
        printf("In Vmware !!!");
    }
    else if (VirtualPCTest())
    {
        printf("In VirtualPC!!!!");
    }
    else if (VMTest())
    {
        printf("In VM !");
    }
    else
    {
        printf("In Host!");
    }
    
    getchar ();
    return 1;
}


过虚拟机中Themida检测方法:
两步可以通吃很多Anti-vmware的方法

第一步是在虚拟机系统的配置文件添加 

monitor_control.restrict_backdoor = "true"

关闭后门

第二步建议开起虚拟机,然后虚拟机 - 设置 - Hardware - Processors - 禁止加速二进制翻译勾起

或添加

disable_acceleration = "TRUE"



其它参考:

http://forum.eviloctal.com/thread-31834-1-1.html

你可能感兴趣的:(vmware,exception,虚拟机,function,汇编,byte)