logo

Java Decompiler

Java Decompiler je posebna vrsta decompilera koji uzima klasnu datoteku kao ulaz i proizvodi Java izvorni kod kao izlaz. Dekompilacija je upravo obrnuti proces od kompilacije. Stoga dekompilator ne proizvodi repliku izvornog koda. To je zato što se dio informacija izgubio iz izvornog koda tijekom kompilacije programa.

Ali postoje mnoge složenosti, na primjer, Java kod je strukturiran, a bajt kod nije strukturiran. Štoviše, transformacija nije jedan prema jedan: dva različita Java programa mogu dati identičan bajt kod.

Dostupni su sljedeći Java dekompileri:

slučajni broj gen java
  • DJ Java Decompiler
  • JReversePro
  • ŽIDOVI
  • JD-CORE/ JD-GUI/ JD Eclipse

JAD Decompiler

JAD je aplikacija naredbenog retka. Napisan je u C++. Glavna funkcija je rastaviti .class datoteke. JAD se može implementirati s konzole i dekompilirati će Java klase u izvorni kod. Na ovaj način programeri mogu duboko zaviriti u kod Java runtime biblioteka i čak uljepšati retke, pripremajući ih za ponovnu kompilaciju. Postoji rizik od prepisivanja datoteka izvornog koda, posebno kada se koristi parametar '-o' (prebriši izlazne datoteke bez potvrde).

Primjer

Kreirajmo jednostavan Java program koji zbraja dva broja.

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

Slijedite korake za pretvaranje .class u čitljiv Java izvorni kod. Ovdje koristimo JAD decompiler.

Korak 1: Preuzmite JAD alat s https://bit.ly/2XuRzT5

Korak 2: Raspakujte zip datoteku i nabavite jad.exe.

Java Decompiler

Korak 3: Napravite .java datoteku (DecompilerDemo.java) u istoj mapi u kojoj ste izdvojili zip datoteku.

Korak 4: Prevedite i pokrenite .java datoteku. Generirati će .class datoteku u odgovarajućoj mapi.

Java Decompiler 2

Korak 5: Sada premjestite .class datoteku i jad aplikaciju u drugu mapu.

Java Decompiler 3

Korak 6: Upišite naredbu: jad DecompilerDemo

Java Decompiler 4

Gornja naredba generira .jad datoteku u odgovarajućoj mapi.

Java Decompiler 5

Korak 7: Upišite naredbu: jad?s java DecompilerDemo

gimp kako poništiti odabir
Java Decompiler6

Generira .java datoteku u istoj mapi.

Java Decompiler 7

Otvorite DecompilerDemo.java i dobit ćemo sljedeći kod:

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

Možemo uočiti da se pisana .java datoteka razlikuje od generirane .java datoteke, ali daje isti izlaz.

Disassembler Java Class File

Naredba javap

The javap je alat Java naredbenog retka koji dolazi s JDK. Koristi se za rastavljanje datoteke klase i ispisuje čitljivu verziju te klase. Njegov učinak ovisi o korištenoj opciji. Bez korištenja bilo koje opcije, javap ispisuje paket, zaštićena i javna polja i metode klasa koje su mu proslijeđene. A javap također se koristi da saznate koje su metode dostupne za klasu ako nemate izvorni kod koji je korišten za stvaranje klase. Opći format javap naredbe je:

 javap [options] filename 

Mogućnosti

Uz naredbu javap dostupne su mnoge opcije. Neki od njih su:

    -c:Ispisuje rastavljeni kod.-p:Prikazuje sve klase i članove.-s:Ispisuje unutarnje tipske potpise.-konstante:Prikazuje statičke konačne konstante.

Rastavite klasnu datoteku pomoću javap naredbe

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

Generirajte datoteku klase gornjeg programa i upotrijebite sljedeću naredbu za rastavljanje datoteke klase.

 javap -c -p DisassembleDemo 

Izlaz

Sljedeći izlaz pokazuje što datoteka klase ima unutra.

Java Decompiler 8

Ali ne dobivamo Java izvorni kod pomoću naredbe javap. Dakle, postoji mnogo dostupnih dekompilatora koji pretvaraju .class datoteku u .java datoteku.