Hallo!
Ich hab von meinem Schulfreund gehört, dass man die Dateien aus einem Jar-Archiv extrahieren kann und dann decompilieren kann. Heisst das, dass Java immer Opensource ist, weil man dann ja den Quelltext einsehen kann, oder gibt es Möglichkeiten die Benutzung eines Java-Programms zu ermöglichen, ohne die Angst, dass jemand den Quellcode decompilert und dann manipuliert?
Viele Grüße
Manny
Auch hallo.
Heisst das, dass Java immer Opensource ist, weil man
dann ja den Quelltext einsehen kann,
Hierbei sollte man das Lizenzmodell der jeweiligen Software beachten.
oder gibt es
Möglichkeiten die Benutzung eines Java-Programms zu
ermöglichen, ohne die Angst, dass jemand den Quellcode
decompilert und dann manipuliert?
Das Stichwort heisst ‚Obfuscator‘. Aber ob diese Lösungen immer das halten was sie versprechen… ?
HTH
mfg M.L.
Hallo,
Ich hab von meinem Schulfreund gehört, dass man die Dateien
aus einem Jar-Archiv extrahieren kann und dann decompilieren
kann.
das ist korrekt. Allerdings entspricht das Ergebnis nicht dem original Code, da Kommentare verlorengehen und Optimierungen des Kompilers nicht mehr rückgängig gemacht werden können.
Heisst das, dass Java immer Opensource ist, weil man
dann ja den Quelltext einsehen kann,
Unter Open Source versteht man eigentlich die bewusste Veröffentlichung des Quellcodes.
gibt es
Möglichkeiten die Benutzung eines Java-Programms zu
ermöglichen, ohne die Angst, dass jemand den Quellcode
decompilert und dann manipuliert?
man kann das zumindest erschweren, indem man den einen Obfuscator verwendet, z.B. http://proguard.sourceforge.net/. Das dekompilieren ist trotzdem möglich, aber der Code ist nur sehr schwer lesbar.
Gruß
Heavy
Hallo Manny,
Hallo!
Ich hab von meinem Schulfreund gehört, dass man die Dateien
aus einem Jar-Archiv extrahieren kann und dann decompilieren
kann.
Ja, dass geht.
Heisst das, dass Java immer Opensource ist, weil man
dann ja den Quelltext einsehen kann, oder gibt es
Möglichkeiten die Benutzung eines Java-Programms zu
ermöglichen, ohne die Angst, dass jemand den Quellcode
decompilert und dann manipuliert?
Wie schon meine Vorredner angesprochen haben ist hier das Stichwort Obfuscator.
Prinzipiell gilt das nicht nur für Java, sondern in der Theorie für jedes Kompilat. Die Herausforderung ist nur eine Rückübersetzung zu machen, sprich von dem übersetzten Code in eine für den Menschen lesbarere Form.
Ein Obfuscator verändert nun die Namen von Funktionen, Variablen, … in der Form, dass diese immer noch auf die „gleiche Stelle“ zeigen, aber in einer für den Menschen sehr kryptischen Form sind. Dann kann man noch ein bißchen den Code umstellen.
Vor solchen ‚Reverse-Engineering‘ Aktionen ist man aber nie gefeit.
Da sollte man auch nicht zu großen Ergeiz reinstecken.
Evtl. kann man unter Java einen Classloader schreiben der verschlüsselte Klassen laden kann. Die Klassen (übersetzt sind das die .class Dateien) müssen vor der Auslieferung dann einmal verschlüsselt werden. Wenn man nun dem Kunden einen Schlüssel gibt und die Klassen mit diesem Schlüssel verschlüsselt, dann könnte nur dieser Kunde mit seinem Schlüssel an die Klassen kommen.
Ob sich der Aufwand aber lohnt ist fraglich, denn man kann ja diesen Classloader auch in eigenen Programmen verwenden. Genügend kriminelle Energie und man bekommt das auch hin.
Kurz gesagt: Eine Garantie gibt es nicht (auch nicht bei C, C++, C#, …)
Gruß,
Frank