Java-Klasse dekompilieren
- Gründe für die Dekompilierung einer Java-Klasse
- Java-Decompiler
- Dekompilieren Sie die Java-Klasse mit der Eclipse-IDE
- Dekompilieren Sie die Java-Klasse mit IntelliJ IDEA
- Dekompilieren Sie die Java-Klasse über die Befehlszeile
- Java-Klasse mit JD-GUI dekompilieren
In diesem Handbuch lernen wir die Kunst des Dekompilierens einer Java-.class
-Datei kennen. Wir werden einen kurzen Überblick über das Dekompilieren sehen, wie wir eine .class
-Datei in Java dekompilieren und welche Änderungen wir sehen können, wenn wir eine Datei in Java dekompilieren.
Gründe für die Dekompilierung einer Java-Klasse
Mindestens einmal in ihrer Karriere als Java-Entwickler kommen sie in eine Situation, in der sie mit JAR-Dateien konfrontiert werden oder eine .class
-Datei wieder in einen Quellcode dekompilieren müssen.
Wie wir wissen, handelt es sich bei JAR-Dateien um ein Java-Archivpaket mit einer Sammlung verschiedener Java-Klassendateien und anderer Ressourcen wie Bilder, Audio usw. Diese Dateien sind im ZIP-Format erstellt und verwenden die Erweiterung .jar
.
Das Problem mit JAR-Dateien besteht darin, dass einem Benutzer keine Berechtigung zum Öffnen dieser Datei erteilt wird. Die einzige Möglichkeit, auf diese Dateien zuzugreifen, besteht darin, dass der Benutzer die JAR-Datei dekompiliert.
Um die .class
-Dateien in der Datei lesen zu können, müssen wir Softwaretools verwenden, um diese Datei zu dekompilieren.
Andererseits können wir mit .class
-Dateien Software wie Eclipse IDE und IntelliJ IDEA verwenden. Außerdem können Befehlszeilenargumente verwendet werden, um eine .class
-Datei zu dekompilieren.
Java-Decompiler
Das Dekompilieren fällt unter die Aktion des Reverse Engineering, da wir eine JAR-Datei in eine lesbare Klassendatei dekompilieren. Wir werden später in diesem Handbuch mehr darüber erfahren, aber lassen Sie uns zuerst einen Blick auf die .class
-Dateien werfen.
Es gibt mehrere Möglichkeiten, eine .class
-Datei zu dekompilieren. Es kommt darauf an, was für den Benutzer, der mit diesen Dateien arbeitet, am besten geeignet ist.
Es gibt Software-Tools, die bei diesem Prozess helfen, aber es gibt auch andere Möglichkeiten, wie wir eine .class
-Datei in unseren Quellcode dekompilieren können. Zwei der Methoden, die wir verwenden, sind Software wie Eclipse IDE und IntelliJ IDEA.
Der wichtigste Vorteil bei der Verwendung dieser beiden ist, dass die Decompiler sehr einfach zu verwenden sind. Schauen wir uns die am häufigsten verwendete Software an, Eclipse IDE.
Dazu müssen Sie einige Schritte befolgen.
Dekompilieren Sie die Java-Klasse mit der Eclipse-IDE
Ein Plugin wird verwendet, um eine .class
-Datei zu dekompilieren; In dieser Software heißt das Plugin Enhanced Class Decompiler (ECD). Enhanced Class Decompiler kann einfach über den Marktplatz der Software namens Eclipse Marketplace installiert werden.
-
Dazu gehen wir zur Option
Go to help
und wählenEclipse Marketplace
. -
Suchen Sie danach nach
Enhanced Class Decompiler
. Danach müssen wir das ECD so einrichten, dass es ordnungsgemäß funktioniert. -
Um das ECD einzurichten, klicken wir im Menü auf die Option
Go to Window
und dann aufPreferences
. -
Wählen Sie dann
Allgemein
, wo Sie im Dropdown die OptionEditoren
finden. -
Nachdem Sie auf die vorherige Option geklickt haben, wählen Sie in einem weiteren Dropdown-Menü
Dateizuordnung
aus. -
Wählen Sie abschließend die Option
*.class ohne Quelle
.
Eine .class
-Datei kann nun durch einfaches Anklicken dekompiliert werden.
Dekompilieren Sie die Java-Klasse mit IntelliJ IDEA
Der Hauptgrund für die Verwendung dieser Software ist, dass wir keinen Decompiler herunterladen oder einrichten müssen. Diese Software verfügt über einen Standard-Decompiler, der dem Benutzer die Verwendung von IntelliJ IDEA erleichtert.
Alles, was wir tun müssen, ist eine .class
-Datei in IntelliJ IDEA zu öffnen, die diese Datei automatisch dekompiliert.
Dekompilieren Sie die Java-Klasse über die Befehlszeile
Eine andere Methode zum Dekompilieren einer .class
-Datei ist die Verwendung der Befehlszeile. Diese Methode bietet drei Optionen. Die Auswahl liegt ganz beim Benutzer.
Verwenden Sie JD-CLI
JD-CLI wird für einzelne Befehlszeilenanweisungen verwendet. Es ist nur ein einziger Befehl erforderlich, um eine Klassendatei zu dekompilieren.
Dies ist der Befehl zum Dekompilieren einer Klassendatei:
java - jar jd - cli.jar[class - file]
Wir können diesen Decompiler herunterladen, indem wir hier klicken: intoolswetrust/jd-cli: Command Line Java Decompiler (github.com).
Verwenden Sie FarnBlume
FernFlower ist ein weiterer Decompiler, der auf das System heruntergeladen wird, um eine .class
-Datei zu dekompilieren.
Wir müssten diesen Decompiler klonen, um FernFlower verwenden zu können. Dazu klicken wir hier: fesh0r/fernflower: Unofficial Mirror of FernFlower Java Decompiler (github.com).
Dies sind die Befehle, die zum Klonen verwendet werden:
git clone https: // github.com/fesh0r/fernflower
cd fernflower
gradle build
Verwenden Sie diesen Befehl, um eine Datei zu dekompilieren.
java - jar fernflower.jar[path to JAR or.class file][directory to store the decompiled files]
Java-Klasse mit JD-GUI dekompilieren
Das Dekompilieren einer JAR-Datei unterscheidet sich von einer .class
-Datei. Der Java-Decompiler ist das am häufigsten verwendete Softwaretool zum Dekompilieren einer JAR-Datei.
Dieses Tool kann einfach heruntergeladen werden. Verschiedene Versionen dieser Software können je nach Bedarf des Benutzers heruntergeladen werden, indem er hier klickt.
Unter diesen Versionen ist JD-GUI die bekannteste UI-Version des Java-Decompilers. JD-GUI ist eine Anwendung, die es dem Benutzer ermöglicht, die versteckten Klassendateien in JAR-Dateien zu sehen.
Beachten Sie, dass Low-Level-Informationen wie Kommentare in einer .class
-Datei verschwinden. Es besteht auch die Möglichkeit, dass einige ursprüngliche Variablennamen verschwinden, aber das hängt davon ab, welche Option der Benutzer beim Kompilieren gewählt hat.
Wenn beim Kompilieren ein Debugger verwendet wurde, können Sie sicher sein, dass die .class
-Datei in einer besser lesbaren Form vorliegt, da wir nicht denselben Quellcode erhalten.
Lassen Sie uns dieses Konzept anhand eines einfachen Hello World
-Beispiels mit Kommentaren besser verstehen.
class Example1 {
public static void main(String[] args) {
// This is the comment used.
System.out.println("Hello World");
}
}
Wenn wir diese HelloWorld
-Datei dekompilieren, die jetzt in Form einer JAR-Datei vorliegt, erhalten wir diese .class
-Datei als Ausgabe.
Ausgang:
class Example1
{
public static void main(String[] paramArrayOfString){System.out.println("Hello World");}
}
Wie Sie sehen können, besteht der deutliche Unterschied zwischen diesen beiden Dateien darin, dass die Kommentare verschwunden sind und die sichtbare Änderung des Parameters der Methode main
.
Letztendlich hängt es vom Benutzer ab, welches Softwaretool er zum Dekompilieren einer Java-JAR-Datei verwendet, da es viele Optionen gibt.
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn