.jar-Datei codiert?

  • Themenstarter Themenstarter worsel
  • Beginndatum Beginndatum
W

worsel

Gast
Hallo zusammen,
hier eine eher allgemeine Frage zu Java:

Wenn ich ein beliebiges Programm über Java geschrieben, und dann als Ausführbare Java-Datei komprimiert habe, und diese .jar-Datei an Dritte weitergebe, haben diese offensichtlich keinen Zugriff auf den Quellcode.

Also muss der Quellcode ja irgendwie 'codiert' werden, sodass dieser mit Hilfe der .jar-Datei nicht eingelesen werden kann.

Ist dieses Codierungsverfahren codeunabhängig, läuft es immer nach dem selben Schema ab?
Wenn man denn möchte, ist es überhaupt möglich, aus einer .jar-Datei den Quellcode zu extrahieren?

Diese Fragen ergaben sich aus reinem Interesse, es stecken keine bösen Absichten dahinter.


Freundliche Grüße,
Micha
 
Da wird nichts 'codiert' !!

Es wird lediglich compiliert und somit Bytecode erstellt, welcher von der JVM verarbeitet werden kann. Also .class Dateien.

Das kann man ohne großen Aufwand auch wieder decompilieren.
 
Natürlich könnte man auch die Quellcode Dateien (also .java) mit in die Jar stecken. Das wird aber nur dann gemacht, wenn eben etwas opensources ist. Schließlich kann man Jar Dateien ohne Weiteres mit 7zip oder WinRar entpacken. Und wie Andgalf bereits gesagt hat ist es auch recht einfach möglich über die .class Dateien wieder an den Quellcode zu kommen, wenn dieser dann auch in einem äuserst "hässlichen" Zustand vorliegt.
 
Ich hab jetzt nicht genau verstanden, ob Du Quellcode zur Verfügung stellen willst oder, ob Du verhindern willst, das jemand sich (wie auch immer) den Quellcode besorgt. Deswegen die zweigeteilte Antwort:

Quellcode zur Verfügung stellen:
In einem jar ist der erstmal nicht mit drinnen. Man kann aber durchaus einen Unterordner bspw "src" machen und dort den Quellcode mit reintun. Das ist ein gängiges Verfahren. Buildtools unterstützen einen dabei. Eine andere Variante sind sogenannte Source-jars, die nur den Quellcode enthalten. Auch das ist sehr gebräuchlich (siehe Maven repositories).

Verhindern, dass Quellcode sichtbar wird:
Wie meine Vorredner schon schrieben, ist der Quellcode in einem normalen Jar erstmal nicht mit drinnen. Hier liegt nur der ausführbare Bytecode in Form von .class-Dateien. Es ist aber relativ einfach, diesen zu dekompilieren. Verhindern kann man das nicht. Man kann aber das Reverse Engeneering erschweren, in dem man die normalerweise sprechenden Namen von Packages, Klassen, Methoden, Variablen in nicht sprechende Namen (bspw. a.n.A) umwandelt. Das Stichwort hier ist Obfuscation. Dafür gibt es Tools. Einfach googeln.
 
Vielen Dank für eure Antworten!
Es ging mir hier ums reine Prinzip, insofern haben mir eure Antworten sehr geholfen! 🙂


-Thema erledigt
 

Neue Themen


Zurück
Oben