2012-05-11 6 views
13

Ich habe ein sehr großes Problem. Das ist "Wie erstelle ich eine Lizenz für meine Software".Wie erstelle ich eine Lizenz für meine Java Software?

OK, denken dies ist mein Lizenzschlüssel ist - 12345YW

, wenn der Benutzer diesen Lizenzschlüssel eingeben, sollte die Software ihm erlauben, die Software zu nutzen. Gut, nachdem der Benutzer den Lizenzschlüssel eingegeben hat, muss sich meine Software daran erinnern, dass er den gültigen Schlüssel eingegeben hat, richtig? (Denn ab dem nächsten Mal muss er den Lizenzdialog nicht mehr öffnen) Meine Frage ist, wie kann ich meinen Software zu erinnern, der Benutzer hatte die Lizenz eingegeben? In windowsbasierten Apps geben die meisten von ihnen einen Eintrag in die Windows-Registrierung ein. Kann ich das Gleiche tun? (Was ist dann mit Ubuntu und Mac?)

Ich dachte daran, eine .TXT-Datei zu schreiben, damit m Software es lesen und feststellen kann, ob eine Lizenz eingegeben wurde oder nicht. Aber das ist das sicherste System, das ich mir vorstellen kann.

Also, wenn ich den oben genannten Lizenzschlüssel eingeben, wie kann ich meine Software daran erinnern? Ich bin wirklich froh, wenn Sie mir auch ein Codebeispiel geben können (ich weiß nicht, wie ich die Registrierung bearbeiten soll, im Falle einer Windows-Registrierung usw.). Bitte helfen Sie mir ...

+4

Die Software zu "erinnern", ist einfach. Machen Sie es nicht trivial zu hacken ist etwas anderes ... – Mysticial

+0

Verwenden Sie license4j Anwendung wird es Ihnen helfen ... überprüfen Sie ihre Videos in youtube –

Antwort

18

Lizenzierungssoftware ist noch kein gelöstes Problem - oder zumindest so sicher, ohne die Benutzer zu belästigen, und ohne in größere Infrastruktur zu investieren, ist nicht gelöst. Die Position/der Mechanismus, nach dem Sie den Lizenzstatus speichern, ist meistens irrelevant - die Registrierung ist nicht sicherer als eine Textdatei - es dauert nur Sekunden, um auf den Inhalt zuzugreifen und den Eintrag in einem Remote-Backwater zu "verstecken" der Registry tut nicht viel zu helfen.

Vermutlich hat Ihre Software eine Art Persistenz-Ding (Datenbank? Dateisystem?); Sie können den gleichen Persistenzmechanismus verwenden, um den Registrierungsstatus zu speichern.

Natürlich kann alles, was Ihre Software lesen/schreiben kann, von Personen aufgerufen werden, die versuchen, unbefugten Zugriff auf Ihre Software zu erhalten. So können Sie den Datensatz verschlüsseln; dann haben Sie das Problem, den Schlüssel für diesen Verschlüsselungsmechanismus zu verwalten; afaik, dafür gibt es derzeit keine robusten Lösungen.

Also, dann haben Sie vielleicht einen "Lizenzserver" im Internet; Ihre Software liest z. B. eine eindeutige ID für Ihren Computer ((MAC address), sendet sie an Ihren Lizenzserver und lässt den Server den Lizenzstatus zurückgeben. Dies ist wiederum ziemlich umständlich und Sie müssen Ihre Benutzer jetzt online zur Verwendung Ihrer Software anmelden.

Wenn Ihre Software für die Benutzer attraktiv ist, können Hacker den Schutz des Lizenzschlüssels in wenigen Tagen brechen und detaillierte Anweisungen im Internet veröffentlichen. Apple bemüht sich außerordentlich, die Software auf dem Iphone/Ipad zu schützen, und Jailbreak-Apps entsperren sie.

Meiner Meinung nach, wenn Ihre Software einen Umsatz von mehreren zehn Millionen Dollar wert ist, sollten Sie das Leben für Ihre Benutzer so einfach wie möglich machen und sich nicht zu viele Gedanken über den Sicherheitsaspekt machen - verwenden Sie etwas von der Stange (wie @bunting empfiehlt), oder vereinbaren Sie eine Textdatei.

Insbesondere würde ich:

  • Prüfung für das Vorliegen einer gültigen Lizenzdatei beim Start der Anwendung
  • wenn die Lizenzdatei nicht vorhanden ist, den Benutzer auffordern, einen Lizenzschlüssel
  • eingeben vergleichen, dass Schlüssel mit Ihrem Lizenzschlüssel
  • schreiben Sie eine "gültige" Datei in das Dateisystem, in Ihrem App-Verzeichnis; Alternativ können Sie eine vorhandene Konfigurationsdatei ändern.

Dies ist trivial leicht zu brechen; damit du einen Schritt weiter gehen kannst.

Erstens sind Java-Anwendungen leicht zu dekompilieren, und ein Angreifer könnte leicht Ihre "Lizenz" -Konstante lesen. Sie sollten einen Obfuscator verwenden, um dies zu erschweren (wenn auch nicht unmöglich).

Zweitens könnten Sie Ihre lokalen Lizenzdaten verschlüsseln; Auch das würde es dem völlig zufälligen Hacker schwerer machen. Sie könnten einige lokale Daten in das Verschlüsselungsschema einbeziehen, damit ein Hacker Ihre Anwendung nicht einfach mit einem funktionierenden Lizenzschlüssel neu verteilen kann (z. B. durch Multiplikation des Lizenzschlüssels mit der MAC-Adresse des Computers).

In beiden Fällen "hardwiring" Sie die Lizenz in die App; Es gibt Bulletin Boards, auf denen Hacker Lizenzschlüssel für Anwendungen veröffentlichen, und Sie können nur dann antworten, wenn Sie eine neue Version der App mit einem neuen Schlüssel ausstellen.

+3

Oder noch besser, ein einfaches Pop-up-Sprichwort "Hallo, Sie können diese Software so oft verwenden wie Sie möchten, aber bitte, wenn Sie es nützlich finden, senden Sie mir etwas Liebe über Paypal". – mcfinnigan

+0

Ja, @mcfinnigan, das wäre besser - obwohl ich das als Unannehmlichkeit zähle - "nagware" verschwindet sehr schnell von meinem PC ... –

+0

gewährt. Die nettere Nagware nagt nur einmal :) Aber ja, ich verstehe deinen Standpunkt. – mcfinnigan

3

Es scheint, als ob Sie versuchen, Lizenzierung in Ihre Software zu bauen. Haben Sie darüber nachgedacht, eine Bibliothek dafür zu verwenden, anstatt sie manuell zu machen? Vielleicht werfen Sie einen Blick auf True License, sollte es tun, was Sie brauchen.

+0

Vielen Dank für die Antwort Bunting, ich schätze es wirklich. Wie auch immer, ist das kostenlos? (da es "TrueMirror Dateisynchronisation Anwendung, die für eine kostenlose Testversion bei http://truemirror.schlichtherle.de/" verfügbar ist). –

+0

Siehe die Lizenzierungsseite: http://truelicsen.java.net/license .html –

+0

Danke viel bunting :) Ich schätze es wirklich :) –

6

Ich bin überrascht, eine Möglichkeit wurde übersehen. Die einfachste Möglichkeit, Daten vor einem nicht vertrauenswürdigen Client zu schützen, besteht darin, den Client niemals zuzulassen. Mehrere Anwendungsarchitekturen ermöglichen dies: eine Webanwendung, ein Desktop-Client, der auf einem Remote-Server RPC-fähig ist, oder ein Thin-Client mit hoher Performance, der eine Verbindung zu einem virtualisierten Desktop auf einem Remote-Server herstellt. Web-Apps sind aufgrund ihrer Vorteile im Bereich Installation, Datensicherung und Wartung bereits beliebt.

Also, anstatt zu versuchen, eine Ehre Comp Sci Ph.D zu erhalten, indem Software machen, die eine Sicherheitsrichtlinie des Unternehmens auf einem bösen Client erzwingt ...

(sehr unwahrscheinlich)

... Sie setzen Sie das geistige Eigentum einfach auf einen vertrauenswürdigen Server und der Kunde hat nur die Benutzerschnittstelle (und nicht-vertrauliche Logik). Diese Strategie hat ihre eigenen Fehler. Die Erfolgsbilanz ist jedoch viel besser als der Kopierschutz.

Hinweis: Ein Bonus ist, dass Sie einen stetigen Strom von Einnahmen für das "Verwalten" der Software für Ihre Kunden erhalten.