Java-Programm lizensieren

FelixBaum

Mitglied
Hallo zusammen,

ich habe ein kleines Programm geschrieben und will das jetzt zu Testzwecken lizensieren. Das heißt, dass sich Leute bei mir eine Lizenz abholen müssen, um das Programm zu nutzen.
Jetzt bin ich auf license3j gestoßen und finde es sehr nützlich: Ich hatte vor, das auch an die Mac-Adresse zu binden, sodass man die Lizenz nicht einfach weitervergeben kann.

Oder reicht das, wenn ich mit RSA einfach eine Lizenzdatei verschlüssel und dann den Public-Key einfach mitliefere?

Was meint ihr dazu?
 

Kababär

Top Contributor
Prinzipiell, aus Testzwecken, sollte es reichen, Codes zu generieren, die du in deiner Datenbank speicherst und verschlüsselt pro Lizenz mit raus gibst. Verwaltung a la "Wie viele Nutzer pro Programm" etc kann in der Datenbank ebenfalls abgespeichert werden.

MAC-Adresse finde ich persönlich eine schlechte Idee. Leichter könnte man eine solche Lizenz nicht umgehen, denn man kann seine MAC-Adresse auslesen und auch ändern, heißt ich könnte jedem meine MAC-Adresse geben, der das Programm ebenfalls nutzen möchte.

edit: Es gibt mehrere Wege: Soll der Benutzer nur einen Code eingeben zum aktivieren des Programms? Dann könnte der oben genannte Vorschlag interessant sein.
Oder wird dem Verbraucher eine Lizenzdatei zugeschickt wenn er eine Lizenz kauft? Dann würde ich eine RSA-verschlüsselte Lizenzdatei an ihn schicken, die er einbinden kann. Das Programm muss natürlich wissen, wie es gültige Lizenzen erkennt und sollte Rückmeldung geben.
 

FelixBaum

Mitglied
Danke für die Antwort!

Ja, das mit den generierten Codes wäre auch eine Möglichkeit.

Nein, das ganze sollte halbautomatisch ablaufen a la "Hier ist die Lizenzdatei, pack sie einfach in den Ordner"

Aber wie ist es möglich, die Lizenzen an den PC oder Benutzer zu binden, ohne dass es möglich ist, die Lizenz weiter zu geben?
 

Kababär

Top Contributor
Füge deinem Programm eine Art User-ID hinzu. Die Lizenz-Datei kann dann nur für diese User-ID gültig sein. Alternativ könntest du das auch via Datenbank machen, aber dann könnte man offline entweder nicht arbeiten oder mächtig tricksen.
So würde ich es auf jeden Fall machen. Ob die Methode bewährt ist, weiß ich nicht. Fest steht, dass die Lizenz eindeutig sein muss, also muss diese eindeutige Informationen beinhalten. Leider bietet dies ein Rechner nicht unbedingt. Vor allem, weil man so gut wie alle Parameter von "Information-Getter" nach Belieben verändern kann, wenn man das Know-How hat oder Google zu bedienen weiß.
 

FelixBaum

Mitglied
Das mit der User-ID ist eine gute Idee.
Wenn der Kunde dann mehrere Lizenzen kauft, muss halt nur mitgeteilt werden, welche User-ID zu welcher Lizenz gehört. Richtig?

Aber da kann er ja immer noch kopieren und mit der selbem User-ID mehrere Kopien des Programms nutzen. Dieses könnte ich dann über einen Server lösen, der abgleicht, ob die Lizenz schon woanders genutzt wurde oder nicht? Aber ob ich den Nutzer dazu zwischen möchte, dass er beim Arbeiten mit dem Programm ständig mit dem Internet verbunden ist, ist eine andere Frage..
 

Kababär

Top Contributor
Naja es gilt halt eine 1:n Beziehung oder eben eine 1:1 Beziehung.
Falls ein User mehrere Lizenzen kauft, erhält sein Programm eben mehrere IDs.
Ob das eine optimale Lösung ist, weiß ich nicht, sicherlich nicht. Im Business wird das garantiert anders gehandelt, aber für Testzwecke sollte dies doch ausreichen.
Man kann die UserID verschlüsseln sowie die Lizenz-ID. Beides sollte der Benutzer nicht erfahren. Er erhält nur die Lizenz-Datei, die er benötigt, um mit dem Programm zu arbeiten.
Wenn du mit RSA verschlüsseln willst, solltest du deinen Public Key lieber behalten. Heißt auch, dass du ihn dir selbst erstellen musst und dich nicht an eine Registrierungsstelle wenden solltest.
 

Neumi5694

Top Contributor
Mach dir auf jeden Fall auch schon mal Gedanken darüber, wie deine Lizenzverwaltung ausschaut, wie ein User z.B. eine neue Lizenzdatei kriegen kann, wenn er Laptop/PC wechselt, ohne dass die alte weiter verwendbar ist - wenn du das Ganze schon an den PC binden willst.
 

Blender3D

Top Contributor
Eine Möglichkeit wäre ein USB-Stick als Dongle.
1) Seriennummer des USB-Stick auslesen. Der öffentliche Schlüssel
2) In der Anwendung versteckt der private Schlüssel
3) Aus beiden Schlüsseln mittels Formel einen Zielschlüssel berechnen.
4) Zielschlüssel auf den USB Stick speichern
5) Anwendung überprüft alle 30 sec. ob der USB- Stick mit Seriennummer und Zielschlüssel vorhanden ist.
 

Thallius

Top Contributor
Naja kurz den decompiler drüber gejagt, den Code der den USB und den key abfragt durch ein Return true ersetzen und das wars.

Aufwand den Schutz zu implementieren: 4-8h je nachdem wie gut der Programmierer ist.
Aufwand den Schutz zu entfernen: 30-90min je nachdem wie gut der Hacker ist.

Es lohnt sich einfach nicht....

Gruß

Claus
 

mrBrown

Super-Moderator
Mitarbeiter
ich hatte mal ein Programm, das mit der Festplattenbezeichung gearbeitet hat, ist das noch ein guter Weg, oder eher hinderlich
Genau wie oben schon gesagt, dekompilieren, Methoden die das abfragen umschreiben und fertig ;)

Vermutlich kann man die ID aber auch Softwaremäßig irgendwie ändern, bzw faxen.


Die meisten Schutzmaßnahmen sind für den ehrlichen Anwender und Programmierer eine größere Hürde, als für einen Hacker und die Nutzer der "freien" Version...
 

FelixBaum

Mitglied
Das mit dem USB-Stick ist im Ansatz ja ne gute Idee. :) aber muss ich dann nicht jedes Mal, wenn jemand eine Lizenz kauft, einen USB-Stick verschicken und dieser muss dann immer eingesteckt sein, richtig?
 

tommysenf

Top Contributor
Statt das ganze selbst zu implementieren würde ich an deiner Stelle auf bewährte Lösungen setzen:

https://truelicense.java.net
http://www.license4j.com
http://verhas.github.io/License3j/

By the way:

Der Einsatz eines Schutzes auch wenn er knackbar ist macht schon Sinn. In einem Projekt in welches ich vor Jahren mal tätig war wurde der Einsatz einer Softwareversion in 2 Versionen getrackt:

Version1: Kein Passwortschutz
Version2: Einfacher fest einkodierter Lizenzschutz (also über Dekompilierung sehr simpel zu entfernen)

Resultat war: Von Version 1 wurden ca: 39 Prozent ohne Autorisierung genutzt von Version 2 nur 2 Prozent.




 

Thallius

Top Contributor
Statt das ganze selbst zu implementieren würde ich an deiner Stelle auf bewährte Lösungen setzen:

https://truelicense.java.net
http://www.license4j.com
http://verhas.github.io/License3j/

By the way:

Der Einsatz eines Schutzes auch wenn er knackbar ist macht schon Sinn. In einem Projekt in welches ich vor Jahren mal tätig war wurde der Einsatz einer Softwareversion in 2 Versionen getrackt:

Version1: Kein Passwortschutz
Version2: Einfacher fest einkodierter Lizenzschutz (also über Dekompilierung sehr simpel zu entfernen)

Resultat war: Von Version 1 wurden ca: 39 Prozent ohne Autorisierung genutzt von Version 2 nur 2 Prozent.




Was ist denn das für eine Logik? Wenn es eine kostenlose Version gibt, dann besteht jamauch kein Grund eine kostenpflichtige zu hacken...
 

Blender3D

Top Contributor
Naja kurz den decompiler drüber gejagt, den Code der den USB und den key abfragt durch ein Return true ersetzen und das wars.

Aufwand den Schutz zu implementieren: 4-8h je nachdem wie gut der Programmierer ist.
Aufwand den Schutz zu entfernen: 30-90min je nachdem wie gut der Hacker ist.
Gibt es einen wirklich nicht hackbaren Schutz?
 

tommysenf

Top Contributor
Bleibt die gleiche Logik - warum sollte jemand den Schutz knacken, wenn es die Version ohne Schutz schon gibt?

Weil diese Version für ihn nicht Verfügbar ist. Bsp.:
Konzern A bekommt die Software ohne Schutz geliefert.
Konzern B bekommt die Software mit Schutz.

Das es verschiedene Versionen gibt wird nicht öffentlich kommuniziert. Es würde auch nichts bringen, wenn Konzern A die Version von Konzern B nutzt, da unterschiedliche Datenbestände existieren. Anhand der Logs unserer Server konnte daraufhin ausgewertet werden von wie vielen verschiedenen Clients eingesetzt wurden und welche davon sauber lizensiert waren.
 

Thallius

Top Contributor
Gibt es einen wirklich nicht hackbaren Schutz?

Jain,

Du kannst halt relevante codeteile nur übers Netz erreichbar machen nach vorheriger Authentifizierung. Oder du steckst sie in einen nicht auslesbaren dongle.
Aber jegliche Software Lösung, vor allem in einer interpretersprache wie Java ist in meinen Augen verschwendete Zeit. Die solltest du lieber in die Weiterentwicklung der Software stecken, so dass der Kunde gerne freiwillig bezahlt eben weil er von der Software begeistert ist.

Gruß

Claus
 

stg

Top Contributor
Die solltest du lieber in die Weiterentwicklung der Software stecken, so dass der Kunde gerne freiwillig bezahlt eben weil er von der Software begeistert ist.

So schauts aus. Insbesondere lässt sich auch ne Menge Geld mit Customzing und Support verdienen, falls das das Ziel ist.

Übrigens ist auch quelloffener Code dein geistiges Eigentum und ab einem gewissen Grad an Komplexität schützenswert. Heißt, je nachdem unter welcher Lizenz du deinen Code veröffentlichst, dürfen ihn andere trotzdem nicht ohne weiteres verwenden. Wenn es dann doch jemand macht und ein Konkurrent-Produkt auf den Markt bringt, bei dem deine Ideen verwendet werden, kannst du nochmal abkassieren.
Mal ganz davon abgesehen stufe ich quelloffenen Code grundsätzlich erstmal als vertrauenswürdiger ein, wenn der Publisher unbekannt ist.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
ralfb1105 Starten Java App(s) (.jar) aus einem Java Programm Allgemeine Java-Themen 18
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
E Java Programm mit Clients erweitern - Möglichkeiten? Allgemeine Java-Themen 2
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
S Java Programm (Spiel mit den Boxen) Allgemeine Java-Themen 1
A Java Programm verbessern/vereinfachen Allgemeine Java-Themen 20
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
T Java Programm in Internetseite? Allgemeine Java-Themen 4
T Java Programm frisst RAM Allgemeine Java-Themen 6
H Alter Java-Programm läuft nicht mehr. Laut strace fehlt libpthread.so.0 Allgemeine Java-Themen 3
L Java-Programm Zahlenkombinationen ausgeben Allgemeine Java-Themen 10
T Java Programm sauber beenden (Mac OS) Allgemeine Java-Themen 7
F In OSX: Java-Programm über URI-Scheme aufrufen mit Parameter? Allgemeine Java-Themen 0
itwestnet Mein Java-Programm läuft nicht in China Allgemeine Java-Themen 4
B SMS von Vodafone Mobile Connest mit JAVA-Programm lesen Allgemeine Java-Themen 0
J Java Auf anderes Programm warten Allgemeine Java-Themen 9
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
Developer_X OpenStreetMap in Java Programm einbinden Allgemeine Java-Themen 10
Developer_X Java Programm Beenden Allgemeine Java-Themen 3
T Dateien zur Laufzeit in Java-Programm packen? Allgemeine Java-Themen 3
S Java-Programm verbraucht zu viel RAM Allgemeine Java-Themen 8
S Java-Programm für "Börsenanalyse" schreiben Allgemeine Java-Themen 4
U Eclipse Java Programm beschädigt .tar.gz dateien beim Entpacken Allgemeine Java-Themen 7
M Problem mit (etwas komplizierterem) Java Programm Allgemeine Java-Themen 14
L Prüfen, ob Programm über 32bit oder 64bit Java ausgeführt wird Allgemeine Java-Themen 4
J Java Programm - ausführbare Jar Datei erstellen Allgemeine Java-Themen 2
C Programm von C++ auf Java umschreiben Allgemeine Java-Themen 27
J Java-Programm Allgemeine Java-Themen 13
I Java-Programm: Zahlen in Worte Allgemeine Java-Themen 22
P Check, welche Java Version installiert bevor ein Programm ausgeführt wird. Allgemeine Java-Themen 12
Java-Insel Wie kann ich ein Java-Programm zum "automatischen Öffner" einer Dateisorte machen? Allgemeine Java-Themen 13
O Java-Programm lastet CPU aus Allgemeine Java-Themen 8
C Registration im Web mit Java-Programm durchführen Allgemeine Java-Themen 6
R Java Programm beenden mit SIGTERM Allgemeine Java-Themen 9
T Java Programm als Batch Befehl Allgemeine Java-Themen 6
G Runtime.exec beendet Programm unter Linux, wenn Java Programm beendet wird Allgemeine Java-Themen 3
H Java-Programm nur mit SDK ausführbar? Allgemeine Java-Themen 5
C Java Programm über SSH starten Allgemeine Java-Themen 16
S jar Datei mit Java Programm öffnen Allgemeine Java-Themen 3
J Java-Programm im Hintergrund Allgemeine Java-Themen 3
Jackii Java Programm aus anderen Java Programm starten Allgemeine Java-Themen 20
Madlip Erste Schritte Java speichert Daten im Programm?!? Allgemeine Java-Themen 9
G Java Programm aus Java Programm starten Allgemeine Java-Themen 6
M Wie Java Programm mit grafischen Oberfläche versehen Allgemeine Java-Themen 2
JAVATUX Java Programm mit ATI Stream Unterstützung Allgemeine Java-Themen 3
J Java programm lässt sich in win7 nach linux install nicht mehr ausführen Allgemeine Java-Themen 18
C Mit Java in einem anderes Programm eingreifen Allgemeine Java-Themen 21
S C++/C KeyListener zusammen mit Java Programm Allgemeine Java-Themen 4
S Java Programm -System Neustart überleben? Allgemeine Java-Themen 3
S Brauche Hilfe bei Planung für JAVA-Programm Allgemeine Java-Themen 3
T Java Programm aus anderem Java Programm starten Allgemeine Java-Themen 13
J Eclipse Java Programm aus anderem Java Programm starten Allgemeine Java-Themen 14
F Anderes Java-Programm aufrufen Allgemeine Java-Themen 2
B Excel Datei in einem Java Programm mit GUI darstellen Allgemeine Java-Themen 9
M Java Programm als Dienst starten... Allgemeine Java-Themen 4
A Installation von Java ME Programm auf Sony Ericsson Handy Allgemeine Java-Themen 3
M Rein informativ - Daten aus Excel-Tabelle in Java-Programm importieren Allgemeine Java-Themen 3
J Installer für Java-Programm Allgemeine Java-Themen 5
N Programm starter in Java? Allgemeine Java-Themen 12
X Aus Java Applikation externes Programm starten Allgemeine Java-Themen 3
T Mit JNI von C++ auf ein laufendes Java-Programm zugreifen Allgemeine Java-Themen 10
H aus Java-Programm Dateien öffnen Allgemeine Java-Themen 5
Z Java Programm - xxxxx auf der Konsole ausgeben Allgemeine Java-Themen 4
T cpp Programm via jna in java nutzen Allgemeine Java-Themen 3
M Variablen an Java-Programm übergeben Allgemeine Java-Themen 3
G Java Programm mit Freischalt code entwickeln Allgemeine Java-Themen 30
clupus Meldung an laufendes Java-Programm schicken - Wie? Allgemeine Java-Themen 6
E Zweites Java Programm sichtbar starten Allgemeine Java-Themen 4
T Mit Java Programm auf Firefox zugreifen Allgemeine Java-Themen 2
Airwolf89 *.exe mit java programm ausführen Allgemeine Java-Themen 1
V Java-Programm automatisch starten Allgemeine Java-Themen 2
MQue aktuelle Wetterdaten für Java- Programm Allgemeine Java-Themen 9
O Programm mittels Java installieren Allgemeine Java-Themen 15
K Java Chat Programm Allgemeine Java-Themen 2
M Java programm über cmd öffnen Allgemeine Java-Themen 2
Schandro Datei öffnen mit... Bestimmten Dateityp mit einen Java-Programm öffnen lassen Allgemeine Java-Themen 5
N Per Java-Programm onClick ausführen Allgemeine Java-Themen 5
D mit Java das Programm "Editor" öffnen Allgemeine Java-Themen 7
M Wie Java-Programm über Batch-file starten? Allgemeine Java-Themen 8
G Logikhindernisse im Java- Programm Allgemeine Java-Themen 6
V Java-Programm nur "mit halber Kraft" arbeiten lass Allgemeine Java-Themen 11
_SeiA_ Hilfe Kleines Java Programm schreiben. Summen. Allgemeine Java-Themen 3
G Java- Programm mit bat- Datei starten Allgemeine Java-Themen 16
V Java-Programm richtig neustarten? Allgemeine Java-Themen 9
G JDBC Programm und niedrige Java-Versionen Allgemeine Java-Themen 14
oltoko PID für das laufende Java Programm herausfinden Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben