| Autor |
Beitrag |
AnkeF
Hält's aus hier
Beiträge: 2
|
Verfasst: Mi 18.05.05 13:07
Hallo,
ich möchte gern mein in Delphi geschriebenes Programm laufzeitbeschränken. D.h. nach z.B. 4 Wochen soll es einfach nicht mehr funktionieren. Ich habe keinerlei Ansatzpunkt, wie ich da rangehen könnte.
Könnt Ihr mir Tips geben?
Vielen Dank und viele Grüße
Anke
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Mi 18.05.05 13:21
Titel: Laufzeitbeschränkung
Hi,
wenn du nicht irgendwelche Sondertools in das Programm einbauen willst, könntest du vom Systemdatum ausgehen und das Installationsdatum als Basis nehmen.
Sicher wird gleich jemand sagen, dass man das Datum doch zurückdrehen kann.
Wenn ich das Datum des letzten Aufrufs aber in der Registry oder sonstwo versteckt und codiert ablege, dann prüfe, ob das momentane Datum kleiner als das letzte Aufrufdatum ist, dann könnte man dieses schon mal als Manipulationsversuch deuten und das Programm sofort beenden.
Des weiteren würde ich einen Aufrufzähler einbauen, z.B. 100x, dann Feierabend. Lässt sich sicher auch gut in der Registry verstecken.
Wenn das Programm Datumfelder wie z.B. Rechnungsdatum etc. enthält, wird sich der Benutzer sicher die Mühe machen und das Datum auf einen falschen Wert schrauben.
Aber auch hier kann man sich eine Gegenmaßnahme einfallen lassen, indem man sich das Aufrufdatum merkt, wann das Programm gestartet wurde, und ab und zu mal prüft, ob das aktuelle Datum immer noch gleich oder größer dem Aufrufdatum ist.
Wenn das Datum des letzten Aufrufs dann 4 Wochen (oder was auch immer) größer als das Installationsdatum ist, dann könnte man das Programm ja dauerhaft sperren, indem man dies wiederum in der Registry verankert.
Ich weiß ja nicht, wie sicher das Programm gesperrt werden soll, aber muss ich weiterphantasieren und mir noch mehrere Dinge ausdenken?
Es gibt sicher auch Freeware-Komponenten, die dies bewerkstelligen. Timebombed oder sowas. Aber da sind der Phantasie ja keine Grenzen gesetzt.
Gruß, Feivel
|
|
AnkeF 
Hält's aus hier
Beiträge: 2
|
Verfasst: Do 19.05.05 16:29
Titel: Laufzeitbeschränkung
Hi feivel3333,
danke für deine Antwort.
Da das alles eher unkompliziert laufen soll, habe ich mich jetzt für eine Abfrage des Datums im Programm entschieden und wenn die Zeit abgelaufen ist, soll das Programm nicht mehr funktionieren.
Bloß wie bewerkstellige ich das?
Ich habe diese Abfrage im Quellcode untergebracht. Zur Verwendung des Programms wird eine .exe generiert. Bei Aufruf dieser Datei wird doch hoffentlich dann die Datumsabfrage auch gemacht?
Gibt es einen Befehl, der einfach die .exe-Datei sofort nach dem Öffnen wieder schliesst, wenn die Laufzeit des Programms vorbei ist?
Danke für eure Hilfe.
Viele Grüße
AnkeF
|
|
3rdnuss
      
Beiträge: 139
|
Verfasst: Do 19.05.05 16:47
Noch einfacher ist, wenn bei jedem Programmstart in irgendeiner Ini Datei ein Wert eingetragen wird. Ist dieser Wert überschritten, dann lässt sich das Programm nicht mehr starten.
2.)
Bei jedem Start wird ein byte in eine Datei geschrieben. Bei jedem start wird überprüft, wie groß die Datei ist: Am Anfang 2000 bytes - nach 40 Programmstarts 2040 bytes;
Wenn die Datei >= 2040 wird das Programm geschlossen.
|
|
Fabian W.
      
Beiträge: 1766
Win 7
D7 PE
|
Verfasst: Do 19.05.05 17:16
| Zitat: | | Noch einfacher ist, wenn bei jedem Programmstart in irgendeiner Ini Datei ein Wert eingetragen wird. Ist dieser Wert überschritten, dann lässt sich das Programm nicht mehr starten. |
Is aber ziehmlich unsicher.
Ich hab das bei mir so gamcht, dass ich einfach das Datumk überprüft hab, natürlich kann mna die Uhr dann zurückstellen, aber wer will auf seinem Rechner schon die ganze Zeit n falsches Datum?
|
|
feivel3333
      
Beiträge: 190
W7
Delphi XE prof
|
Verfasst: Do 19.05.05 18:38
Du wolltest wissen, wie man das laufende Programm sofort beendet:
Beispielsweise beendet dieser folgende Code dein Programm nach 14 Tagen:
Delphi-Quelltext 1: 2: 3: 4: 5:
| if date - FileDateToDateTime( FileAge( Application.ExeName ) ) > 14 then begin Application.Terminate; exit; end; |
Das ist zwar keine sichere Methode, da man das Systemdatum verdrehen kann, aber man kann ja noch mehr Tricks veranstalten, z.B. könntest du eine Prozedur schreiben, die einen boolean-Wert aus der Registry liest, er zuvor geschrieben wurde. Dann ist es auch nach dem Rücksetzen des Datums nicht mehr möglich, das Programm erneut zu starten.
Delphi-Quelltext 1: 2: 3: 4: 5:
| if ( date - FileDateToDateTime( FileAge( Application.ExeName ) ) > 14 ) or ( WertAusRegistryBefiehltProgrammEnde = true ) then begin Application.Terminate; end; |
Nun liegt es an dir, wie sicher der Abbruch werden soll.
Gruß, Feivel
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Do 19.05.05 18:52
und ich beweis es euch dann wie total sinnlos dies alles ist ok?
Delphi-Quelltext 1: 2: 3: 4: 5:
| if date - FileDateToDateTime( FileAge( Application.ExeName ) ) > 14 then begin Application.Terminate; exit; end; |
der otto normalverbraucher kann das halt nich umgehen, aber sowas ist mir lieber alswenn direkt wieder in die registry geschrieben wird, weil jeder der bischen programmieren kann wird das eh wieder umgehen können.
und gegen einen cracker kommste eh nicht an also otto normal delphi programmierer
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
3rdnuss
      
Beiträge: 139
|
Verfasst: Do 19.05.05 20:40
uall@ogc hat folgendes geschrieben: |
und gegen einen cracker kommste eh nicht an also otto normal delphi programmierer |
.. und auch nicht gegen den ein oder anderen, der bei dieser Crackme-welle in der DP mitgemacht hat..
Aber ich glaub mit einem Dissembler wird das wohl (fast) jeder knacken können. 
|
|
Fabian W.
      
Beiträge: 1766
Win 7
D7 PE
|
Verfasst: Do 19.05.05 20:45
|
|
3rdnuss
      
Beiträge: 139
|
Verfasst: Do 19.05.05 20:57
Also wenn jemand darauf aus ist das Programm zu "knacken", dann wird er es mit Sicherheit auch schaffen.
Aber ich denke, dass das nicht so viele Leute seien dürften (oder ist dein Programm wirklich so überragend besser als andere?)
Wie dem auch sei, cracker gibt es, und wird es auch immer geben
Und sag mal bescheid, wenn dein Programm fertig ist.
Ich würde mich bereit erklären, dieses auf Sicherheitslücken zu "testen" 
|
|
Fabian W.
      
Beiträge: 1766
Win 7
D7 PE
|
Verfasst: Fr 20.05.05 07:12
Sicherheitslücken wird's da massig geben, und werden insgesammt dann 2Anwendungen sein die das Prog bilden, kann noch dauern, aber ich stells dannn sowieso ins DF (nur ne Probeversion, die nach einiger Zeit gesperrt wird)
|
|