Delphi-PRAXiS :: Das Forum für Fragen zu Delphi
Das Experten Forum für Delphi Programmierer
Hilfe für CodeGear Delphi gibts es hier im Forum
Delphi Quelltexte und Source Codes
 
Delphi-PRAXiS :: Foren-ÜbersichtForen-Übersicht Delphi-PRAXiS Modul-ÜbersichtSite-Map Delphi-PRAXiS durchsuchenSuchen Delphi-PRAXiS Code-LibraryCode-Library Jetzt registrieren!Registrieren Login  
   
 
0
 
Unit zur VM detection + Testprogramm
Ein Thema von Zacherl.

Vorheriges Thema anzeigen  |  Nächstes Thema anzeigen
Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
Delphi-PRAXiS Forum - Übersicht -> Open-Source
Seite 1 von 2   [ 27 Beiträge ]  Gehe zu Seite 1, 2  Weiter
 
 Autor 
 Nachricht 
 
Zacherl #1|Beitrag #781780Verfasst am: 23.09.2007, 14:54      Titel: Unit zur VM detection + Testprogramm Antworten mit Zitat
aktives Mitglied
Alter: 18
Status: offline
Beiträge: 2.647
angemeldet: 03.09.2004
Delphi 2005 Personal

Hey,

zusammen mit blackdrake habe ich eine Unit entwickelt die sehr zuverlässig erkennen kann, ob das eigene Programm auf einer virtuellen Maschiene ausgeführt wird. Dabei sind sogar Fingerprints möglich, die eine Identifizierung der verschiedenen Emulations Software zulässt.

Delphi-Quellcode: zusammenfalten | markieren
type
  TVMFingerprint = (fpUnknown, fpVMWare, fpVirtualPC, fpVirtualBox, fpNative,
    fpWINE, fpParallelsWorkstation, fpQEMU);

type
  TxDTEntry = record
    GDTBase: DWord;
    IDTBase: DWord;
    LDTRBase: DWord;
    GDTLimit: Word;
    IDTLimit: Word;
  end;

type
  TxDTArray = array of TxDTEntry;
  TFingerprintArray = array of TVMFingerprint;

// Prüft auf eine VM, wobei angegeben werden kann, ob WinE als VM gehandhabt werden soll
function IsVirtualMachine(const DetectWINE: Boolean = true): Boolean;
// Gibt einen Fingerprint anhand eines TxDTEntrys zurück
function GetVMFingerprint(xDTEntry: TxDTEntry): TVMFingerPrint; overload;
// Gibt einen Fingerprint für eine CPU zurück
function GetVMFingerprint(CPU: Cardinal): TVMFingerPrint; overload;
// Konvertiert einen Fingerprint in einen String
function VMFingerprintToStr(FP: TVMFingerprint): String;
// Gibt einen TxDTEntry für eine CPU zurück
function GetxDTEntry(CPU: Cardinal): TxDTEntry;
// Gibt ein Array of TxDTEntry für alle CPUs zurück
function GetxDTArray(var Output: TxDTArray): Integer;
// Gibt ein Array of TVMFingerprint für alle CPUs zurück
function GetFingerprintArray(var Output: TFingerprintArray): Integer;


Das ganze Funktioniert über verschiedene Tabellen, die für jede CPU existieren. Die GDT, die IDT und die LDT. Anhand deren Base Adressen und ihrer Größe (Limits) werden die VMs ermittelt.

Unterstützte Betriebssysteme:
* Win95 .. WinME
* WinNT .. WinVista

Unterstützt werden momentan:
* VirtualPC, VMWare, VirtualBox, ParallelsWorkstation und WinE.
* QEMU (Testphase)

Geplante Features:
* Sandbox detection

Download: www.viathinksoft.de/download.php?id=125

Im Archiv findet sich die Unit, der Source für das Testprogramm und eine Excel Tabelle mit unseren Messergebnissen. Wir würden uns über Feedback und weitere Messergebnisse freuen!

Gruß Zacherl

 Zuletzt bearbeitet von Zacherl am 26.09.2007, 21:54, insgesamt 3-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
MagicAndre1981 #2|Beitrag #781821Verfasst am: 23.09.2007, 17:49      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
aktives Mitglied
Alter: 28
Beiträge: 2.051
angemeldet: 04.06.2004
Wohnort: Nordhausen
Delphi 7 Enterprise

danke, deine Unit erkennt auch auch VMs die unter Parallels Workstation laufen. Nur als Typ steht VirtualBox da.

Hier das Ergebnis (siehe Anhang) von deinem Testprogramm innerhalb einer Windows Server 2008 VM.

[ An diesen Beitrag wurden eine oder mehrere Dateien angehängt. Zum Herunterladen bitte anmelden. ]

"A programmer is just a tool which converts caffeine into code", Shocked daran wirds wohl liegen, dass ich Abends nie pennen kann

Luckie hat folgendes geschrieben:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
blackdrake #3|Beitrag #781828Verfasst am: 23.09.2007, 18:01      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
Mitglied
Alter: 21
Status: offline
Beiträge: 569
angemeldet: 22.08.2003
Wohnort: Bammental
Turbo Delphi für Win32

Hallo.

Danke für den Beitrag. Hier wäre die Vermutung nahe, dass Parallels Workstation stets die LDTR-Base 0xDEADFF5B verwendet (Beispiel: Microsoft Virtual PC 2007 verwendet immer 0xDEADFFA8). Hast du auf Parallels Workstation noch ein anderes Betriebssystem, damit die 0xDEADFF5B-Theorie bestätigt werden kann?

Gruß
blackdrake

Und nun was lustiges: How to tern on your computor

www.daniel-marschall.de / www.viathinksoft.de
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Zacherl #4|Beitrag #781842Verfasst am: 23.09.2007, 18:19      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
aktives Mitglied
Alter: 18
Status: offline
Beiträge: 2.647
angemeldet: 03.09.2004
Delphi 2005 Personal

(Hui, unter Parallel Workstations hatten wir bisher gar keine Testergebnisse. Bisher haben wir für VirtualBox als Erkennungsmerkmal nur das GDT Limit.

Bei Parallel Workstations scheint ja auch noch die LDTR Base anders zu sein. Da bräuchten wir allerdings mehr Messwerte. Hast du zufällig noch andere Systeme auf Parallel Workstations installiert?) - zu spät.

Habe die Unit schonmal so angepasst, dass unter VirtualBox die LDTR der Nativen LDTR des Entsprechenden Systems entspricht. Die Ausgabe dürfte dann für Parallel Workstations "Unknown" sein.

[Edit: Parallels Workstation wird nun auch erkannt. (BETA!)]

Neue Funktionen:
Delphi-Quellcode: markieren
// Gibt ein Array of TxDTEntry für alle CPUs zurück
function GetxDTArray(var Output: TxDTArray): Integer;
// Gibt ein Array of TVMFingerprint für alle CPUs zurück
function GetFingerprintArray(var Output: TFingerprintArray): Integer;

 Zuletzt bearbeitet von Zacherl am 23.09.2007, 18:58, insgesamt 2-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
MagicAndre1981 #5|Beitrag #781913Verfasst am: 23.09.2007, 21:46      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
aktives Mitglied
Alter: 28
Beiträge: 2.051
angemeldet: 04.06.2004
Wohnort: Nordhausen
Delphi 7 Enterprise

ich installiere gleich mal ein XP. Das Ergebnis gibts dann morgen.

"A programmer is just a tool which converts caffeine into code", Shocked daran wirds wohl liegen, dass ich Abends nie pennen kann

Luckie hat folgendes geschrieben:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Zacherl #6|Beitrag #781924Verfasst am: 23.09.2007, 22:03      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
aktives Mitglied
Alter: 18
Status: offline
Beiträge: 2.647
angemeldet: 03.09.2004
Delphi 2005 Personal

Danke dir Smile
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
MagicAndre1981 #7|Beitrag #781992Verfasst am: 24.09.2007, 06:53      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
aktives Mitglied
Alter: 28
Beiträge: 2.051
angemeldet: 04.06.2004
Wohnort: Nordhausen
Delphi 7 Enterprise

hier das Ergebnis für XP unter Parallels-


ich werde auch noch ein Win9x installieren und dann die Werte posten.

[ An diesen Beitrag wurden eine oder mehrere Dateien angehängt. Zum Herunterladen bitte anmelden. ]

"A programmer is just a tool which converts caffeine into code", Shocked daran wirds wohl liegen, dass ich Abends nie pennen kann

Luckie hat folgendes geschrieben:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Zacherl #8|Beitrag #782080Verfasst am: 24.09.2007, 12:39      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
aktives Mitglied
Alter: 18
Status: offline
Beiträge: 2.647
angemeldet: 03.09.2004
Delphi 2005 Personal

Damit bestätigt sich unsere Annahme zumindest für NT Systeme schonmal Smile Ein Win9x Test wäre sehr nett von dir ..
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
freak4fun #9|Beitrag #782329Verfasst am: 24.09.2007, 21:18      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
aktives Mitglied
Alter: 24
Status: offline
Beiträge: 1.508
angemeldet: 22.09.2004
Wohnort: Wismar
Turbo Delphi für Win32

Laptop in VM:
Code: zusammenfalten | markieren
System Info
-----------
        Win Type : WinNT
        CPU count: 1

Processor # 1
-------------
        GDT : 0xFFC07000 <16687>
        IDT : 0xFFC18000 < 2047>
        LDTR: 0xDEAD4060 <WinNT>
        Type: VMWare


This application is [probably] running IN a virtual machine!


und ohne:

Code: zusammenfalten | markieren
System Info
-----------
        Win Type : WinNT
        CPU count: 2

Processor # 1
-------------
        GDT : 0x81F3F000 < 1023>
        IDT : 0x81F3F400 < 2047>
        LDTR: 0xDEAD0000 <WinNT>
        Type: Native

Processor # 2
-------------
        GDT : 0x82A48560 < 1023>
        IDT : 0x82A48960 < 2047>
        LDTR: 0xDEAD0000 <WinNT>
        Type: Native


This application is [probably] NOT running in a virtual machine!


Ich weiß ja, dass man immer alles sofort will. Zwinkern

"Du glaubst doch nicht im Ernst, die User wären schlauer geworden?" [Das System von Karl Olsberg]
Kämpfe gegen mich! Thumbs up!

 Zuletzt bearbeitet von freak4fun am 24.09.2007, 21:21, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
blackdrake #10|Beitrag #782333Verfasst am: 24.09.2007, 21:25      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
Mitglied
Alter: 21
Status: offline
Beiträge: 569
angemeldet: 22.08.2003
Wohnort: Bammental
Turbo Delphi für Win32

Hallo freak4fun.

Vielen Dank für die Ergebnisse! Very Happy Unser Erkennungsmuster scheint bei VMWare mittlerweile sehr zuverlässig zu sein. Kann ich von Windows XP bei den Systemen ausgehen?

Gruß
blackdrake

Und nun was lustiges: How to tern on your computor

www.daniel-marschall.de / www.viathinksoft.de
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
freak4fun #11|Beitrag #782343Verfasst am: 24.09.2007, 21:37      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
aktives Mitglied
Alter: 24
Status: offline
Beiträge: 1.508
angemeldet: 22.09.2004
Wohnort: Wismar
Turbo Delphi für Win32

System auf Laptop unter dem der VMServer läuft ist WinVista. In der VM läuft XP. Smile [Siehe Link in PN an mich]

"Du glaubst doch nicht im Ernst, die User wären schlauer geworden?" [Das System von Karl Olsberg]
Kämpfe gegen mich! Thumbs up!

 Zuletzt bearbeitet von freak4fun am 24.09.2007, 21:40, insgesamt 1-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
MagicAndre1981 #12|Beitrag #782357Verfasst am: 24.09.2007, 22:00      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
aktives Mitglied
Alter: 28
Beiträge: 2.051
angemeldet: 04.06.2004
Wohnort: Nordhausen
Delphi 7 Enterprise

Zacherl hat folgendes geschrieben:
Ein Win9x Test wäre sehr nett von dir ..


das hatte ich mir schon gedacht und hab es probiert. Aber die Installation von WinME bleibt bei 10% hängen. Ich probier dann nochmal Win98 oder Win95.

"A programmer is just a tool which converts caffeine into code", Shocked daran wirds wohl liegen, dass ich Abends nie pennen kann

Luckie hat folgendes geschrieben:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Zacherl #13|Beitrag #782360Verfasst am: 24.09.2007, 22:11      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
aktives Mitglied
Alter: 18
Status: offline
Beiträge: 2.647
angemeldet: 03.09.2004
Delphi 2005 Personal

Okey, danke für deine Mühe Smile Bei VirtualBox funktioniert leider der Monitor Treiber von Win98 nicht, so dass ich damit auch nicht testen kann =/
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
MagicAndre1981 #14|Beitrag #782410Verfasst am: 25.09.2007, 01:00      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
aktives Mitglied
Alter: 28
Beiträge: 2.051
angemeldet: 04.06.2004
Wohnort: Nordhausen
Delphi 7 Enterprise

so hier gibts das Ergebnis doch noch. Musste es einfach eine Weile laufen lassen, dann ging das Setup von ME doch noch.

[ An diesen Beitrag wurden eine oder mehrere Dateien angehängt. Zum Herunterladen bitte anmelden. ]

"A programmer is just a tool which converts caffeine into code", Shocked daran wirds wohl liegen, dass ich Abends nie pennen kann

Luckie hat folgendes geschrieben:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Zacherl #15|Beitrag #782470Verfasst am: 25.09.2007, 09:37      Titel: Re: Unit zur VM detection + Testprogramm Antworten mit Zitat
aktives Mitglied
Alter: 18
Status: offline
Beiträge: 2.647
angemeldet: 03.09.2004
Delphi 2005 Personal

Danke dir recht herzlich Smile Scheint zu funktionieren die Parallels Detection.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
Anzeige-Optionen:    
 
Delphi-PRAXiS Forum - Übersicht -> Open-Source Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 2   [ 27 Beiträge ]  Gehe zu Seite 1, 2  Weiter
 
  Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
   
Gehe zu:  
Du darfst keine Beiträge in dieses Forum schreiben.
Du darfst auf Beiträge in diesem Forum nicht antworten.
Du darfst Deine Beiträge in diesem Forum nicht bearbeiten.
Du darfst Deine Beiträge in diesem Forum nicht löschen.
Du darfst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten.
Du kannst Dateien in diesem Forum nicht herunterladen.


Impressum / Kontakt
Allgemeine Geschäftsbedingungen
Verhaltenskodex & FAQ

Delphi-PRAXiS :: Das Forum für Delphi-Programmierer
Das Experten Forum für Delphi ProgrammiererHilfe für Borland Delphi gibts es hier im ForumDelphi Quelltexte und Source CodesDelphi-PRAXiS :: Das Forum für DelphiWindows APIInternet und NetzwerkeVCL und Datenbanken
 

Delphi-PRAXiS V.2005 III
© 2002-2009 by Daniel R. Wolf
powered by phpBB © phpBB Group

Impressum / Kontakt Allgemeine Geschäftsbedingungen