const
xdt:longword=0;
begin
asm
push edx
sidt [esp-2]
pop edx
nop
mov xdt , edx
end;
if xdt > $d0000000 then
begin
outputDebugstring('发现VM!');
end
else
begin
outputDebugstring('未发现vm!');
end;
function AntiVMWare: 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;
我和你正好相反!
http://bbs.pediy.com/showthread.php?t=98611