VM erkennen
Ich möchte gerne in meiner Delphi-Anwendung (Win32) mit hoher Treffsicherheit herausfinden, ob das Programm in einer VM läuft. Hat da schon jemand Erfahrungen damit? Gibts dazu vielleicht schon Code? Das wäre mir eine große Hilfe!
Grüße Andreas |
Re: VM erkennen
Willkommen in der DP :party:
Es gibt schon zu sehr vielen Fragen Lösungen hier im Forum, also benutze bitte zuerst die Suche, bevor du eine Frage stellst. Mit 5 Sekunden googlen, habe ich z.B. diese Unit gefunden. |
Re: VM erkennen
Entschuldigung! Ich HABE ein paar Suchabfragen hier angestellt, habe aber nichts gefunden. "VM" gibt keine Treffer und "virtuell" gibt 320 Treffen, bei den ersten 100 ist nichts passendes dabei oder ich hab's übersehen. Naja, war vielleiche eine ungeschickte Suche von mir. Ist normal nicht meine Art, gleich mal loszuposten. Sorry... und Danke!
Gruß Andreas |
Re: VM erkennen
Die Suchfunktion hier im Forum hat ein paar Macken. Ich suche meistens über Google mit site:delphipraxis.net <Suchbegriff>
|
Re: VM erkennen
Das funtkioniert für VMWare:
Delphi-Quellcode:
////////////////////////////////////////////////////////////////////////////////
// // 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 ([url]http://www.bendlins.de/nico/delphi[/url]). // 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; |
DP-Maintenance
Dieses Thema wurde von "Christian Seehase" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Es geht um eine Delphi-Anwendung. |
Re: VM erkennen
Ich frag mich immer wieder wozu sowas gut sein soll. Man benutzt eine VMWare meist zum testen von Programmen in einer sicheren Umgebung und da finde ich es kontraproduktiv wenn sich ein Programm dort anders verhält auf einem "richtigen" Rechner.
Zudem macht es auch Sinn VMs zu nutzen um auf einer Hardware mehrere Programme laufen lassen zu können die, auf dem gleichen BS installiert, in Konflikt kommen. Ich finde es etwas daneben leute mit VM anders zu behandeln als Leute die sich 5 Rechner hinstellen. |
Re: VM erkennen
Ich brauche das für folgendes: Ein Programm läuft als 30-Tage-Testversion ohne funktionale Einschränkung. Danach muss das Programm auf dem Rechner freigeschaltet werden. Das kann man mit einer VM leicht umgehen (immer nach 30 Tagen zum letzten Snapshot zurück und Testversion neu installieren). Daher würde ich die VM gerne erkennen und hier die Testversion einschränken...
|
Re: VM erkennen
Zitat:
|
Re: VM erkennen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz