Mega Code Archive

 
Categories / Delphi / Hardware
 

How to detect if the program is running inside VMWare

Title: How to detect if the program is running inside VMWare function IsInsideVMWare: Boolean; var rc: Boolean; begin rc := False; 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 end; except on EPrivilege do rc := False; end; Result := rc; end; begin Write('IsInsideVMWare:'); if IsInsideVMWare then WriteLn('Yes') else WriteLn('No'); end.