Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   VM erkennen (https://www.delphipraxis.net/133819-vm-erkennen.html)

macadamia 9. Mai 2009 21:13


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

Namenloser 9. Mai 2009 21:15

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.

macadamia 9. Mai 2009 21:33

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

Namenloser 9. Mai 2009 21:36

Re: VM erkennen
 
Die Suchfunktion hier im Forum hat ein paar Macken. Ich suche meistens über Google mit site:delphipraxis.net <Suchbegriff>

generic 9. Mai 2009 23:01

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 10. Mai 2009 00:19

DP-Maintenance
 
Dieses Thema wurde von "Christian Seehase" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Es geht um eine Delphi-Anwendung.

SirThornberry 10. Mai 2009 08:46

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.

macadamia 10. Mai 2009 10:17

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...

RWarnecke 10. Mai 2009 11:13

Re: VM erkennen
 
Zitat:

Zitat von macadamia
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...

Das gleiche kann ich ebenfalls machen, wenn ich meinen Rechner nach 30 Tage mit einem Images neu bespiele, wo Dein Programm noch nicht drauf ist.

Bernhard Geyer 10. Mai 2009 11:26

Re: VM erkennen
 
Zitat:

Zitat von RWarnecke
Zitat:

Zitat von macadamia
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...

Das gleiche kann ich ebenfalls machen, wenn ich meinen Rechner nach 30 Tage mit einem Images neu bespiele, wo Dein Programm noch nicht drauf ist.

Aber vergiss nicht alle Dateistempel und Registry-Einträge zurück zu setzen. FlexLM als fertige Lizenzprüf-SW reagiert z.B. allergisch falls es Dateien mit Dateistempeln in der Zukunft findet. Und sowas lässt sich auch einfach selbst implementieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr.
Seite 1 von 4  1 23     Letzte »    

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