Узнать не запущено ли приложение под VMware?

Previous  Top  Next

    
 

 

 

Code:

////////////////////////////////////////////////////////////////////////////////

//

//  Simple VMware check on i386

//

//    Note: There are plenty ways to detect VMware. This short version bases

//    on the fact that VMware intercepts IN instructions to port 0x5658 with

//    an magic value of 0x564D5868 in EAX. However, this is *NOT* officially

//    documented (used by VMware tools to communicate with the host via VM).

//

//    Because this might change in future versions - you should look out for

//    additional checks (e.g. hardware device IDs, BIOS informations, etc.).

//    Newer VMware BIOS has valid SMBIOS informations (you might use my BIOS

//    Helper unit to dump the ROM-BIOS (http://www.bendlins.de/nico/delphi).

//

 

function IsVMwarePresent(): LongBool; stdcall// platform;

begin

Result := False;

{$IFDEF CPU386}

try

   asm

           mov     eax, 564D5868h

           mov     ebx, 00000000h

           mov     ecx, 0000000Ah

           mov     edx, 00005658h

           in      eax, dx

           cmp     ebx, 564D5868h

           jne     @@exit

           mov     Result, True

   @@exit:

   end;

except

   Result := False;

end;

{$ENDIF}

end;

 

 

 

©Drkb::01333

Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php