bool VMWareTest()
{
BYTE PortValue1,PortValue2;
__try
{
__asm
{
pushad
pushfd
xor ebx,ebx
mov ecx,0xa
mov eax, 'VMXh' ; EAX=magic
mov dx, 'VX' ; DX=magic
in eax, dx ; specially processed io cmd
cmp ebx, 'VMXh' ; also eax/ecx modified (maybe vmw/os ver?)
jne local_001
mov gInVMWARE,1
local_001:
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
jnz local_001
mov gInVirtualPC,1
local_001:
popad
}
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
gInVirtualPC=false;
}
if(gInVirtualPC)
DbgPrint("Syser : Host machine is VirtualPC !\n");
return gInVirtualPC;
}