Ich habe einige Beiträge hier und Artikel im Internet gelesen, aber ich kann mir kein auf seriellen Schlüsseln basierendes System für meine Anwendung vorstellen.
Ich habe das gelesen, aber ich kann den Code nicht in Java umwandeln und ich bin auch nicht sehr vertraut mit den Begriffen.
Welche mögliche Einsicht können Sie mir dazu geben? Im Idealfall wird meine Anwendung zum Verkauf stehen, aber ich erwarte nicht, dass sie sehr beliebt ist. Es macht mir nichts aus, wenn sie geknackt wird, wenn ich Nutzer habe, die das Produkt schätzen und es kaufen, aber ich möchte es vermeiden geknackt. Bitte sei so genau wie möglich, ich bin etwas neu in Java.
Vielen Dank im Voraus.
Es ist nicht so schwer, wenn Sie in Ihren Anforderungen etwas flexibel sind - vielleicht würde das folgende Schema für Sie arbeiten.
Sie könnten einfach K = [SN, H ([X, SN, Y])] erzeugen, was die Verkettung einer inkrementierenden Seriennummer mit einem Hash ist, wobei der Hash eine sichere Hash-Funktion der Verkettung der Serie ist Anzahl zwischen den eindeutigen Konstanten X und Y, die geheim sind "Salz", das Sie verwenden, um die Verwendung von Rainbow-Tabellen zu verhindern .
Verwenden Sie einen bekannten sicheren Hash-Algorithmus (z. B. SHA-1 oder SHA-2; MD5 ist wahrscheinlich auch ausreichend, da die bekannten Schwachstellen für MD5 Kollisionsangriffe sind und nicht Primage-Attacken ) und Sie sollten alles in Ordnung bringen, zumindest soweit der serielle Schlüsselteil reicht (Sie werden wahrscheinlich zwei Leute verhindern wollen Verwenden Sie den gleichen Schlüssel).
Die andere Sache, die Sie tun können, die hilfreich ist, ist K = [SN, T, H ([X, SN, T, Y])] - benutzen Sie sowohl die Seriennummer als auch einen Zeitstempel. Dies kann verwendet werden, um nur ein enges Verwendungsfenster für den seriellen Schlüssel zuzulassen: Es ist innerhalb von N Sekunden des Zeitstempels gültig, so dass eine Wiederverwendung des Schlüssels außerhalb dieses Fensters verhindert würde.
Kodieren / dekodieren Sie K dann zu einer Repräsentation, mit der Benutzer den Schlüssel einfach eingeben können (z. B. base64).
Es ist am besten, einen einfachen und transparenten Gesamtalgorithmus zu haben - Verschleierung hilft Ihnen nicht, wenn jemand Ihr Schema rückentwickelt.
Ich war sehr an diesem Artikel interessiert, also habe ich den Code in Java implementiert. kann nützlich sein
%Vor%Das Sichern von Anwendungen im Allgemeinen ist keine einfache Aufgabe. Viele Unternehmen investieren viel Geld, um neue Sicherungsalgorithmen zu finden, die alle sehr schnell geknackt werden.
Das Sichern von Java-Anwendungen ist etwas schwieriger. Jeder in Ihrer Anwendung eingebettete Verifikationsalgorithmus kann dekompiliert werden, so dass ein Serienschlüsselgenerator ziemlich einfach zu erstellen ist.
Ein guter Ausgangspunkt ist der Artikel, den Sie gegeben haben. Es zeigt Ihnen, wie Sie ein Schlüsselverifizierungssystem erstellen und Schlüssel für Ihre (legitimen) Benutzer generieren.
Nachdem ich einen solchen Algorithmus implementiert habe, würde ich Ihnen vorschlagen, den Quellcode ein wenig zu sichern, damit die Dekompilierung ein wenig "kniffliger" wird. Verwenden Sie Code-Verschleierungstechniken, um die Implementierung Ihres Verifikationsalgorithmus zu verbergen. Dies macht auch die Aufgabe schwieriger für Leute, die versuchen, Ihre Anwendung zu knacken, indem Sie nur den Byte-Code ändern.
Eine gute Technik könnte sein, Ihren Schlüsselverifikationsalgorithmus auf einem entfernten Server zu exportieren. Der Client sendet den Schlüssel an den Server, der mit einem "Validierungscode" antwortet, um Ihrer Anwendung mitzuteilen, dass Ihr Schlüssel gültig ist. Dies hindert Benutzer jedoch nicht daran, die Anwendung so zu ändern, dass alle Schlüsselüberprüfungsverfahren entfernt werden. Und dies könnte für legitime Benutzer, die keine 24-Stunden-Internetverbindung haben, sehr ärgerlich sein. Ich denke über Steam nach, das die Schlüsselgültigkeit bei jedem Start im Internet überprüft und viele Benutzer nervt.
Um eine gute Schutztechnik zu finden, schauen Sie sich um und versuchen Sie herauszufinden, wie andere Menschen arbeiten, welche Techniken funktionieren, welche nicht. Sie sind viele Beispiele (insbesondere Videospielindustrie). Bedenken Sie jedoch, dass selbst die besten Unternehmen ihre Anwendungen nicht richtig sichern können. Keine Techniken sind unzerbrechlich.
Tags und Links java