logo

Java-Decompiler

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.

Java-Decompiler

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.

Java Decompiler2

Schritt 5: Verschieben Sie nun die .class-Datei und die Jad-Anwendung in einen anderen Ordner.

Java-Decompiler3

Schritt 6: Geben Sie den Befehl ein: jad DecompilerDemo

Java-Decompiler4

Der obige Befehl generiert eine .jad-Datei im entsprechenden Ordner.

Java-Decompiler5

Schritt 7: Geben Sie den Befehl ein: jad ?s Java DecompilerDemo

Javascript-Druck
Java-Decompiler6

Es generiert die .java-Datei im selben Ordner.

Java-Decompiler7

Ö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:

    -C:Es druckt zerlegten Code.-P:Es werden alle Klassen und Mitglieder angezeigt.-S:Es druckt interne Typsignaturen.-Konstanten:Es zeigt statische Endkonstanten.

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.

Java-Decompiler8

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.