Java Bitte um Tipps und Tricks Java Applikationen zu schützen

PEASANT KING

Commander
Registriert
Okt. 2008
Beiträge
2.412
Hallo Leute,

ich stehe langsam vor der Entscheidung mich ein wenig mit Kopierschutz von Java Anwendungen zu beschäftigen und Frage mich, ob sich hier Leute schon Gedanken über etwaige Mechanismen gemacht haben ?

Am liebsten wäre mir ein Serial + Registrierungsmodell, doch ist dieses ja auch sehr leicht auszuhebeln, wenn man den Code der fertigen .jar modifiziert.

Ich bin gespannt auf eure Antworten.
 
Evtl sowas? link
Diese Token Systeme sind das einzige was meiner Erfahrung nach wirklich hilft. Dieses spezielle Produkt kenne ich allerdings nicht.

Edit: benutzen selbst Software die Codemeter dongles verwendet. ist schon bissl nervig das mit dem stick, aber scheint bei Softwareherstellern recht beliebt zu sein. Hier ist noch der link für Entwickler die Codemeter nutzern wollen link
 
Zuletzt bearbeitet:
Oder was die Spielehersteller immer wieder gerne machen:
Beim Programmstart ist eine INternetverbindung notwendig damit quasi übers Internet das "ok, Programm darf gestartet werden" gesendet wird.
Das kann man natürlich beliebig verkomplizieren inkl. Rechnerabhängiger Verschlüsselung.. kommt dann auf die Größenordnung deines Projekts an und mit was für Kopierversuchen du rechnest.
Als Tipp: Das Datum mit einer eigenen HashFunktion.

Funktionierende Schutzmaßnahmen sind aber immer sehr kompliziert wenn das Programm einmal in einer virtuellen Maschine gestartet werden konnte (auch Hardwaredongle). Diese kann man einfrieren / duplizieren etc und dein Programm bekommt es wahrscheinlich nicht mit. Spiele sind da nicht so betroffen da sie aus Performance-Gründen in ner VM nicht toll laufen.
Da hilft es dann evtl nur noch regelmäßig zur Laufzeit die Existent des Dongle bzw die Serverkommunikation + Antwort zu prüfen.
 
Was mir so Sorgen bereitet ist das simple decompilieren der .jars somit ist es ein leichtes auch den Algorithmus einer Online Authentifizierung zu knacken.
 
Evtl lagerst du bestimmte essentielle funktionen und den kopierschutz auf native methoden um und legst sie als binärdatei mit. (So kann auch verhindert werden, dass jemand die native methode aus dem Jar entfernt, denn dann würde das programm nicht mehr richtig laufen. Nur mit ".class" dateien wird es ein leichtes sein die rückgabewerte für den kopierschutz zu manipulieren. Dazu noch den Code vor der Kompilierung scramblen bzw. komplexer machen.

Prinzipiell macht eh kaum noch jemand Desktopanwendungen mit Java. Die Nachteile überwiegen einfach um ein Vielfaches im vergleich zu anderen Umgebungen (Höchstens noch wenn eine gewisse Plattformunabhängigkeit bestehen soll)..

Die wahre Stärke von Java ist das Int(ra/er)net. JavaEE/JSF
 
Zuletzt bearbeitet:
DJ_We$t schrieb:
Was mir so Sorgen bereitet ist das simple decompilieren der .jars somit ist es ein leichtes auch den Algorithmus einer Online Authentifizierung zu knacken.

Es gibt einige Möglichkeiten das dekompilieren bzw. die Analyse des Bytecodes zu erschweren. Leistungsfähige Obfuscation Tools wie Zelix Klassmaster verändern den Bytecode in einer Weise, die z.B. einige Dekompilierer austeigen lässt. Natürlich hält das Experten nicht davon ab, den Code zu analysieren. Das gilt aber für alle Ansätze. Ist immer eine Frage des Aufwandes.

Ich würde mir - gerade zu Anfang - nicht allzu viele Sorgen um solche Dinge machen. Wenn Deine Anwendung gut ist und die P/L stimmt, wirst Du auch Käufer finden. Mach es dem potentiellen Kunden möglichst einfach, die Software zu testen und zu kaufen!
 
such doch einfach mal nach "java obfuscator"

hier ist zb eine liste:
http://proguard.sourceforge.net/#alternatives.html

beim token verfahren kannste nach dem decompile wirklich nicht mehr viel lesen.
zumindest würdest mit gängigen hackertools, die den speicher zur laufzeit analysieren und manipulieren (wie heißen die dinger nochmal? ahja disassembler?), genauso viel bzw. wenig sehen.
 
Cracks lesen Bytecode wie der gemeine Entwickler Sourcecode. Pures Umbennen der Token hilft da nicht viel.
 
Danke für die Liste, ich habe schon ProGuard getestet, allerdings gibt der mir nur Fehler raus wenn ich versuche mein Projekt zu obfuscaten.

Ich muss mich später mal damit beschäftigen, mein Projekt ist lange noch nicht soweit released zu werden.
 
Wenn du eine schützenswerte Software geschrieben hast und großes Risiko besteht, dass die dann wie doof kopiert wird, dann hast du mit Java (oder ähnlichen Sprachen) einfach die Ar'schkarte gezogen.

Ein Laie lässt sich durch obfuscated-Code verwirren, aber wer dein Code will, der bekommt ihn. Meist schadest du dir selbst damit, weil so Sachen wie Laufzeitentschlüsselung nur Leistung kosten und das für Hans Otto zu Hause dann so aussieht, als ob du nen schlechter Programmierer wärst, weil das Programm 10Sekunden zum Laden brauch auf seiner 700Mhz Maschine.

Sachen aus dem Internet nachladen oder "Erlaubnis" zum Ausführen kannst du auch vergessen, weil dann dein Programm nur läuft, wenn der Kunde(Benutzer whatever...) Internet hat. Gängelung hoch 10 in 99% der Fälle.
Man schneidet einfach den Traffic mit, liest ihn aus, bastelt sich was zu Hause selbst und schon Umgangen oder ändert den Code. ("Raubkopierer sind dann von der Gängelung befreit").
 
Zuletzt bearbeitet:
Zurück
Oben