Java-Anwendungen: An Quelltext kommen?
-
Ist es eigentlich möglich, durch den Bytecode wieder an die Klassenstruktur eines Javaprogramms zu gelangen?
Wenn ich in C++ z.B. eine GUI geschrieben habe, dann blieb am Ende eine binärdatei übrig mit der man relativ wenig anfangen kann.
Wie ist das in Java? Könnte da nicht jeder z.B. bei einer programmierten GUI wieder an sämtliche Quelltext herankommen und dann eigenständig etwas ändern?
-
In Java kommt man relativ gut wieder an den Quellcode. Das liegt aber soweit ich weiß nicht nur am Bytecode, sondern daran das sämtliche Metadaten zu Klassen und Funktionen mitgespeichert werden um Reflection etc. zu ermöglichen.
Das lässt sich aber natürlich mit einem Obfuscator von der Entwicklerseite deutlich erschweren.
-
In Java ist Reverse Engineering problemlos möglich, der Bytecode kann mit zahlreichen Tools einfach zurück übersetzt werden. Z.B. hiermit: http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javap.html
-
Also an den Quelltext kommt man seht wahrsceinlich nicht (wenn er nicht mirveröffentlicht wurde) aber man seht gut, einfach lesbaren äquivalenten Programmtext erzeugen. Dieser ist garantiert nicht der Ursprungsquelltext aber wie gesagt funktional identisch.
Unter der Voraussetzung, dass kein obfuscator verwendet wird.
-
Rhombicosidodecahedron schrieb:
Unter der Voraussetzung, dass kein obfuscator verwendet wird.
Auch dann bleibt die Sematik des Codes erhalten.