logo

Java dekompilátor

Java Decompiler je speciální typ dekompilátoru, který přijímá soubor třídy jako vstup a vytváří zdrojový kód Java jako výstup. Dekompilace je přesně opačný proces kompilace. Dekompilátor tedy nevytváří repliku zdrojového kódu. Je to proto, že se během kompilace programu ztratila část informací ze zdrojového kódu.

Existuje však mnoho složitostí, například kód Java je strukturovaný a bajtový kód strukturovaný není. Transformace navíc není jedna ku jedné: dva různé programy Java mohou poskytnout identický bajtový kód.

K dispozici jsou následující dekompilátory Java:

jak odstranit sloupec v postgresql
  • DJ Java Decompiler
  • JReversePro
  • ŽIDÉ
  • JD-CORE/ JD-GUI/ JD Eclipse

Dekompilátor JAD

JAD je aplikace příkazového řádku. Je napsán v C++. Hlavní funkcí je rozebrat soubory .class. JAD lze nasadit z konzole a dekompiluje třídy Java do zdrojového kódu. Tímto způsobem mohou vývojáři nahlédnout hluboko do kódu Java runtime knihoven a dokonce zkrášlit řádky a připravit je na rekompilaci. Existuje riziko přepsání souborů zdrojového kódu, zejména při použití parametru '-o' (přepsat výstupní soubory bez potvrzení).

Příklad

Vytvořme jednoduchý Java program, který přidá dvě čísla.

 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); } } 

Postupujte podle kroků pro převod .class na čitelný zdrojový kód Java. Zde používáme dekompilátor JAD.

Krok 1: Stáhněte si nástroj JAD z https://bit.ly/2XuRzT5

Krok 2: Rozbalte soubor zip a získejte jad.exe.

Java dekompilátor

Krok 3: Vytvořte soubor .java (DecompilerDemo.java) ve stejné složce, do které jste extrahovali soubor zip.

Krok 4: Zkompilujte a spusťte soubor .java. V příslušné složce vygeneruje soubor .class.

Java Decompiler2

Krok 5: Nyní přesuňte soubor .class a aplikaci jad do jiné složky.

Java Decompiler3

Krok 6: Zadejte příkaz: jad Decompiler Demo

Java Decompiler4

Výše uvedený příkaz vygeneruje soubor .jad v příslušné složce.

Java Decompiler5

Krok 7: Zadejte příkaz: jad ?s java DecompilerDemo

Java Decompiler6

Vygeneruje soubor .java ve stejné složce.

Java Decompiler 7

Otevřete soubor DecompilerDemo.java a získáme následující kód:

 // 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()); } } 

Můžeme pozorovat, že zapsaný .java soubor se liší od generovaného .java souboru, ale dává stejný výstup.

Java Class File Disassembler

příkaz javap

The javap je nástroj příkazového řádku Java, který je dodáván s JDK. Používá se k rozebrání souboru třídy a vytiskne lidsky čitelnou verzi této třídy. Jeho výstup závisí na použité možnosti. Bez použití jakékoli volby vytiskne javap balíček, chráněná a veřejná pole a metody tříd, které mu byly předány. A javap se také používá ke zjištění, které metody jsou dostupné pro třídu, pokud nemáte zdrojový kód, který byl použit k vytvoření třídy. Obecný formát příkazu javap je:

 javap [options] filename 

Možnosti

S příkazem javap je k dispozici mnoho možností. Někteří z nich jsou:

    -C:Vytiskne rozložený kód.-p:Zobrazuje všechny třídy a členy.-s:Tiskne podpisy interního typu.-konstanty:Ukazuje statické konečné konstanty.

Rozložte soubor třídy pomocí příkazu javap

 class DisassembleDemo { public static void main(String args[]) { System.out.println('Java'); } } 

Vygenerujte soubor třídy výše uvedeného programu a použijte následující příkaz k rozebrání souboru třídy.

 javap -c -p DisassembleDemo 

Výstup

Následující výstup ukazuje, co obsahuje soubor třídy.

Java Decompiler8

Ale nezískáme zdrojový kód Java pomocí příkazu javap. Existuje tedy mnoho dostupných dekompilátorů, které převádějí soubor .class na soubor .java.