AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Unit zur VM detection + Testprogramm
Thema durchsuchen
Ansicht
Themen-Optionen

Unit zur VM detection + Testprogramm

Ein Thema von Zacherl · begonnen am 23. Sep 2007 · letzter Beitrag vom 11. Jul 2010
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#1

Re: Unit zur VM detection + Testprogramm

  Alt 14. Aug 2009, 15:49
Für Verbesserungen sind wir gerne offen. Ich persönlich hab mich nicht um den Assembler-Kram damals gekümmert. Vielleicht weiß ja Zacherl, wieso das so ist. Du kannst gerne mal ein Update des Code posten.
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Unit zur VM detection + Testprogramm

  Alt 14. Aug 2009, 16:26
Hi,

Ist ja nicht viel.. und eigentlich Größtenteils nur Kosmetik:

Alles aus der Unit VMDetection.pas

1)
Delphi-Quellcode:
type
  TxDTEntry = record
    GDTBase: DWord;
    IDTBase: DWord;
    LDTRBase: DWord;
    GDTLimit: Word;
    IDTLimit: Word;
  end;

// ==>

// Code natürlich entsprechend der neuen Namen anpassen
TxDTEntry = record
    GDTOffset: DWord;
    IDTOffset: DWord;
    LDTROffset: DWord;
    GDTSize: Word;
    IDTSize: Word;
  end;
2)
Delphi-Quellcode:
type
  TxDT = record
    Limit,
    BaseLow,
    BaseHigh: Word;
  end;

// ==>

TxDT = packed record // packed würde ich bei solchen Sachen empfehlen!
    Size: Word;
    Offset: DWord;
  end;
3)
Delphi-Quellcode:
function GetIDTBase: DWord;
var
  IDT: TxDT;
begin
  asm
    SIDT IDT
  end;
  Result := (IDT.BaseHigh shl 16) or IDT.BaseLow;
end;

// ===>

function GetIDTOffset: DWord;
var
  IDT: TxDT;
begin
  asm
    SIDT IDT
  end;
  Result := IDT.Offset;
end;
4)

Delphi-Quellcode:
function GetIDTLimit: DWord;

// ==>

function GetIDTSize: DWord;
5)

Delphi-Quellcode:
function GetGDTBase: DWord;
var
  GDT: TxDT;
begin
  asm
    SGDT GDT
  end;
  Result := (GDT.BaseHigh shl 16) or GDT.BaseLow;
end;

// ==>

function GetGDTOffset: DWord;
var
  GDT: TxDT;
begin
  asm
    SGDT GDT
  end;
  Result := GDT.Offset;
end;
6)
Delphi-Quellcode:
function GetGDTLimit: DWord;

// ==>

function GetGDTSize: DWord;
7)

Delphi-Quellcode:
function GetLDTRBase: DWord;

// ==>

function GetLDTROffset: DWord;
Das sind wie du siehst und ich gesagt habe ja keine wirklichen großen Änderungen^^ Hab ja gesagt dass es etwas kleinlich ist, aber so finde ich den Code schöner bzw. verständlicher.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.376 Beiträge
 
Delphi 12 Athens
 
#3

Re: Unit zur VM detection + Testprogramm

  Alt 14. Aug 2009, 16:51
Result := (IDT.BaseHigh shl 16) or IDT.BaseLow; und mann kann auch froh sein, daß der Compiler die Berechnung auf seine Prozessorauflösung (32 bit) hochoptimiert,
denn (Word shl 16) ergibt ja eigentlich 0, da alle Bits aus dem Word rausgeschoben würden
und die Erweiterung auf LongWord, für die Zuweisung an diesen Typ, eigentlich erst am Ende der Berechnung durchgeführt wird.

mit 32 Bit-Werten und 64 Bit als Ergebnis ginge soetwas nicht.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
444 Beiträge
 
Delphi 12 Athens
 
#4

Re: Unit zur VM detection + Testprogramm

  Alt 15. Aug 2009, 09:56
Vielleicht tragen die hier genannten Verbesserungen ja zur Optimierung des bestehenden Codes bei.

Grundsätzlich ist das Vergleichen von einzelnen Adressen aber immer problematisch, da es die konsequente Pflege dieses Datenbestandes voraussetzt.

Von daher müsste man sich eigentlich von den wichtigsten virtuellen Umgebungen (Heise hatte da vor kurzem mal einen Vergleichstest) die API's besorgen, da ich mir jeweils unterschiedliche Wege vorstelle, wie eine VM erkannt werden kann.
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Unit zur VM detection + Testprogramm

  Alt 15. Aug 2009, 11:41
Zitat von devidespe:
Vielleicht tragen die hier genannten Verbesserungen ja zur Optimierung des bestehenden Codes bei.

Grundsätzlich ist das Vergleichen von einzelnen Adressen aber immer problematisch, da es die konsequente Pflege dieses Datenbestandes voraussetzt.

Von daher müsste man sich eigentlich von den wichtigsten virtuellen Umgebungen (Heise hatte da vor kurzem mal einen Vergleichstest) die API's besorgen, da ich mir jeweils unterschiedliche Wege vorstelle, wie eine VM erkannt werden kann.
Ich denke in diesem Fall macht das nichts. Die GDT/IDT sollte eigentlich IMMER an der gleichen Stelle gespeichert sein. Alles andere würde mich wundern.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
444 Beiträge
 
Delphi 12 Athens
 
#6

Re: Unit zur VM detection + Testprogramm

  Alt 15. Aug 2009, 13:31
Die Frage ist ja, ob die hier genannten Verbesserungsvorschläge insbesondere von Neutral General und Himitsu helfen, das bei mir nicht erkannte Virtual PC 2007 erkennbar zu machen ?

Falls ich da noch was testen soll, bin ich gerne bereit.
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.176 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Unit zur VM detection + Testprogramm

  Alt 15. Aug 2009, 15:44
Hallo zusammen,
gut ich nutze Windows 7 RC1 in der 64 Bit Version und als VM das komplett neue "Windows Virtual PC" (von welchem ich im übrigen sehr begeistert bin).
Zuvor hat MS ja Virtual PC xxxx verwendet.
Mit dem anscheinend völlig neuen VM geht MS neue Wege.

Die Unit erkennt diese neue VM von MS natürlich noch nicht.
(wird von Euch auch nicht supportet, noch nicht ; weder Windows 7 noch Windows Virtual PC)

Da diese VM von MS IMHO wohl bald weit verbreitet sein wird, allzumal man ja eine XP-Lizenz kostenfrei dazu bekommt, USB verfügbar ist, Anwendungen aus der VM wie eine normale Anwendung gestartet werden können u.v.m., wäre es doch sinnvoll dieses hier mit aufzunehmen, oder?

Ich wäre gern bereit Euch die fehlenden Informationen zu liefern bzw. auch Test's durchzuführen.
Allerdings müsste ich genau wissen was zu tun ist weil ich mich in diesem Bereich nicht auskenne.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Hisoka

Registriert seit: 2. Jan 2008
Ort: im Norden
53 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Unit zur VM detection + Testprogramm

  Alt 8. Jul 2010, 13:16
Mal eine kleine Frage: Wie versuchst du WINE zu erkennen? Denn da WINE keine Virtualisierungslösung ist, sollte es nicht möglich sein WINE von WinXX zu unterscheiden(von der Erkennung her). (Es wird bei mir auch nicht Unterschieden)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.376 Beiträge
 
Delphi 12 Athens
 
#9

AW: Unit zur VM detection + Testprogramm

  Alt 8. Jul 2010, 16:46
Wie versuchst du WINE zu erkennen?
Wine hat nicht für alles eine Umleitung, man muß also nur schauen, ob etwas "fehlt".
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Jul 2010 um 16:49 Uhr)
  Mit Zitat antworten Zitat
Hisoka

Registriert seit: 2. Jan 2008
Ort: im Norden
53 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Unit zur VM detection + Testprogramm

  Alt 10. Jul 2010, 17:40
Wie versuchst du WINE zu erkennen?
Wine hat nicht für alles eine Umleitung, man muß also nur schauen, ob etwas "fehlt".
Das ist mal eine eher schlechte Idee. Denn dann kann man nie sicher sein wie lange der Code funktioniert. Denn die Wine Leute versuchen ja immer wieder Funktionen fertigzustellen oder neue Sachen zu implementieren. Auch gibt es dann wieder einen Unterschied zwischen einem Stub der schon mal generiert wurde und einer Funktion die noch gar nicht implementiert wurde. (Aber allgemein halte ich eher wenig von der Idee WINE erkennen zu wollen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz