反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 // 设置返回值
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 }
.......................
等待继续测试!!
http://files.iyunv.com/tk091/InsideVm.zip
测试成功,只反vm,不反vb
页:
[1]