logo

Java dekompilators

Java dekompilators ir īpaša veida dekompilators, kas kā ievadi izmanto klases failu un kā izvadi rada Java avota kodu. Dekompilācija ir tieši apgrieztais kompilācijas process. Tādējādi dekompilators nerada avota koda kopiju. Tas ir tāpēc, ka programmas kompilēšanas laikā no avota koda tika zaudēta daļa informācijas.

Bet ir daudz sarežģījumu, piemēram, Java kods ir strukturēts, un baitu kods nav strukturēts. Turklāt transformācija nav viens pret vienu: divas dažādas Java programmas var iegūt identisku baitu kodu.

Ir pieejami šādi Java dekompilatori:

  • DJ Java dekompilators
  • JReversePro
  • EBREJI
  • JD-CORE/ JD-GUI/ JD Eclipse

JAD dekompilators

JAD ir komandrindas lietojumprogramma. Tas ir rakstīts C++ valodā. Galvenā funkcija ir .class failu izjaukšana. JAD var izvietot no konsoles, un tas dekompilēs Java klases avota kodā. Tādā veidā izstrādātāji var dziļi izpētīt Java izpildlaika bibliotēku kodu un pat izdaiļot rindas, sagatavojot tās atkārtotai kompilācijai. Pastāv avota koda failu pārrakstīšanas risks, īpaši, ja tiek izmantots parametrs '-o' (pārrakstīt izvades failus bez apstiprinājuma).

Piemērs

iegūstiet masīva garumu c

Izveidosim vienkāršu Java programmu, kas pievieno divus skaitļus.

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

Izpildiet darbības, lai pārveidotu .class par lasāmu Java avota kodu. Šeit mēs izmantojam JAD dekompilatoru.

1. darbība: Lejupielādējiet JAD rīku no https://bit.ly/2XuRzT5

2. darbība: Izvelciet zip failu un iegūstiet jad.exe.

Java dekompilators

3. darbība: Izveidojiet .java failu (DecompilerDemo.java) tajā pašā mapē, kurā esat izvilcis zip failu.

4. darbība: Kompilējiet un palaidiet .java failu. Tas ģenerēs .class failu attiecīgajā mapē.

Java dekompilators2

5. darbība: Tagad pārvietojiet .class failu un lietojumprogrammu jad uz citu mapi.

Java dekompilators3

6. darbība: Ierakstiet komandu: jad DecompilerDemo

Java dekompilators4

Iepriekš minētā komanda ģenerē .jad failu attiecīgajā mapē.

Java dekompilators5

7. darbība: Ierakstiet komandu: jad ?s java DecompilerDemo

bezmaksas ipconfig
Java dekompilators6

Tas ģenerē .java failu tajā pašā mapē.

Java dekompilators7

Atverot DecompilerDemo.java, mēs saņemam šādu kodu:

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

Varam novērot, ka uzrakstītais .java fails atšķiras no ģenerētā .java faila, taču sniedz tādu pašu izvadi.

Java klases failu izjaukšanas programma

javap komanda

The javap ir Java komandrindas rīks, kas tiek piegādāts kopā ar JDK. To izmanto, lai izjauktu klases failu un izdrukātu šīs klases cilvēkiem lasāmu versiju. Tās izvade ir atkarīga no izmantotās opcijas. Neizmantojot nevienu opciju, javap izdrukā tam nodoto klašu pakotni, aizsargātos un publiskos laukus un metodes. A javap tiek izmantots arī, lai noskaidrotu, kuras metodes ir pieejamas klasei, ja jums nav avota koda, kas tika izmantots klases izveidei. Javap komandas vispārējais formāts ir:

 javap [options] filename 

Iespējas

Izmantojot javap komandu, ir pieejamas daudzas iespējas. Daži no tiem ir:

    -c:Tas izdrukā izjauktu kodu.-p:Tas parāda visas klases un dalībniekus.-s:Tas drukā iekšējā tipa parakstus.-konstantes:Tas parāda statiskās galīgās konstantes.

Izjauciet klases failu, izmantojot javap komandu

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

Ģenerējiet iepriekš minētās programmas klases failu un izmantojiet šo komandu, lai izjauktu klases failu.

 javap -c -p DisassembleDemo 

Izvade

Šī izvade parāda, kas ir klases failā.

Java dekompilators8

Bet mēs neiegūstam Java avota kodu, izmantojot javap komandu. Tāpēc ir pieejami daudzi dekompilatori, kas konvertē .class failu par .java failu.