zoukankan      html  css  js  c++  java
  • 特权指令检测虚拟机

    bool IsInsideVMWare()
    {
      bool rc = true;
    
      __try
      {
        __asm
        {
          push   edx
          push   ecx
          push   ebx
    
          mov    eax, 'VMXh'
          mov    ebx, 0  // 将ebx设置为非幻数’VMXH’的其它值
          mov    ecx, 10 // 指定功能号,用于获取VMWare版本,当它为0x14时用于获取VMware内存大小
          mov    edx, 'VX' // 端口号
          in     eax, dx // 从端口dx读取VMware版本到eax
    //若上面指定功能号为0x14时,可通过判断eax中的值是否大于0,若是则说明处于虚拟机中
          cmp    ebx, 'VMXh' // 判断ebx中是否包含VMware版本’VMXh’,若是则在虚拟机中
          setz   [rc] // 设置返回值
    
          pop    ebx
          pop    ecx
          pop    edx
        }
      }
      __except(EXCEPTION_EXECUTE_HANDLER)  //如果未处于VMware中,则触发此异常
      {
        rc = false;
      }
    
      return rc;
    }
    

     下面是主函数

    int main(void)
    {
    	if(IsInsideVMWare())
    	{
    		 printf("it is in vmm \r\n");
    	}
    	else
    	{
    		 printf("it is not in vmm \r\n");
    	}
    		return 0;
    }
    

     感谢泉哥的分享。

    原文:http://bbs.pediy.com/showthread.php?t=119969

  • 相关阅读:
    2014-04-23 总结
    14-5-13
    PHP
    14-5-8
    ajax
    14-5-6
    14-5-5
    PHP初解
    14-4-30
    14-4-29
  • 原文地址:https://www.cnblogs.com/tk091/p/2585867.html
Copyright © 2011-2022 走看看