Ein Java-Decompiler ist ein spezieller Dekompilertyp, der eine Klassendatei als Eingabe verwendet und Java-Quellcode als Ausgabe erzeugt. Die Dekompilierung ist genau der umgekehrte Vorgang der Kompilierung. Daher erstellt der Dekompiler keine Replik des Quellcodes. Dies liegt daran, dass während der Kompilierung des Programms einige Informationen aus dem Quellcode verloren gehen.
Aber es gibt viele Komplexitäten, zum Beispiel ist Java-Code strukturiert und Bytecode ist nicht strukturiert. Darüber hinaus erfolgt die Transformation nicht eins zu eins: Zwei verschiedene Java-Programme können identischen Bytecode ergeben.
Es stehen folgende Java-Decompiler zur Verfügung:
- DJ Java Decompiler
- JReversePro
- JUDEN
- JD-CORE/ JD-GUI/ JD Eclipse
JAD-Decompiler
Das JAD ist eine Befehlszeilenanwendung. Es ist in C++ geschrieben. Die Hauptfunktion besteht darin, die .class-Dateien zu zerlegen. JAD kann über die Konsole bereitgestellt werden und dekompiliert Java-Klassen in den Quellcode. Auf diese Weise können Entwickler tief in den Code von Java-Laufzeitbibliotheken hineinschauen und sogar die Zeilen verschönern, um sie für eine Neukompilierung vorzubereiten. Es besteht die Gefahr des Überschreibens von Quellcodedateien, insbesondere wenn der Parameter „-o“ (Ausgabedateien ohne Bestätigung überschreiben) verwendet wird.
Beispiel
Operatoren in der Python-Programmierung
Lassen Sie uns ein einfaches Java-Programm erstellen, das zwei Zahlen hinzufügt.
import java.util.*; class DecompilerDemo { public static void main(String args[]) { int a,b,c; Scanner sc=new Scanner(System.in); System.out.print('Enter the value of a: '); a=sc.nextInt(); System.out.print('Enter the value of b: '); b=sc.nextInt(); c=a+b; System.out.println('sum of a and b is: '+c); } }
Befolgen Sie die Schritte, um die .class in lesbaren Java-Quellcode zu konvertieren. Hier verwenden wir den JAD-Decompiler.
Websites wie bedpage
Schritt 1: Laden Sie das JAD-Tool herunter von https://bit.ly/2XuRzT5
Schritt 2: Extrahieren Sie die ZIP-Datei und holen Sie sich jad.exe.
Schritt 3: Erstellen Sie eine .java-Datei (DecompilerDemo.java) in demselben Ordner, in den Sie die ZIP-Datei extrahiert haben.
Schritt 4: Kompilieren Sie die .java-Datei und führen Sie sie aus. Es wird eine .class-Datei im entsprechenden Ordner generiert.
Schritt 5: Verschieben Sie nun die .class-Datei und die Jad-Anwendung in einen anderen Ordner.
Schritt 6: Geben Sie den Befehl ein: jad DecompilerDemo
Der obige Befehl generiert eine .jad-Datei im entsprechenden Ordner.
Schritt 7: Geben Sie den Befehl ein: jad ?s Java DecompilerDemo
Javascript-Druck
Es generiert die .java-Datei im selben Ordner.
Öffnen Sie DecompilerDemo.java. Wir erhalten den folgenden Code:
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) // Source File Name: DecompilerDemo.java import java.io.PrintStream; import java.util.Scanner; class DecompilerDemo { DecompilerDemo() { } public static void main(String args[]) { Scanner scanner = new Scanner(System.in); System.out.print('Enter the value of a: '); int i = scanner.nextInt(); System.out.print('Enter the value of b: '); int j = scanner.nextInt(); int k = i + j; System.out.println((new StringBuilder()).append('sum of a and b is: ').append(k).toString()); } }
Wir können beobachten, dass sich die geschriebene .Java-Datei von der generierten .Java-Datei unterscheidet, aber die gleiche Ausgabe liefert.
Disassembler für Java-Klassendateien
javap-Befehl
Strukturen mit Arrays in c
Der Javap ist ein Java-Befehlszeilentool, das mit JDK geliefert wird. Es wird verwendet, um die Klassendatei zu zerlegen und eine für Menschen lesbare Version dieser Klasse auszugeben. Die Ausgabe hängt von der verwendeten Option ab. Ohne eine Option zu verwenden, druckt Javap das Paket, die geschützten und öffentlichen Felder und Methoden der an ihn übergebenen Klassen. A Javap wird auch verwendet, um herauszufinden, welche Methoden für eine Klasse verfügbar sind, wenn Sie nicht über den Quellcode verfügen, der zum Erstellen der Klasse verwendet wurde. Das allgemeine Format des Javap-Befehls ist:
javap [options] filename
Optionen
Zufallszahlengenerator in c
Mit dem Befehl javap stehen viele Optionen zur Verfügung. Einige von ihnen sind:
Zerlegen Sie eine Klassendatei mit dem Befehl javap
class DisassembleDemo { public static void main(String args[]) { System.out.println('Java'); } }
Generieren Sie die Klassendatei des obigen Programms und zerlegen Sie die Klassendatei mit dem folgenden Befehl.
javap -c -p DisassembleDemo
Ausgabe
Die folgende Ausgabe zeigt, was die Klassendatei enthält.
Wir erhalten den Java-Quellcode jedoch nicht mit dem Befehl javap. Daher gibt es viele Dekompiler, die eine .class-Datei in eine .java-Datei konvertieren.