Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#12

Re: VMWare, VirtualPC, VirtualBox, etc detection

  Alt 13. Sep 2007, 13:14
Vielen Dank Oli

Habs jetzt mal so implementiert und es scheint zu funktionieren:

Delphi-Quellcode:
function CheckVirtual: Boolean;

function GetSIDTBaseAddress: DWORD; assembler;
asm
  sub esp, 8
  sidt qword ptr [esp]
  mov eax, dword ptr [esp+2]
  add esp, 8
end;

var
  SIDT: DWORD;
begin
  Result := false;
  SIDT := GetSIDTBaseAddress;

  if SIDT >= $0D0000000 then
  begin
    Result := true;
  end;
  if SIDT >= $0FF000000 then
  begin
    Result := true;
  end;
end;
Allerdings habe ich die Abfrage

Code:
CMP DWORD PTR [opIDT+2], $0F0000000
JLE _check_virtualpc
jetzt rausgelassen. Habe ich sie als

if SIDT <= $0F0000000 then ... implementiert gehabt, allerdings war diese Abfrage auch auf der VM nicht zutreffend, weshalb die VM dann auch nicht erkannt wurde.

Nachtrag 1: Unter VirtualBox mit Windows2000 scheints schonmal nicht zu funktionieren. WinXP Pro und WinXP MCE werden aber als VM erkannt.
Nachtrag 2: Bei Vista wird auch keine VM erkannt. Liegen die BaseAdressen der SIDT bei Vista, 2000, etc in anderen Bereichen?
Angehängte Dateien
Dateityp: zip project1_957.zip (8,7 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat