Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Java Files schützen?

Java Files schützen?

stefan29.01.0519:44
Wie kann man ein .jar File schützen, damit es nicht ausgepackt und decompiliert werden kann?
Normalerweise muss man es ja nur auf den Expander ziehen und dann sieht man schon die enthaltenen Klassen.
Kann man das verhindern?
0

Kommentare

MacMark
MacMark29.01.0520:00
Such mal nach "obfuscate" oder "obfuscating". Das soll bei Klassen generell helfen, nicht nur bei JARs.
„@macmark_de“
0
Rantanplan
Rantanplan29.01.0520:27
Die Obfuscator - zumindest die ich mal ausprobiert hatte - verhindern nicht, daß das class-File decompiliert werden kann, sondern ersetzen nur die Identifier (Klassen-, Variablennamen usw.) durch zufällig generierte, was das Verständnis des Sources stark erschwert. Deswegen "Obfuscator"
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
Rantanplan
Rantanplan29.01.0520:28
Sollte heißen: "Die Obfuscatoren ..."
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
stefan29.01.0520:53
MacMark
Such mal nach "obfuscate" oder "obfuscating". Das soll bei Klassen generell helfen, nicht nur bei JARs.

das habe ich schon mal vor einiger Zeit getan, allerdings war das nicht sehr hilfreich.
Ausserdem wird es wohl nie richtig gehen, denn sonst hätte das JRE sicher auch Probleme, die Klasse zu interpretieren.
0
Hubaaaa
Hubaaaa31.01.0513:53
Rantanplan
Die Obfuscator - zumindest die ich mal ausprobiert hatte - verhindern nicht, daß das class-File decompiliert werden kann, sondern ersetzen nur die Identifier (Klassen-, Variablennamen usw.) durch zufällig generierte, was das Verständnis des Sources stark erschwert. Deswegen "Obfuscator"

Das stimmt nicht mehr so ganz. Inzwischen leisten einige Obfuscator einiges mehr. Sehr interessant inst z.B. der Ansatz des KlassMaster:

Der ersetzt if...else und Schleifen durch goto-Anweisungen. Wie, gibt's nicht in Java? Korrekt, im Java-Sourecode gibt es kein goto im Bytecode allerdings schon. Ergebnis: Der Code ist extrem unleserlich und die meisten decompiler bekommen den Bytecode überhaupt nicht mehr (oder nur mit Fehlern) zurückübersetzt. Ist ein sehr interessanter Ansatz.

Ansonsten habe ich hier noch irgendwo ein interessantes Paper über die Einbindung von Wasserzeichen in den Kontrollfluss eines Programmes ("Dynamic Path-Based Software Watermarking" von Collberg et al). Das könnte auch interessant sein. Verhindert zwar nicht den codeklau, aber man hat immerhin eine Chance, ihn nachzuweisen. Laut dem Paper müssen die Leuts da auch einen funktionsfähigen Prototypen gebastelt haben, vielleicht findet sich der auf ihrer Homepage.
0
Rantanplan
Rantanplan31.01.0513:57
Hubaaaa

Danke für die Info Das ist sehr interessant.
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
seaside31.01.0501:11
stefan
Wie kann man ein .jar File schützen, damit es nicht ausgepackt und decompiliert werden kann?
<br>Normalerweise muss man es ja nur auf den Expander ziehen und dann sieht man schon die enthaltenen Klassen.
<br>Kann man das verhindern?
<br>
<br>EJ-Technologies hat zwar keinen Obfuscator, aber andere interessante Tools, wie zum Beispiel einen JAR .app konverter.
<br>
<br>Ist möglicherweise auch interessant: http://www.ej-technologies.com/index.html.
<br>
<br>Unabhängig davon könntest Du GCJ ausprobieren (siehe vorheriger Thread)...
0
seaside31.01.0501:13
stefan
MacMark
Such mal nach "obfuscate" oder "obfuscating". Das soll bei Klassen generell helfen, nicht nur bei JARs.
<br>
<br>das habe ich schon mal vor einiger Zeit getan, allerdings war das nicht sehr hilfreich.
<br>Ausserdem wird es wohl nie richtig gehen, denn sonst hätte das JRE sicher auch Probleme, die Klasse zu interpretieren.
<br>
<br>Doch, das geht problemlos, ausser Du rufst classen &rsquo;by name&rsquo; auf. In diesem Fall musst Du Deinen code vermutlich instrumentieren, damit der obfuscator die fraglichen classen nicht umbenennt.
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.