Welchen Obfuscator nehmen?

JanHH

Top Contributor
Siehe Betreff.. hab früher mal mit JODE gearbeitet, aber der kommt mir nun langsam veraltet vor, mal abgesehen davon dass der Download-Link gerade nicht funktioniert. Welche Programme sind kostenlos, empfehlenswert und NICHT GPL (sondern lieber LGPL oder sowas)?
 

Wildcard

Top Contributor
Warum spielt GPL eine Rolle? Sollte doch ziemlich egal sein da du das Tool nicht zur Laufzeit brauchst.
Der GNU Compiler ist auch GPL, dadurch fallen aber nicht alle mit GCC kompilierten Programme automatisch unter die GPL.
Mir fällt da spontan yGuard und ProGuard ein. Welches davon nun das bessere ist, keine Ahnung, ich halte nicht viel von Obfuscating. Macht letztlich eh nur die Stacktraces und das Logging kaputt und erschwert damit den Support.
 

JanHH

Top Contributor
Danke, dann werd ich mir die zwei mal anschauen. Wenn das mit GPL kein Problem ist, ist ja ok.

Meine Firma gibt halt ein jar-File zum Kunden raus, und zwar eine "Demo-Version", und es soll verhindert werden, dass der Kunde das per Dekompilierung wieder in eine Vollversion verwandelt.
 

Wildcard

Top Contributor
Bei einer Demo Version ist das auch halb so wild, denn die muss man wohl nicht Supporten.
Aber mal ehrlich, was hilft obfuscating dabei? Wenn das per Schalter im Quellcode funktioniert würde ich fast wetten das man den dekompilierten Quellcode mit einem Debugger in wenigen Minuten zerlegt, egal ob obfuscated, oder nicht.
Normal arbeitet man da eher mit Lizenzschlüssel, Onlineaktivierung, Modularisierung (die Demo Version enthält nicht alle Module), oder dergleichen.
 

nrg

Top Contributor
das können die genauso auch mit obfuscating hinbekommen. würd lieber ne zeitlich beschränkte lizenz machen oder so
 

Empire Phoenix

Top Contributor
Obfuscating erschwert es aber etwas in dem sinne das man erstmal den switch finden muss wenn der irgetwo als boolean abcde in der classe zzzxy ist, statt isDemo zu heißen
 

JanHH

Top Contributor
Naja man braucht schon eine gewisse kriminelle Energie und Fachkenntnis, um da bei obfuscatetem Code ans Ziel zu kommen. Beides hat der besagte Kunde nicht. An sich hab ich da keine Sorge, ich würds dem im Grunde auch ohne obfuscator geben, aber sicher ist sicher. In der Demo-Version fehlt auch ein wichtiges Modul, ohne das kann man die Software quasi normal benutzen, aber mit den gewonnenen Daten nix anfangen (bzw. diese nicht speichern). Man könnte diesen Teil natürlich nachprogrammieren, aber all das zusammen traue ich dem Kunden wirklich nicht zu.
 

Wildcard

Top Contributor
Naja man braucht schon eine gewisse kriminelle Energie und Fachkenntnis, um da bei obfuscatetem Code ans Ziel zu kommen
Hängt ganz davon ab. Angenommen ein bestimmter Buttonklick löst aus das ein Dialog hochpoppt der dem User mitteilt das die Funktion in der Demo Version deaktiviert ist. Nehmen wir weiterhin an das es sich um eine Swing Anwendung handelt.
Ich würde im dekompilierten Code die main Methode raussuchen (die ja nicht obfuscated ist) einen AWT Event Listener platzieren und einen Conditional Breakpoint setzen der auf die Beschriftung oder den Tooltip des Buttons reagiert. In der Methode muss nun irgendwo der Schalter abgefragt werden (egal wie der Schalter oder die Methode nach der obfuskierung heißt). Wenn ich den Schalter habe, bin ich fertig und habe dafür keine 5 Minuten gebraucht. Bei euch mag das etwas anders aussehen und funktionieren, aber die meisten Tricks lassen sich schnell aushebeln.

In der Demo-Version fehlt auch ein wichtiges Modul, ohne das kann man die Software quasi normal benutzen, aber mit den gewonnenen Daten nix anfangen (bzw. diese nicht speichern). Man könnte diesen Teil natürlich nachprogrammieren, aber all das zusammen traue ich dem Kunden wirklich nicht zu
Das ist IMO der bessere Schutz.
 

JanHH

Top Contributor
Wie macht man es denn "richtig"?

Mir ist auch klar dass man da nicht 100%ig schützen kann, aber besser so als gar nicht.. Wie gesagt, eine wichtige Klasse komplett entfernt, den Rest per Obfuscator geschützt.
 
M

maki

Gast
Wie macht man es denn "richtig"?
IMHO gar nicht, egal welche Sprache, man kann alles dekompilieren, nur eine Frage des Aufwandes.

Mir ist auch klar dass man da nicht 100%ig schützen kann, aber besser so als gar nicht.. Wie gesagt, eine wichtige Klasse komplett entfernt, den Rest per Obfuscator geschützt.
Komplexität an sich ist auch schon ein sehr wirksamer Schutz, und wenn man Dummy Module ausliefert bzw. wichtige weglässt, muss man sich weniger sorgen machen.
 

Empire Phoenix

Top Contributor
Wirklich sicher?
Hm als webapplication mit login beispielsweise (die auf einem eigenen Server läuft), da der kunde nur die Gui und exchangeobjects sieht kann er nie die logic daraus gewinnen. Aber das lohnt denke ich nur in ausnahmefällen, da massiver aufwand und die meisten Kunden deme her abgeneigt sind.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Welchen Packager soll ich verwenden. Allgemeine Java-Themen 7
B Mit welchen Datentypen und Strukturierung am Besten dutzende Baccaratspiele Shcritt für Schritt durchsimulieren? Allgemeine Java-Themen 26
S Interface Welchen Interface Stil favorisiert ihr? (usability) Allgemeine Java-Themen 17
D welchen line brak benutzt ein geg. textfile Allgemeine Java-Themen 3
H String - Hat welchen Zeichensatz? Allgemeine Java-Themen 6
B Log4j --- Welchen Appender, wie konfigurieren Allgemeine Java-Themen 3
B welchen port muss ich angeben? Allgemeine Java-Themen 11
F Welcher Datentyp in welchen casten? Allgemeine Java-Themen 11
M Welchen Reader? Allgemeine Java-Themen 8
K Welchen Editor? Allgemeine Java-Themen 31
N Ermitteln welchen Typ ein "Object"-Objekt enthält Allgemeine Java-Themen 11
S welchen editor Allgemeine Java-Themen 5
S Welchen Editor soll man für Graphische lösungen benutzen Allgemeine Java-Themen 2
O Java-Obfuscator, welcher einzelne Methoden, Klassen und Ordnerstrukturen ausnehmen kann. Allgemeine Java-Themen 1
G Obfuscator und Hibernate! Allgemeine Java-Themen 5
P Eclipse und Obfuscator. Allgemeine Java-Themen 3
foobar Obfuscator gesucht Allgemeine Java-Themen 2
A was kann ich nehmen als statt IsHitBy? Allgemeine Java-Themen 3
M String auseinander nehmen Allgemeine Java-Themen 3
I Swing Welche Swing Komponente soll ich nehmen? Allgemeine Java-Themen 2
F Applet fokus von textfiled nehmen Allgemeine Java-Themen 3
schlingel Plugin-Architektur - Welche nehmen? Allgemeine Java-Themen 6
reibi Aktuelles Verzeichnis in den Klassenpfad nehmen Allgemeine Java-Themen 9
J SQLException.getNextException; woher nehmen? Allgemeine Java-Themen 9
R Welche Exception bei write() nehmen Allgemeine Java-Themen 7
H Vektoren nehmen keine neuen Werte an Allgemeine Java-Themen 5
R Was nehmen für Flußdiagramme und Druck von großen Grafiken Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben