Autor Beitrag
Svenkan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 55

WinXP
Delphi 7 Enterprise
BeitragVerfasst: Mi 07.03.07 18:12 
Hey Leute!
Folgende Frage (wusste jetz nich so Recht, wohin damit..):
Ich wollte in mein Programm eine Art Lizenzabfrage einbauen.
Und zwar soll es die Datei lizenz.txt geben, in der dieser Code drin steht. Im MainMenu gibt es nun zunächst den Punkt 'Lizenz', woraufhin sich die Form 'Lizenz' öffnet.
Nun soll darin die Möglichkeit gegeben sein, seine Lizenz einzulesen, wobei direkt der dazugehörige Schulname aus dem Code erstellt werden soll.
Nur hab ich null Ahnung, wie das mit dem Code machen soll. Gibt es dafür gute Beispiele?
Den Code soll natürlich nur ich erstellen können. Die Benutzer bekommen diesen dann von mir halt zugeschickt (bspw. per Mail).
Auf diese Art bin ich gekommen, als ich das Programm VTPlan gefunden habe.
Falls der eingelesene Code falsch ist, soll es einen Hinweis geben.


Moderiert von user profile iconTino: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 07.03.2007 um 17:17
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mi 07.03.07 19:12 
Du könntest einen Text nehmen, der vielleicht so aussieht:

ausblenden Quelltext
1:
<Länge von Name der Schule><Anzahl von Name der Schule><Name der Schule><Name der Schule> ...(so oft wie in <Anzahl von Name der Schule> steht)...<Name der Schule>					


Diesen mit deinem PrivateKey asymetrisch Verschlüsseln (hierzu googlen, da finden sich sicher Algorithmen).
Dann schickst du das an dein Programm, welches den PublicKey enthält und den Text damit entschlüsselt (intern, nicht auf die Festplatte!) Dann überprüfst du, ob <Länge von Name der Schule>*<Anzahl von Name der Schule> = Die Anzahl der Zeichen hinter <Anzahl von Name der Schule>. Wenn ja, hast du einen gültigen Lizensschlüssel und kannst <Name der Schule> auslesen. Wenn nicht, hat irgendjemand an der Sache rumgepfriemelt.
Probleme:
1.Theoretisch lässt sich über den PublicKey der PrivateKey errechnen, wodurch Cracker in der Läge wären, selbstgeschriebene Lizensdokumente zu verschlüsseln.
2.Der PublicKey ist ja hardgecodet im Programm, lässt sich also per ResourceHacker auslesen (Ohne große Schwierigkeiten - darum vielleicht ein paar ähnlich lautende Konstanten deklarieren und dort falsche Schlüssel speichern, zur Verwirrung), dadurch ist man als Cracker in der Lage, die Original-Lizensdatei zu entschlüsseln und rückschlüsse auf deren Aufbau zu ziehen.
3.Der entschlüsselte Lizenstext dürfte im Speicher zu finden sein, dadurch also auslesbar, siehe punkt 2. Um das zu verhindern, sofort Speicher überschreiben, wenn der Text nicht mehr benötigt wird.

Es gibt kein sicheres Verfahren, um derartige Lizensverwaltung durchzuführen. Früher oder später finden Cracker *immer* einen Weg. Aber die oben beschriebene Methode ist vielleicht ein Ansatz ;)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.