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:
|
Re: VM erkennen
Zitat:
Ein Ansatzpunkt wären die Netzwerkadapter, diese sind eventuell am Namen als VM Bestandteile erkennbar. |
Re: VM erkennen
Die Unit, die ich mit blackdrake entwickelt hatte, funktioniert soweit noch perfekt, allerdings darf keine vom Prozessor implementierte Technik wie xVM benutzt werden.
|
Re: VM erkennen
Alle in der Unit verwendeten Tests sind sinnbefreit und nutzlos, sobald eine der VMs die speziellen Virtualisierungstechniken der CPU nutzen. Auch nach bestimmter Hardware zu suchen ist sinnbefreit, zumal die ersten VM Lösungen diese Dinge bereits editierbar machen. Und wie bereits gesagt: Ob ich ne VM zurück setze oder alle 30 Tage ein Image zurück spiel ist nicht wirklich ein Unterschied.
|
Re: VM erkennen
Ausserdem scheint es hier um VMWare zu gehen, es gibt aber noch andere VM-Lösungen!
|
Re: VM erkennen
Zitat:
mal ganz abgesehen davon, dass ich das auch ohne VM umgehen kann - ich würde Software aus einer nicht vertrauenswürdigen Quelle (1. was weiss ich denn von dir 2. du vertraust mir ja auch nicht) erst mal in einer dafür vorhandenen VM testen - wenn das Programm dann nicht das Erwartete tut, ist der Test schon negativ beendet. Im Zweifelsfall verlange ich auch mein Geld zurück - eine VM ist ein PC wie andere auch und nichts kriminelles. Gruss Reinhard |
Re: VM erkennen
Bei der Software handelt es sich um eine Anwendung für Ingenieure, die unter den potentiellen Anwendern eine gewisse Bekanntheit hat. Insofern "kennt man mich" schon ein wenig. 90% sind auch bestehende Kunden, die eine neue Version testen wollen. Mir ist auch klar, das jeder Schutz überwindbar ist. Aber es ist schon deutlich mehr Aufwand, eine "echtes" Systemimage auf einem realen Computer aufzuspielen als eine VM zu Clonen. Ich würde das Testen auf der VM ja auch nicht unterbinden, nur würde ich dann z. B. erst mal die Druckfunktion deaktivieren.
Ich mache das jetzt in der Tat mal über die virtuelle Hardware. Die virtuellen Geräte lassen sich sehr gut am Namen erkennen. Und die meissten Namen lassen sich nicht so leicht ändern. Es soll ja, wie bei jeden Programmschutz, nur um ein gewisses Hinerniss gehen. Andererseits werden wohl unter den "normalen" Anwendern nicht viele sein, die schon mit VM's arbeiten. Dürfte eher selten vorkomen, vielleicht lohnt auch mein Aufwand nicht. |
Re: VM erkennen
Vorallem gibt es nicht nur VMWare sondern auch VirtualBox, VirtualPC etc.
|
Re: VM erkennen
Zitat:
|
Re: VM erkennen
Wie Dir vielleicht aufgefallen sein mag, gabs die Posts fast gleichzeitig ;).
|
Re: VM erkennen
Zitat:
|
Re: VM erkennen
Hi,
warum hackt ihr denn alle auf macadamia herum. 1.) Ich finde es bescheuert, dass man hier immer wieder die Suchfunktion um die Ohren gehauen bekommt. Er wird sich schon was dabei gedacht haben, wenn er den Thread eröffnet. Vielleicht kommt dabei etwas neues raus. 2.) Er hat doch eine ganz klare Frage gestellt. Warum muss er sich dafür rechtfertigen warum er wie wo was macht. Das ist eine Unsitte die sich hier in letzter Zeit breit gemacht hat. Viele Grüsse! PS: Dies ist meine ganz persönliche Meinung zu dieser Diskussion! |
Re: VM erkennen
Also, ich würde vorschlagen, jetzt keinen Flame aus dem Thread zu machen. Das mit der Google-Suche ist gut, hab ich was dazu gelernt, danke! Und meine Frage ist eigentlich auch beantworetet worde, Meinungen dazu habe ich ja schon eine Menge... Den Thread können wir also gerne abschliessen.
|
Re: VM erkennen
Gerade ein Kundenkreis wird zu sehen, dass sie mit einer legal erworbenen Anwendung arbeitet. Denn wenn rauskommt, dass sie mit einer nicht lizensierten Anwendung geaerbeitet haben, sind sie ziemlich am Arsch. Wenn deine Anwendung Ausrrucke macht, würde ich einfach ein Wasserzeichen in der Demoversion mitdrucken. Oder die Demoversion mittels Kompilerschalter in der Funktionalität einschränken.
@R2009: Hier wird nicht auf igrndwen rumgehackt, ihr werden nur möglich alternative Lösungebn aufgezeigft und die Schwächen der bestehenden. Letztendlich handelt es sich ja auch um ein Diskussionsforum. |
Re: VM erkennen
Hugh, der grosse Moderator hat gesprochen!
Dann muss das wohl so sein. (Meine persönliche Meinung dazu ändert sich aber nicht!) |
Re: VM erkennen
Er hat aber Recht, egal, was du von Luckie hältst. Wer ein Problem damit hat, hat den Sinn eines Internetforums in den letzten 10 Jahren noch nicht gerallt.
Und das ist meine ganz persönliche Meinung dazu. |
Re: VM erkennen
INTEL schreibt:
There is no software-visible bit whose setting indicates whether a logical processor is in VMX non-root operation. This fact may allow a VMM to prevent guest software from determining that it is running in a virtual machine. Quelle: 253669.pdf |
Re: VM erkennen
OK, am Prozessor vielleicht nicht.
Aber es gibt einige markante Merkmale, wie z.B. den Grafikkartentreiber, an denen man eine VM erkennen kann. |
Re: VM erkennen
Liste der Anhänge anzeigen (Anzahl: 1)
Man könnte doch bestimmt das im Screenshot auswerten ? Aber Achtung, ist Doc-Datei, bevor Luckie wieder meckert. :mrgreen: Paint fügt das nicht ein und ich muss noch weg. :P
|
Re: VM erkennen
Das läuft darauf hinaus, dass man Testversionen nicht mehr mit vollem Funktiosumfang weitergeben kann...
|
Re: VM erkennen
Hi,
lasst ihm doch die 'Arbeit/Freude'. Warum er allerdings hier im Forum fragt und nicht beim Hersteller nach schaut??? Für VMWare gibt es die Möglichkeit die VMware SDKs und APIs herunter zu laden. Gruss |
Re: VM erkennen
Zitat:
Gruss Reinhard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:09 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