logo

Dekompilator Java

Dekompilator Java to specjalny typ dekompilatora, który pobiera plik klasy jako dane wejściowe i generuje kod źródłowy Java jako dane wyjściowe. Dekompilacja jest dokładnie odwrotnym procesem kompilacji. Dlatego dekompilator nie tworzy repliki kodu źródłowego. Dzieje się tak dlatego, że podczas kompilacji programu utracono część informacji z kodu źródłowego.

Istnieje jednak wiele zawiłości, na przykład kod Java ma strukturę, a kod bajtowy nie ma struktury. Co więcej, transformacja nie jest jeden do jednego: dwa różne programy Java mogą dać identyczny kod bajtowy.

Dostępne są następujące dekompilatory Java:

  • Dekompilator Java dla DJ-a
  • JReversePro
  • ŻYDZI
  • JD-CORE/JD-GUI/JD Eclipse

Dekompilator JAD

JAD jest aplikacją uruchamianą z wiersza poleceń. Jest napisany w C++. Główną funkcją jest deasemblacja plików .class. JAD można wdrożyć z konsoli i będzie on dekompilował klasy Java do kodu źródłowego. W ten sposób programiści mogą zajrzeć głęboko w kod bibliotek wykonawczych Java, a nawet upiększyć linie, przygotowując je do rekompilacji. Istnieje ryzyko nadpisania plików kodu źródłowego, szczególnie w przypadku użycia parametru „-o” (nadpisanie plików wyjściowych bez potwierdzenia).

Przykład

Stwórzmy prosty program w Javie, który dodaje dwie liczby.

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

Postępuj zgodnie z instrukcjami, aby przekonwertować plik .class na czytelny kod źródłowy Java. Tutaj używamy dekompilatora JAD.

Krok 1: Pobierz narzędzie JAD z https://bit.ly/2XuRzT5

Wartość ciągu Java

Krok 2: Wyodrębnij plik zip i pobierz plik jad.exe.

Dekompilator Java

Krok 3: Utwórz plik .java (DecompilerDemo.java) w tym samym folderze, w którym rozpakowałeś plik ZIP.

Krok 4: Skompiluj i uruchom plik .java. Wygeneruje plik .class w odpowiednim folderze.

Dekompilator Java2

Krok 5: Teraz przenieś plik .class i aplikację jad do innego folderu.

Dekompilator Java3

Krok 6: Wpisz polecenie: jad DecompilerDemo

Dekompilator Java 4

Powyższe polecenie generuje plik .jad w odpowiednim folderze.

Dekompilator Java5

Krok 7: Wpisz polecenie: jad ?s Java DecompilerDemo

Dekompilator Java 6

Generuje plik .java w tym samym folderze.

Dekompilator Java7

Otwórz plik DecompilerDemo.java, otrzymamy następujący 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żemy zauważyć, że zapisany plik .java różni się od wygenerowanego pliku .java, ale daje taki sam wynik.

jeśli inaczej, jeśli inaczej, jeśli Java

Dezasembler plików klas Java

Komenda javapa

The javap to narzędzie wiersza poleceń Java dostarczane z pakietem JDK. Służy do deasemblacji pliku klasy i wypisywania czytelnej dla człowieka wersji tej klasy. Jego wynik zależy od użytej opcji. Nie używając żadnej opcji, javap wypisuje pakiet, pola chronione i publiczne oraz metody przekazanych mu klas. A javap służy również do sprawdzenia, które metody są dostępne dla klasy, jeśli nie masz kodu źródłowego użytego do utworzenia klasy. Ogólny format polecenia javap to:

 javap [options] filename 

Opcje

Dzięki poleceniu javap dostępnych jest wiele opcji. Niektórzy z nich są:

    -C:Drukuje zdemontowany kod.-P:Pokazuje wszystkie klasy i członków.-S:Drukuje podpisy typu wewnętrznego.-stałe:Pokazuje statyczne stałe końcowe.

Zdemontuj plik klasy za pomocą polecenia javap

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

Wygeneruj plik klasy powyższego programu i użyj następującego polecenia, aby zdeasemblować plik klasy.

ddl kontra dml
 javap -c -p DisassembleDemo 

Wyjście

Poniższe dane wyjściowe pokazują, co zawiera plik klasy.

Dekompilator Java8

Ale nie otrzymujemy kodu źródłowego Java za pomocą polecenia javap. Dlatego dostępnych jest wiele dekompilatorów, które konwertują plik .class na plik .java.