Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Was macht Windows, was lässt es zu? (https://www.delphipraxis.net/125465-macht-windows-laesst-es-zu.html)

Rued 6. Dez 2008 15:04


Was macht Windows, was lässt es zu?
 
Hallo!

Ich konzipiere einen Lizenzierungsmodus für meine Software, der eine Demonutzung über 30 Tage zulässt und dann die Freischaltung fordert, andernfalls eine Nutzung ausschließt. Verhindert werden soll das Überlisten der Nutzungsdauer durch Manipulation der Systemzeit und das Rückstellen durch Neu-Installation.

In dem Zusammenhang stellen sich mir folgende Fragen:

1. Muss der installierende Anwender Administratorenrechte haben, damit während der Installation eine Datei in das Windows- oder ein System-Verzeichnis kopiert werden kann? Welche Unterschiede gibt es zwischen Vista, XP und 2000?
2. Welche Dateien schreibt Windows mit Tagesdatum beim Systemstart? Welche Unterschiede gibt es zwischen Vista, XP und 2000?
3. Gibt es Windows-Unterordner, deren Datum keine Veränderung erfährt? Welche Unterschiede gibt es zwischen Vista, XP und 2000?
4. Wenn die Systemzeit geändert wird, wird eine WM_TIMECHANGE-Nachricht gesendet, die mein Programm jedoch nur erhält, wenn es aktiv ist. Gibt es eine Spur, die Windows im Fall einer Systemzeit-Änderung hinterlässt, die mein Programm lesen kann, wenn es erst nach der Änderung startet?

Gruß

Rüd

mkinzler 6. Dez 2008 15:07

Re: Was macht Windows, was lässt es zu?
 
Zitat:

1. Muss der installierende Anwender Administratorenrechte haben, damit während der Installation eine Datei in das Windows- oder ein System-Verzeichnis kopiert werden kann?
Ja
Zitat:

Welche Unterschiede gibt es zwischen Vista, XP und 2000?
Bei Vista und aktivierter UAC muss Anwender zusärtlich bestätigen

Rued 11. Dez 2008 12:57

Re: Was macht Windows, was lässt es zu?
 
Zitat:

Zitat von mkinzler
Zitat:

1. Muss der installierende Anwender Administratorenrechte haben, damit während der Installation eine Datei in das Windows- oder ein System-Verzeichnis kopiert werden kann?
Ja
Zitat:

Welche Unterschiede gibt es zwischen Vista, XP und 2000?
Bei Vista und aktivierter UAC muss Anwender zusärtlich bestätigen

Hallo mkinzler!

Habe mit der Antwort ein bisschen gewartet, da ich gehofft hatte, noch ein paar Informationen mehr zu bekommen. Inzwischen habe ich zwei Dateien im Windows-Verzeichnis gefunden, die XP und Vista mit dem Start tagaktuell schreibt, nämlich

WindowsUpdate.log
und
bootstat.dat

Kann mir das jemand für 2000 bestätigen?

Danke und Gruß

Rüd

mashutu 11. Dez 2008 15:22

Re: Was macht Windows, was lässt es zu?
 
Zitat:

Zitat von Rued
[...]Inzwischen habe ich zwei Dateien im Windows-Verzeichnis gefunden, die XP und Vista mit dem Start tagaktuell schreibt, nämlich

WindowsUpdate.log
und
bootstat.dat

Wenn der Anwender vor dem Start das System-Datum im BIOS aendert, duerfte dieses Datum nicht zuverlaessig sein.

Ich fuerchte, Du machst Dir da einen Haufen Arbeit, die nicht wirklich von Erfolg gekroent sein wird.

Sherlock 11. Dez 2008 15:53

Re: Was macht Windows, was lässt es zu?
 
Ein bisschen OT: Es zeigt sich immer wieder, daß enorm viel Aufwand in Raubmordkopierschutzvorrichtungen gesteckt wird, der besser im eigentlich Produkt angelegt wäre. Gute Produkte machen gutes Geld, denn glückliche Kunden zahlen auch gerne.

Sherlock

himitsu 11. Dez 2008 16:08

Re: Was macht Windows, was lässt es zu?
 
un am Ende ändert irgendwer ein Byte in der Programmdatei (EXE) und schon wird das Ganze Datumsüberprüfe einfach übersprungen :roll:

Rued 13. Dez 2008 23:10

Re: Was macht Windows, was lässt es zu?
 
@ mashutu, Sherlock, himitsu

Für mich macht es einen Unterschied, ob ein 0815-Anwender ein System-Datum, das BIOS-Datum oder ein Byte in der Programmdatei ändert. Jedenfalls hebe ich nicht die Hände, veröffentliche nur noch Vollversionen und bitte um Spenden.

Gruß

Rüd

new32 14. Dez 2008 08:47

Re: Was macht Windows, was lässt es zu?
 
Hallo

Also ich würde das so versuchen:

1. Datum merken
2. Auch während das Programm ausgeführt wird vergleichen (nich nur beim Start)
Wenn das aktuelle Datum <= als das gemerkte ist, stimmt was nicht!
3. Wenn das Programm eine Datumsänderung verzeichnet auch das merken! Sonst ist bei erneuter Änderung das Prog uU wieder lauffähig
4. Das Systemdatum so genau wie möglich erfragen und merken (1ms-Schritte / 100ns-Schritte)
Sonst könnte eine andauernde Manipulation im ns-Bereich unbemerkt bleiben

Mehr Arbeit aber auch sicherer:
5. Datum aus der KUSER_SHARED_DATA page lesen. Damit schließt du manipulierte API-Aufrufe (weitestgehend) aus.

MfG

Rued 14. Dez 2008 10:36

Re: Was macht Windows, was lässt es zu?
 
Zitat:

Zitat von new32
...
Mehr Arbeit aber auch sicherer:
5. Datum aus der KUSER_SHARED_DATA page lesen. Damit schließt du manipulierte API-Aufrufe (weitestgehend) aus.
MfG

Hallo!

Mit Nr. 5 habe ich mich noch nicht befasst. Würde ich aber, wenn dadurch der Erfolg folgender Manipulation ausgeschlossen werden kann, den ich durch meine Methode bislang nicht verhindern kann:

Zurückstellen der Systemzeit und Computerneustart.

Was wird wann, wie oft in den Speicherbereich geschrieben?

Gruß

Rüd

SirThornberry 14. Dez 2008 11:08

Re: Was macht Windows, was lässt es zu?
 
bei dem ganzen vorhaben solltest du nicht vergessen das es sommer und Winterzeit gibt und ab und an über einen Zeitserver die Zeit synronisiert wird.

new32 14. Dez 2008 11:48

Re: Was macht Windows, was lässt es zu?
 
Problem bei Funktionen wie GetSystemTime, GetSystemTimeAsFileTime und sogar Nt/ZwQuerySystemTime: sie können gehookt sein. Das heißt du bekommst einfach falsche Werte für die Systemzeit.

Deshalb würde ich direkt von der KUSER_SHARED_DATA page lesen.

Die Adresse ist:
Code:
0x7ffe0000
mfg

Rued 14. Dez 2008 12:06

Re: Was macht Windows, was lässt es zu?
 
Zitat:

Zitat von new32
Problem bei Funktionen wie GetSystemTime, GetSystemTimeAsFileTime und sogar Nt/ZwQuerySystemTime: sie können gehookt sein. Das heißt du bekommst einfach falsche Werte für die Systemzeit.

Deshalb würde ich direkt von der KUSER_SHARED_DATA page lesen.

Die Adresse ist:
Code:
0x7ffe0000
mfg

Noch einmal meine Frage: Wenn der Anwender die Systemzeit zurückstellt und den Computer neu startet, bekomme ich dann von der KUSER_SHARED_DATA page noch richtige Werte für die Systemzeit? Nur dann lohnt sich ja der Mehraufwand.

@ SirThornberry
Die Stunde hin und her bei Sommer- und Winterzeit dürfte bei einer Tagesabrechnung keine Rolle spielen. Im schlimmsten Fall wird dem Anwender ein Tag zusätzlich gegönnt.

Gruß

Rüd

new32 14. Dez 2008 13:08

Re: Was macht Windows, was lässt es zu?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier is nen kleines Beispiel für die Benutzung de KUSER_SHARED_DATA page

Rued 14. Dez 2008 13:27

Re: Was macht Windows, was lässt es zu?
 
Zitat:

Zitat von new32
Hier is nen kleines Beispiel für die Benutzung de KUSER_SHARED_DATA page

Danke für Deine Mühe. Habe das Beispiel heruntergeladen, aber sehe leider nicht, wo was geschrieben wird. Möglicherweise liegt es auch an den Änderungen, die ich vornehmen musste. Habe Delphi 5 und ein 32-bit-System.

Daher noch einmal meine Frage: Wenn der Anwender die Systemzeit zurückstellt und den Computer neu startet, bekomme ich dann von der KUSER_SHARED_DATA page noch richtige Werte für die Systemzeit?

Gruß

Rüd

new32 14. Dez 2008 13:43

Re: Was macht Windows, was lässt es zu?
 
Zitat:

aber sehe leider nicht, wo was geschrieben wird
Das wird in die Konsole geschrieben. Du öffnest über Start->Ausführen "cmd.exe" und startest damit dann die "kusdtime.exe".

Alternativ kannst du auch
Delphi-Quellcode:
writeln(...);
durch
Delphi-Quellcode:
MessageBox(0, PCHAR(...), '', MB_OK);
ersetzen. Dann zeigt er ne MessageBox an.

Zitat:

Wenn der Anwender die Systemzeit zurückstellt und den Computer neu startet, bekomme ich dann von der KUSER_SHARED_DATA page noch richtige Werte für die Systemzeit?
Leider nicht.
Der einzige Vorteil dabei liegt darin, dass du nicht Gefahr läufst auf getürkte API-Aufrufe reinzufallen.
Ist nämlich die GetSystemTime gehookt und du benutzt diese Funktieon, so kann dir der Angreifer jeden Wert als Datum verkaufen, den er will.

Von daher würde ich dir das schon empfehlen.

mfg

Rued 14. Dez 2008 13:52

Re: Was macht Windows, was lässt es zu?
 
Zitat:

Zitat von new32
Zitat:

Wenn der Anwender die Systemzeit zurückstellt und den Computer neu startet, bekomme ich dann von der KUSER_SHARED_DATA page noch richtige Werte für die Systemzeit?
Leider nicht.
Der einzige Vorteil dabei liegt darin, dass du nicht Gefahr läufst auf getürkte API-Aufrufe reinzufallen.
Ist nämlich die GetSystemTime gehookt und du benutzt diese Funktieon, so kann dir der Angreifer jeden Wert als Datum verkaufen, den er will.

Von daher würde ich dir das schon empfehlen.

mfg

Danke, jetzt habe ich es kapiert. Letzte Frage: Funzzt das unter Vista, XP und 2000?

Gruß

Rüd

new32 14. Dez 2008 18:13

Re: Was macht Windows, was lässt es zu?
 
Das sollte unter NT4, 2k, xp und vista funktionieren.

Um sicher zu gehen solltest dus aber noch mal testen.

Rued 15. Dez 2008 09:02

Re: Was macht Windows, was lässt es zu?
 
Zitat:

Zitat von new32
Das sollte unter NT4, 2k, xp und vista funktionieren.

Um sicher zu gehen solltest dus aber noch mal testen.

Danke Dir, `mal sehen, wie ich an NT4 und 2k herankomme.

Gruß

Rüd

new32 15. Dez 2008 16:25

Re: Was macht Windows, was lässt es zu?
 
Zitat:

Zitat von Rued
`mal sehen, wie ich an NT4 und 2k herankomme.

Zufällig habe ich auf den beiden Systemen getestet: läuft!

Nur Vista wusste ich nicht.

MfG :xmas:

freak4fun 15. Dez 2008 16:28

Re: Was macht Windows, was lässt es zu?
 
Zitat:

Zitat von Sherlock
Ein bisschen OT: Es zeigt sich immer wieder, daß enorm viel Aufwand in Raubmordkopierschutzvorrichtungen gesteckt wird, der besser im eigentlich Produkt angelegt wäre. Gute Produkte machen gutes Geld, denn glückliche Kunden zahlen auch gerne.

Quelle?

Rued 15. Dez 2008 18:46

Re: Was macht Windows, was lässt es zu?
 
Zitat:

Zitat von new32
Zitat:

Zitat von Rued
`mal sehen, wie ich an NT4 und 2k herankomme.

Zufällig habe ich auf den beiden Systemen getestet: läuft!

Nur Vista wusste ich nicht.

MfG :xmas:

Nett von Dir, danke!

Wünsche eine schöne Zeit,

Rüd


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:33 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