反VM测试----成功

 1 BOOL CInsideVmDlg::IsInsideVm()
 2 {
 3     bool rc = true;
 4     
 5     __try
 6     {
 7         __asm
 8         {
 9             push   edx
10             push   ecx
11             push   ebx
12                 
13             mov    eax, 'VMXh'
14             mov    ebx, 0  // 将ebx设置为非幻数’VMXH’的其它值
15             mov    ecx, 10 // 指定功能号,用于获取VMWare版本,当它为0x14时用于获取VMware内存大小
16             mov    edx, 'VX' // 端口号
17             in     eax, dx // 从端口dx读取VMware版本到eax
18             //若上面指定功能号为0x14时,可通过判断eax中的值是否大于0,若是则说明处于虚拟机中
19             cmp    ebx, 'VMXh' // 判断ebx中是否包含VMware版本’VMXh’,若是则在虚拟机中
20             setz   [rc] // 设置返回值
21                 
22             pop    ebx
23             pop    ecx
24             pop    edx
25         }
26     }
27     __except(EXCEPTION_EXECUTE_HANDLER)  //如果未处于VMware中,则触发此异常
28     {
29         rc = false;
30     }
31     
32     return rc;
33 }

.......................

等待继续测试!!

https://files.cnblogs.com/tk091/InsideVm.zip

 

测试成功,只反vm,不反vb

posted @ 2012-04-21 22:58  r3call  阅读(320)  评论(0编辑  收藏  举报