Zitat von
ErazerZ:
Delphi-Quellcode:
{
Orginal code by Gobo
}
function IsVirtualMachine: Boolean;
var
Temp:
Array[0..5]
of Byte;
TempB: Byte;
begin
asm
sidt Temp
mov bh, byte ptr [Temp + 5]
mov TempB, bh
end;
case TempB
of
$ff, $e8:
Result := True;
else
Result := False;
end;
end;
Ist SIDT nicht ein privilegierter Opcode? Das kann eigentlich nur anhand eines "Bugs" in VMWare funktionieren... Nebenbei, wozu der Umstand mit mov bh und TempB? Warum nicht einfach Temp[5] mit $ff und $e8 vergleichen?
Last but not least: Mit
WMI gehts über ne
query auf Win32_ComputerSystem (Manufacturer, Model) viel simpler:
Normaler PC:
Manufacturer: Dell Computer Corporation
Model: Latitude D600
VMware:
Manufacturer: VMware, Inc.
Model: VMware Virtual Platform
VirtualPC:
Manufacturer: Microsoft Corporation
Model: Virtual Machine
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet.
" (Henning Richter)