![]() |
Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Hallo zusammen
Um es mal vorweg zu nehmen, mir ist bewusst, dass JEDE Schutzmasnahme umgangen werden kann. Es geht mir hier nicht darum den ultimativen Schutz zu bekommen, sondern eine etwas verbesserte version eines simplen IF Hintergrund: Ich schreibe aktuell eine Software, welche ich gerne zusammen mit Lizenzen verteilen möchte. Es geht hierbei auch um einen Lerneffekt und darum sich einmal mit diesen Techniken zu beschäftigen. Ich habe mir ein Sicherheitskonzept überlegt, welches grundsätzlich sehr gut funktionieren sollte. Zusammen mit der Software, wird ein Lizenzschlüssel mitgegeben. Dieser wurde zuvor auf einem Server hinterlegt. Wenn nun die Software gestartet wird, prüft sie ob es eine Lizenzdatei gibt. Wenn nein, startet der Aktivierungsdialog. 1. Nun übermittelt die Software dem Server eine PC Kennung sowie den Lizenzkey. 2. Der Server prüft, ob die Software bereits aktiviert wurde. Wenn nein, erzeugt dieser eine Lizenzdatei. 3. Die Lizenzdatei wird mit dem Lizenzkey und der HWID verschlüsselt. 4. Beim erneuten Starten, findet die Software die Lizenzdatei und versucht diese mit dem Key und der HWID zu entschlüsseln. 5. Wenn dies erfolgreich geschehen ist, und der Inhalt der Datei korrekt ist, gilt die Software als lizenziert. Mein Problem: Das ganze Konzept mag noch so gut sein, schlussendlich basiert alles auf einer simplen IF Abfrage innerhalb der App. Wie könnte man nun, mit geringem Aufwand, die Sicherheit ein wenig erhöhen? Soll man die Prüfung in einem Timer durchführen, damit man beim Debuggen nicht automatisch an diese Stelle kommt? Ich möchte lediglich die Hürde ein klein wenig erhöhen und etwas über die Techniken welche es gibt lernen. Mir ist klar, dass, egal was ich mache, es wird immer knackbar sein. Und noch so nebenbei, entspricht mein Lizenzierungskonzept dem üblichen Vorgehen? Danke schonmal. |
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Ich mach es genauso. Lasse pro Lizenz drei Hwids zu. Stelle mir aber die gleiche Frage wie Du. Aus if ein if not zu machen schaffen ja viele...
|
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Zitat:
Freut mich, dass auch andere die gleiche Idee hatten. Vielleicht findet sich ja jemand hier im Forum, der uns ein wenig Licht ins Dunkle bringt. Ich vermute mal, das einzige was man machen kann, ist die Überprüfung an verschiedenen Orten zu verankern. Und möglichst so, dass gewisse Checks zu willkürlichen Zeiten oder Ereignissen stattfinden. Dadurch ist der Aufwand vermutlich grösser bis man alle Checks gefunden hat. |
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Um meine Programme vor unerwünschten Änderungen zu sichern, schreibe ich per AfterCompile-Experten die MD5-Checksumme in die Exe-Datei.
Beim Starten der Exe-Datei prüft diese zuerst, ob die MD5-Checksumme in der Exe-Datei mit der von ihr selbst errechneten übereinstimmt. Ist dem nicht so, gibt es eine Meldung und sie beendet sich. Wer also das Programm ändert, um Deine Lizenzüberprüfung zu umgehen, dürfte dann an dieser Prüfung scheitern oder müsste auch noch eine neue MD5-Checksumme ermitteln, diese an die richtige Stelle schreiben und müsste außerdem wissen, von welchem Teil der Exe-Datei eigentlich die MD5-Checksumme gebildet worden ist. Wer allerdings das Programm zur Laufzeit, wenn es bereits im Speicher ist, dort irgendwie patch, wird diese "Sicherungsmaßnahme" wohl auch umgehen können. |
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Danke für den Input mit der Checksumme.
Dies ist jedoch im Endeffekt auch nur eine simple "IF" Abfrage. Wobei ich dir recht gebe, dass dies eine zusätzliche, vermutlich mühselige, Hürde ist. |
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Ja, es ist "nur" eine IF-Abfrage.
Aber: Wer daran vorbei will, muss auch erstmal wissen, dass es sie gibt, damit er sie umgehen kann. Dazu muss er wissen, welche Teilmenge er für irgendeinen Hashwert braucht, von dem er auch noch wissen muss, wo er steht und welcher Algorithmus dahinter steckt. Damit sind wir bei deutlich mehr, als "nur" einem IF. Apropo: Viren, die die Exe manipulieren, werden so auch entdeckt, da das Programm eine Selbstprüfung auf Unverändertheit hat. Und den Virus, der genau Deine Sicherungsmechanismen aushebelt, die sonst kein Mensch auf dieser Erde hat/kennt, wird es so schnell nicht geben. Davon abgesehen: Was für "hochinteressante" Software vertreibst Du (zu welchen Kosten), dass sich der Aufwand der Umgehung der Lizensierung dafür (mit allen rechtlichen Folgen) "lohnt"? Und vor allem: Wie hoch ist der bisher (und zukünftig vermutete/erwartete) wirtschaftliche Schaden, so dass sich die Investition in eine hochkomplexe und sichere Lizenzverwaltung für Dich lohnt? Ist Deine Software hardwaregebunden? Steht das im Lizenzvertrag? Oder darf ich sie auf meinem Arbeitplatzrechner und auf meinem Notebook nutzen? Was ist, wenn ich mal den Rechner austausche? Abgesehen davon: Meine Firewall läßt kein Programm ins Netz, wenn ich dies nicht ausdrücklich erlaube. Damit würde Deine Lizensierungart, mit "Wir gucken mal beim Server nach" bei mir scheitern. Software mit Deinem "Lizensierungsmodell" käme bei mir nicht auf den Rechner. Aber das ist ein anderes Thema. |
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Zitat:
Einer hier im Forum hat berichtet, dass er seine Software, welche er für 7.50EUR angeboten hat, auf einer Warezsite gefunden hat inkl. Crack. Zitat:
Den Aufbau einer solchen Lizenzverwaltung finde ich eine spannende Sache! Zitat:
Zitat:
Zitat:
Zitat:
Du kannst die Software dann dennoch aktivieren. Die alte HWID wird einfach deaktiviert. Zitat:
Die Software kommuniziert ja nur bei der aktivierung mit dem NEtz. dannach nicht mehr. Zudem hast du die Möglichkeit, das Lizenzfile auf einer Webseite zu generieren, ohne mit der Software ins Netz zu müssen. Zitat:
Ich nehme an du benutzt Linux. Denn bei Windows läuft die Aktivierung ja genau gleich ;) |
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Zitat:
In der Konsequenz wirst Du dann auf immer mehr Software verzichten. Die Softwareindustrie fängt nämlich an, diese Art der Kunden einfach auszuklammern. Und das SaaS-Modell erzwingt es ja gerade, das die SW ab und zu mal mit einem Server redet. |
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Zitat:
Wobei dies bei meinem Modell nicht notwendig ist. Der Internetzugang wird nur zu beginn benötigt. Dannach erfolgt die authentifizierung durch das Lizenzfile. Hat man kein Internet auf dem PC, kann man das Lizenzfile auch über eine Webseite oder per E-Mail beantragen und kopieren. |
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Bei
![]() |
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Eine Möglichkeit zur Verschleierung ist auch mit IsDebuggerPresent irgendwo beim Start zu prüfen, ob ein Debugger aktiv ist. An der Stelle wird dann aber nur ein Flag gesetzt, das später in eine Rechnung einbezogen wird. Dann geht man verschiedene Wege. Wenn dann jemand vermeintlich die Software knackt, funktioniert sie hinterher trotzdem nicht.
Natürlich kann man auch das umgehen, aber es ist erst einmal nicht so offensichtlich warum sich die Software nicht so einfach knacken lässt. Denn bei heutiger Software kannst du ja nicht den kompletten Assemblercode durchlaufen. Sprich du gehst meistens von der Stelle aus, an der die Software aufgrund einer falschen Lizenz aussteigt. Oder an der die Lizenzinformationen gelesen werden usw. Wenn an der Stelle dann aber ein ganz anderer Code ausgeführt wird, wird es schwieriger. |
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Zitat:
|
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
An der Stelle finde ich eine Lösung sinnvoll wie sie bei Norton Internet Security existiert. Ich muss mich dort mit meinem Account anmelden um eine Lizenz auf einen anderen PC zu übertragen und kann den PCs auch Namen geben.
Mit einer schon registrierten Seriennummer alleine kann also niemand etwas anstellen. |
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Zitat:
Wenn Du für Dich entschieden hast: "Ich mache das, weil mich interessiert, wie ich da ein sicheres Linzensierungskonzept hinbekomme." Dann ist meiner Meinung nach jeder Aufwand und jede (auch noch so schräge Idee) gerechtfertigt. Nur: Wenn Du das hinbekommst, dann verkaufe nicht Deine Software, sondern das Lizensierungskonzept, es wird sicherlich einige geben, die daran interessiert sind und (hoffentlich) auch ordentlich bezahlen ;-) Zitat:
Alle Dienste, die "nach Hause" telefonieren sind grundsätzlich deaktiviert. War ein Update erforderlich, so habe ich bestimmt, wann es durchgeführt wurde. OpenOffice, FireFox und Acrobat sind so konfiguriert, dass sie sich nicht automatisch aktualisieren, sondern nur auf meine Anforderung. Delphi 7 telefoniert auch nicht und der Rest gehört entweder zum Betriebssystem oder ist selbst programmiert bzw. "gängelfreie", gekaufte Software. Zitat:
Also nicht am Arbeitsplatzrechner und unterwegs am Laptop, bzw. zwei Lizenzen erforderlich. @Dejan Vu Wenn ich "Software as a Service" nutze, dann "will" ich ja eine Software im Netz nutzen, dann muss ich auch damit leben, dass die Server dieser Software genutzt werden. Aber eine lokal auf meinem Rechner installierte Software, die für ihre eigene Funktionalität keinen Server im Netz benötigt, muss auch keine Verbindung zu einem Server in einem Netz aufbauen. |
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Zitat:
Neben den "normalen" softwareseitigen Lösungen wie es auch hier eine wäre, gibt es auch die Möglichkeit einen Dongle zu benutzen. Das machen wir auch. So ein Dongle kann zum Beispiel eine Berechnung oder einen anderen Teil des Codes ausführen, ohne den die Software nicht lauffähig wäre. Auch das kann man zwar patchen indem man diesen Code in der Exe einbaut, aber der Aufwand ist sehr hoch. |
AW: Überprüfung einer "Lizenz" möglichst sinnvoll gestalten
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 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