Webarchive (war): Code verschleiern

derMicki

Mitglied
Hallo liebe Mitglieder,
für die folgende Frage habe ich vieles gesucht, probiert und für nicht zielführend gesehen. Vielleicht hat hier jemand eine Idee.
Bestimmt bekanntes Problem:
Wir haben eine JSF-Anwendung erstellt. Diese läuft auf einem Tomcat. Wir möchten diese gerne vermarkten, da kommt das Problem mit dem Decompilieren von Code. Java-Code, sowie die Facelets.
Ich habe schon mirt Progurad versucht, ist gut, doch letztlich kann doch einiges nachvollzogen werden, also nicht wirklich nutzbar.
Kurz, gibt es eine, mehrere, Möglichkeit(en), den Code so abzusichern, dass er nicht mehr lesbar, nicht veränderbar ist?

Danke im Voraus
 

LimDul

Top Contributor
Technisch ist das unmöglich, wenn die WAR bereitgestellt wird, kann sie immer decompiliert werden und damit verändert werden. Man kann nur mit so Sachen wie Pro Guard eine Obfuscation reinbringen, das der decompilierte Code schwerer lesbar wird. Komplett verhindern geht nicht.
 

LimDul

Top Contributor
Wäre mir neu, dass das ginge. JIT steht für "Just in Time", das macht die JVM bei Bedarf für einzelne Abschnitte. Und das wird für einen Tomcat nicht funktionieren.

Ich würde da kein so großes Problem sehen. Passende Lizenzbedingungen ran, Obfuscation drüber und fertig. Wer betrügen will, findet immer Wege.
 

Oneixee5

Top Contributor
Man kann es auch selbst hosten und quasi vermieten. Bei uns läuft das normalerweise so ab. Jeder Kunde hat sowieso Sonderwünsche und Anpassungen.
 

Robert Zenz

Top Contributor
Wieso willst du das ueberhaupt verhindern? "Ich will nicht dass die meinen Code sehen" ist schon in Ordnung als Begruendung, dann macht man die Sache einfach so unleserlich wie moeglich. "Das ist Sicherheitsrelevant weil ich da X tue" bedeutet dass du ein schwerwiegendes Sicherheitsproblem hast welches du mit Obfuscation nicht loesen, sondern hoechstens verzoegern kann. "Es befinden sich Geschaeftsgeheimnisse im Code" bedeutet du hast einmal ein Sicherheitsproblem, und eine falsche Vorstellung, Geschaeftsgeheimnisse sind ohnehin gesondert geschuetzt und du kannst jedem eine auf den Deckel geben der damit hausieren geht. "Weil ich X tue was nicht ganz legal ist" ja das ist dann dein Problem.

Wie immer stellt sich bei diesen Sachen die Frage nach der Sinnhaftigkeit, und wieviel Zeit und Energie du in einen (meiner Erfahrung nach zum groeszten Teil imaginaeren) "Angriff" versenken willst. Das jemand dein WAR nimmt, es cracked und anschlieszend weiterverkauft (erfolgreich) ist so ziemlich, ohne es jetzt genau zu wissen, aber ich behaupte das waere ein feuchter Traum auf deiner Seite der nicht der Realitaet entsprechen wird. Angenommen wir reden hier von professioneller Software fuer Firmen oder anderen Organisationen, wenn du irgendein so ein komisches Miniecraft-Tool gebastelt hast, hast du ohnehin verloren weil die Minecraft-Community hat eine ganz eigene Vorstellung wie Urheberrecht funktioniert.
 

KonradN

Super-Moderator
Mitarbeiter
Generell kann man die Latte nur hoch legen. Aber egal was Du machst: So lange Du etwas an Dritte gibst, können diese es analysieren. Dabei spielt es keine Rolle, ob Du Obfusctaoren oder ein Übersetzen in Maschinencode anwendest.

Da haben sehr viele Firmen viel Geld rein gesteckt und keine Lösung gefunden - Beispiele sind z.B. AutoCAD und Co. Die sichern sich ab so gut es geht und dennoch kommen dann die Hacker uns hebeln es aus. Zumal es sehr gute Tools gibt, die einen da unterstützen (und dank NSA gibt es das als Open Source :) ).

Und was genau willst Du verhindern? Bei Software ist der Algorithmus in der Regel unkritisch. Dein konkreter Code interessiert meist nicht. Das wird nur interessant, wenn man Lizenzchecks aushebeln will oder so. Wenn Du eine gute Idee hast, dann spielt das keine Rolle. Das ist ja das, was man in den App Stores immer sieht: Sobald ein Spiel gut ankommt, dann kommt in kurzer Zeit zig Varianten davon. Die SPielidee wird schnell aufgegriffen, ein kleines Team von Entwicklern baut es dann in relativ kurzer Zeit nach. Und dann sind das Firmen mit Kooperationen / Werbe Netzwerken und dann kannst Du eine noch so tolle Idee haben: Da haben erfahrene Spieleentwickler das Konzept angesehen, analysiert, verbessert und dann neu umgesetzt. Und bringen das mit massiv Werbung rein und Du hast es schwer, da irgendwelche Marktanteile zu halten.

Die Frage sollte also sein, was Du an Diensten bieten kannst. Die Leute sollten also gerne Ihr Geld zu Dir bringen, weil sie merken: Sie haben wirklich etwas davon. SaaS ist da das Stichwort, das ja auch bei @Oneixee5 angesprochen wurde. Das nimmt die Gefahr etwas. Aber der Service Gedanke sollte da sein.
 

White_Fox

Top Contributor
Wieviel Aufwand willst du eigentlich reinstecken, und wieviel ist dir der Schutz denn wirklich wert?

Die mit weitem Abstand meisten Raubkopien im professionellen Bereich (Altium, Catia, der ganze Adobekram, ...) haben den jeweiligen Herstellern der Originalsoftware tatsächlich nie finanziell geschadet, denn von Studenten, Schülern, sonstigen Hobbyisten wären die oft vielen tausend Euro niemals bezahlt worden, eher wäre entweder etwas anderes benutzt worden oder das Projekt nicht entstanden.
Wir haben für unser Formula Student Team damals auch eine Raubkopie von Catia benutzt, Dassault hatte ein "großzügiges" Angebot von "nur" 1.000€/Einzellizenz gemacht, das lag völlig außerhalb jeder Diskussion.
Früher, als Jugendliche, haben wir gelegentlich kleine Filme selber gedreht und die hat dann am Rechner jemand geschnitten, ich habe diesem Jemand damals aus den finsteren Ecken des Internets die Rapidshare-Edition der Adobe Creative Suite besorgt.
Keiner dieser Firmen ist damals ein finanzieller Schaden entstanden, weil die Lizenzen und deren Kosten darauf ausgelegt waren, das jemand damit den ganzen Tag Geld erwirtschaftet. Dafür waren die Leute später auf das jeweilige Werkzeug eingeschworen, was später im Berufsleben evt. den Marktanteil der Hersteller erhöhen könnte, wenn es um die Beschaffung ernsthafter Arbeitsmittel für gewerblichen Einsatz geht.

Für Software, die im professionellen Bereich eingesetzt werden soll, gibt es weitaus bessere Möglichkeiten um Raubkopierer fernzuhalten. Bei Catia poppte immer mal gerne eine Warnung auf, daß unser Rennauto mit einer Schulungsversion erstellt wurde, und bei Adobe fanden sich früher sehr interessante Details in den Ausgabedateien, wenn man sie mit einem einfachen Texteditor öffnete.
Und normalerweise sind Firmen, die Raubkopien für ihre Arbeit einsetzen, oft sowieso nicht lange Kunde, solche Firmen krepeln für gewöhnlich ziemlich herum und gehen bald wieder pleite, weil da meist noch vieles andere nicht stimmt.

Von einem Dekompilat einer ganzen Software hat man normalerweise nix. Das Dekompilat ist nicht praktikabel wartbar, niemand kann damit arbeiten. Das ist höchstens für das Aushebeln von Verschlüsselungen, Lizenzumgehung oder dergleichen interessant. In Spezialfällen aus dem Embeddedbereich vielleicht noch sowas wie spezielle Regelalgorithmen oder so.

Außerdem, ganz wichtig: Lizenzgedöns ist immer auch Gängelung der zahlenden Kunden. Überlege dir, was du den ehrlichen Käufern zumuten willst.
Autodesk hat vor einigen Jahren Eagle (E-CAD-Programm für Hardwarebau) gekauft. Eagle war zwar schon lange tot da es zwar noch verkauft, aber schon seit zehn bis zwanzig Jahren nicht mehr weiterentwickelt wurde, aber es hatte immer noch sehr viele treue Fans da Eagle damals noch das Standardprogramm in der Ausbildung war.
Eine der ersten Maßnahmen von Autodesk war, einen maximal rigiden Onlinezwang einzubauen. Du konntest das Programm nur benutzen, solange es nach Hause telephonieren konnte, und damit haben sie jeden, einschließlich ihrer treuesten, Benutzer zu Alternativen vertrieben. Sie haben das dann später zwar gelockert und man konnte 30 Tage oder so ohne Internetzugang damit arbeiten, dennoch spielt Eagle heute praktsich keine Rolle mehr im Hardwarebau. Autodesk hat später versucht, Altium (Programm für denselben Zweck, nur in gut) zu kaufen (gottseidank haben die Eigentümer von Altium nicht mitgemacht).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Unsicher, ob das Code richtig ist Allgemeine Java-Themen 4
MarvinsDepression Unbekanntes Zeichen in fremden Code wirft Fragen auf Allgemeine Java-Themen 4
schemil053 Methoden Code-Verbesserung Allgemeine Java-Themen 2
D Compiler-Fehler child process exited with code 1 Allgemeine Java-Themen 1
Queenman Interface Mein Microsoft Visual Studio Code zeigt komische Dinge & Menüs an Allgemeine Java-Themen 9
A Clean Code: Variable vs. Methode Allgemeine Java-Themen 8
berserkerdq2 Versteht jemand, was diese beiden Zahlen bei dem IJVM Code zu bedeuten haben? Allgemeine Java-Themen 10
OnDemand Releaseversion Tag in Code Allgemeine Java-Themen 5
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
F Code auslagern Allgemeine Java-Themen 5
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
A code wird nicht ausgeführt Allgemeine Java-Themen 3
B Bitte um Code Erklärung Allgemeine Java-Themen 5
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
N Regulären Ausdruck in normalen Java-Code umwandeln Allgemeine Java-Themen 12
OnDemand Clean Code oder Allgemeine Java-Themen 5
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
J Simple Date Format Alternativen bitte um Code Allgemeine Java-Themen 14
AGW in Java-Code plötzlich ein paar Wörter in Rot Allgemeine Java-Themen 2
L Best Practice Auslagerung von Code = Performance Optimierung? Allgemeine Java-Themen 4
H Precompilierten code ansehen Allgemeine Java-Themen 3
R Wo müsste ich im Code eine Änderung vornehmen? Allgemeine Java-Themen 6
L Ausgabe von in Echtzeit ausgeführten Code Allgemeine Java-Themen 9
Drachenbauer Wie kann ich die menge an code reduzieren? Allgemeine Java-Themen 28
Thallius Warum ist dieser Code OS abhängig? Allgemeine Java-Themen 10
S Code Erklärung Allgemeine Java-Themen 21
B Pausem im Code Allgemeine Java-Themen 2
T Java-Quiz Code Fehler Allgemeine Java-Themen 10
L Eclipse Java Code ausführen Allgemeine Java-Themen 18
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
F Code in Klassen bringen Allgemeine Java-Themen 4
S Gibt es eigentlich Java Source Code Interpreter..? Allgemeine Java-Themen 13
J JUnit - Auslassen von Code Allgemeine Java-Themen 25
F Klassen Spaghetti Code Vermeidung Allgemeine Java-Themen 16
C code oder Bibliotheken für 2-Center Problem Allgemeine Java-Themen 4
J Code Page characters darstellen Allgemeine Java-Themen 12
J wie sollte man sinnvoll seinen Code aufteilen Allgemeine Java-Themen 6
I Python Code in Java Code Allgemeine Java-Themen 9
M Java (GUI) Code verdoppeln oder anzeige mehrmals anzeigen? Allgemeine Java-Themen 8
N Wie öffne ich einen runtergeladadenen Code in IntelliJ Allgemeine Java-Themen 3
R Fehler im Code Allgemeine Java-Themen 1
R Fehler im Code Allgemeine Java-Themen 3
O Standard library nativer C code Allgemeine Java-Themen 1
R Wo ist mein Fehler in diesem Code Allgemeine Java-Themen 7
S Java Editor Bekomme bei der Code-Vervollständigung die Zeichen ​ Allgemeine Java-Themen 3
N Morse Code decoder Allgemeine Java-Themen 9
O Erste Schritte Benzinverbrauch Code Hilfe Allgemeine Java-Themen 3
S Eclipse exit code 805306369 Allgemeine Java-Themen 1
Pataraca Vererbung Code einbinden Allgemeine Java-Themen 3
Developer_X Website HTML Code von HTTPS URL laden Allgemeine Java-Themen 0
S Wie kann ich eine kleine Stelle in meinem Code mit multiplen Threads abarbeiten..? Allgemeine Java-Themen 20
S Code 'innerhalb' des synchronen Bereichs einer BlockingQueue ausfuehren..? Allgemeine Java-Themen 7
F Verständlichkeitsproblem bei Java Code?! Allgemeine Java-Themen 2
G Eclipse Eclipse: Unreachable code Allgemeine Java-Themen 16
P Java Android Code in IOS compilieren? Allgemeine Java-Themen 9
C Code vereinfachen Allgemeine Java-Themen 2
T Hilfe bei Code Allgemeine Java-Themen 3
R Java-Code für folgene Aufgabe? Allgemeine Java-Themen 8
Prafy Best Practice Code Refaktorisierung Allgemeine Java-Themen 7
WetWer Was bedeutet/macht ein Exit-Code Allgemeine Java-Themen 1
D Code für bereitgestellte Methoden Allgemeine Java-Themen 1
perlenfischer1984 HTML Code decodieren Allgemeine Java-Themen 2
C ASCII-Code in Java Allgemeine Java-Themen 1
J Java-Code in DLL packen Allgemeine Java-Themen 5
J LWJGL 3 Error Code 1282 Allgemeine Java-Themen 4
0 Code startet nicht (Keine Warnung/Fehlermeldung) Allgemeine Java-Themen 4
A Frage zu meinem Code Allgemeine Java-Themen 2
B Code generierung Velocity Templates Telosys Allgemeine Java-Themen 1
E Fehlermeldung vor dem Programm code Allgemeine Java-Themen 1
B JAVA - mehrere Clienten gleichzeitig starten. Nicht bei Code! Allgemeine Java-Themen 3
Fischkralle Ausführen von fremden Code Allgemeine Java-Themen 14
wolfgang63 Code snipped Software Allgemeine Java-Themen 1
L Eclipse Editieren des Code templates für Override methods Allgemeine Java-Themen 2
J Java code "plugin" fähig machen Allgemeine Java-Themen 4
alderwaran .jar Code Signing, User-Keystore und Fragen dazu Allgemeine Java-Themen 0
Thallius Wie verstecke ich meinen private Key am besten im Code? Allgemeine Java-Themen 10
A Thread: Code paralell ausführen in mehreren Instanzen Allgemeine Java-Themen 1
B NullPointerException - Aber kein Fehler im Code Allgemeine Java-Themen 4
N HTTP response code: 403 Allgemeine Java-Themen 3
D Code bitte mit 19 stelligen Zahlen kompatibel machen Allgemeine Java-Themen 5
D Java Compiler code referencen Allgemeine Java-Themen 0
B Fehler im Java-Code Allgemeine Java-Themen 4
A PHP-Code zu Java-Code Allgemeine Java-Themen 5
M Code läuft unter windows aber nicht unter Linux Allgemeine Java-Themen 6
X Was macht folgender Code!? Allgemeine Java-Themen 6
K Code zu einem Projekt entschluesseln Allgemeine Java-Themen 15
H Java Leistungssteigerung durch Code Anpassung Allgemeine Java-Themen 5
Fab1 Best Practice Vorgehensweise bestehenden Code/Programm verschönern Allgemeine Java-Themen 4
M Code optimieren Allgemeine Java-Themen 7
A jEditorPane Html Datei öffnen (code) Allgemeine Java-Themen 3
S EAN-Code Tabelle für CD's Allgemeine Java-Themen 2
T Code durch eigenes Frame pausieren (ähnlich JDialog) Allgemeine Java-Themen 4
J Erzeugung von Java-Code Allgemeine Java-Themen 2
A Source code analyze Allgemeine Java-Themen 8
N VB Code in Java verwenden Allgemeine Java-Themen 5
P Aktuellen HTML Code auslesen (von JS manipuliert) Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben