Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Bitte testen! IDT base Adresse auslesen + VMM detection (https://www.delphipraxis.net/99543-bitte-testen-idt-base-adresse-auslesen-vmm-detection.html)

Die Muhkuh 13. Sep 2007 20:15

Re: Bitte testen! IDT base Adresse auslesen + VMM detection
 
Code:
---------------------------
CPU 1     
---------------------------
Base adress:  

E386D400
---------------------------
OK  
---------------------------
Code:
---------------------------
CPU 2     
---------------------------
Base adress:  

C61D98E0
---------------------------
OK  
---------------------------

Zacherl 13. Sep 2007 20:49

Re: Bitte testen! IDT base Adresse auslesen + VMM detection
 
Danke dir :) Du hast komische Werte :mrgreen: Dein Wert fällt vollkommen aus der Reihe:

Zitat:

WinVista Ultimate
---------------------------
CPU1: 83ABF400
CPU1: 82252400
CPU1: E386D400
CPU2: C61D98E0
---------------------------

WinVista Buisness
---------------------------
CPU1: 81AFF400
CPU2: 82648960
---------------------------

WinVista Home Premium
---------------------------
CPU1: 822CD400
CPU1: 83D20400
CPU1: 827FF400
CPU2: 835DE960
CPU1: 821A6400
CPU2: 82603960
---------------------------
Die anderen Werte der CPU1 liegen in einem Bereich nicht größer als 84000000 und nicht kleiner 81000000. Außerdem enden alle mit 400.

Die Muhkuh 13. Sep 2007 20:52

Re: Bitte testen! IDT base Adresse auslesen + VMM detection
 
Ich war schon immer anders, als die anderen :mrgreen:

Zacherl 13. Sep 2007 20:55

Re: Bitte testen! IDT base Adresse auslesen + VMM detection
 
:D hast du irgendwas an Antiviren Software oder Firewalls installiert, welche eventuell die Tabelle hooken könnten?

Olli 14. Sep 2007 01:37

Re: Bitte testen! IDT base Adresse auslesen + VMM detection
 
Zitat:

Zitat von Zacherl
Das Programm von mir setzt die Affinity Mask auf die erste CPU. Daher wird doch auch nur die Base Adresse der IDT von CPU1 angezeigt. Bei meinen Tests hatte eigentlich immer die erste CPU die "normalen" Werte. Oder ist das nicht immer so?

Sagen wir mal so, es gibt Ausnahmen. Die hast du ja selber implizit schon genannt ... Software, die was hookt. Bspw. SoftICE soll es tun. Ich habe kein SoftICE, daher weiß ich es nicht hundertprozentig sicher. Allerdings hookte SoftICE so ziemlich jeden Aspekt des Systems ... vermutlich der Grund warum das Produkt eingestellt wurde.

Wichtiger wäre es wohl, eine Kombination aus GDT, LDT und IDT zusammen mit TSS zu benutzen und eben die CPUs zu beachten. Seit VMWare 5.5 (oder 6?) kannst du zumindest nicht mehr davon ausgehen, daß nur eine CPU in einer VM verfügbar ist. Abgesehen davon solltest du den Humbug, der in den Papers von Rutkowska und dem welches Blackdrake ausgegraben hat (was dank der Schreibfehler deutlich unprofessionell auf mich wirkt) nicht zu ernstnehmen. Was ich meine ist der Teil wo gesagt wird, daß die IDT reloziert werden muß, weil es sonst zum Konflikt kommen würde. Ich konnte in meinem Paper eindeutig nachweisen, daß diese Annahme falsch ist, auch wenn ich prinzipiell nicht unbedingt eine bessere Idee habe. Allerdings ist SIDT eben keine privilegierte Instruktion, so daß der VMM nicht wissen kann wann sie ausgeführt wird - es sei denn diese Instruktion wird komplett emuliert ... was wiederum die Relokation der IDT (usw.) überflüssig machen würde.

Zitat:

Zitat von Zacherl
Kann man sagen, dass wenn mindestens ein Wert der CPU "normal" ist es sich nicht um eine VM handelt?

Außer bei Hooks. Es dürfte wohl ziemlich effektiv sein, wenn man auf einem Device-IRQL die Adresse der IDT austauscht. Da man es ohnehin immer nur für eine CPU macht und die einzigen Anforderungen die Ausrichtung (Alignment) und die Tatsache, daß es im residenten Speicher untergebracht sein muß, sein dürften, ist es nicht schwer einen solchen Hook zu setzen.

Da aber deine Absicht nur ist, den Anwender drauf hinzuweisen, daß er es nicht in einer VM laufen lassen soll, weil es rechenintensiv ist, sollte es ja kein Problem sein, wenn du auch mal innerhalb einer VM diesen Hinweis nicht anzeigst. Schlimmer wäre der umgekehrte Fall, wo du einen Nutzer auf einer nativen Maschine auf diese Sachen hinweist, weil du es fälschlicherweise als VM erkennst.

Zacherl 14. Sep 2007 05:52

Re: Bitte testen! IDT base Adresse auslesen + VMM detection
 
Danke für deine ausführliche Antwort :)

Zitat:

Zitat von Olli
Da aber deine Absicht nur ist, den Anwender drauf hinzuweisen, daß er es nicht in einer VM laufen lassen soll, weil es rechenintensiv ist, sollte es ja kein Problem sein, wenn du auch mal innerhalb einer VM diesen Hinweis nicht anzeigst. Schlimmer wäre der umgekehrte Fall, wo du einen Nutzer auf einer nativen Maschine auf diese Sachen hinweist, weil du es fälschlicherweise als VM erkennst.

Das leider ist bei Vista momentan das Problem wenn ich den IDT Source nehme. Muss ich es also doch mit dem SIDT Source versuchen.

Trotzdem bitte noch weiter testen.

Leonard 14. Sep 2007 07:55

Re: Bitte testen! IDT base Adresse auslesen + VMM detection
 
Guten Morgen,
hier nochmal meine Werte mit der aktuellen Version.

Code:
---------------------------
CPU 1     
---------------------------
Base adress:  

80036400
---------------------------
OK  
---------------------------
Code:
---------------------------
CPU 2     
---------------------------
Base adress:  

890577E8
---------------------------
OK  
---------------------------
mfg Leonard

Zacherl 14. Sep 2007 10:49

Re: Bitte testen! IDT base Adresse auslesen + VMM detection
 
Danke dir :) Die Werte der ersten CPU passen auch ins Konzepzt .. scheine aber den Bereich auf 80000000 - 84000000 erweitern zu müssen.

blackdrake 16. Sep 2007 17:07

Re: Bitte testen! IDT base Adresse auslesen + VMM detection
 
Hallo.

Haben dir die Informationen von http://www.delphipraxis.net/internal...=777195#777195 eigentlich weitergeholfen oder soll ich die Tests mit dem neuen Testprogramm von diesem Thread durchführen? Microsoft Virtual PC 2007 hat dein Testprogramm bei meinen Windows Versionen jedenfalls perfekt detektiert.

Gruß
blackdrake

Zacherl 16. Sep 2007 20:55

Re: Bitte testen! IDT base Adresse auslesen + VMM detection
 
Ja danke dir, die Infos waren sehr nützlich. Hier mal ein neues Testprogramm, welches jetzt eine optimale Erkennungsrate haben sollte.

(Die LDT ist bisher noch 0 da mir der Code zum Auslesen fehlt. Siehe: http://www.delphipraxis.net/internal...t.php?p=778447)

[Edit: Neustes Programm im ersten Beitrag]


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr.
Seite 3 von 6     123 45     Letzte »    

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