Detecting Virtualization

If it is possible how can i detect virtualizaton on 64bit virtual machines? In 32 bit system it can be with lower level (inline assembly) programming but in 64 bit it is not available, x64 intrinsics using instead of inline assembler.
Last edited on
Here is the code works for 32bit.



bool IsInsideVMWare(void) {

bool rc = true;

__try

{

__asm
{

push edx
push ecx
push ebx

mov eax, 'VMXh'
mov ebx, 0 // any value but not the MAGIC VALUE
mov ecx, 10 // get VMWare version
mov edx, 'VX' // port number

in eax, dx // read port
// on return EAX returns the VERSION
cmp ebx, 'VMXh' // is it a reply from VMWare?
setz [rc] // set return value

pop ebx
pop ecx
pop edx
}
} __except(filter(GetExceptionCode()))

{
rc = false;
}

return rc;
}
Topic archived. No new replies allowed.