logo

Java Decompiler

Java Decompiler on erityinen purkuohjelma, joka ottaa luokkatiedoston syötteenä ja tuottaa Java-lähdekoodin ulostulona. Purkaminen on täsmälleen käänteinen käännösprosessi. Näin ollen kääntäjä ei tuota kopiota lähdekoodista. Tämä johtuu siitä, että lähdekoodista on kadonnut vähän tietoa ohjelman kääntämisen aikana.

Mutta on monia monimutkaisia, esimerkiksi Java-koodi on strukturoitu, ja tavukoodi ei ole jäsennelty. Lisäksi muunnos ei ole yksi yhteen: kaksi eri Java-ohjelmaa voivat tuottaa identtisen tavukoodin.

Saatavilla on seuraavat Java-kääntäjät:

  • DJ Java Decompiler
  • JReversePro
  • JUUTALAISET
  • JD-CORE/ JD-GUI/ JD Eclipse

JAD Decompiler

JAD on komentorivisovellus. Se on kirjoitettu C++:lla. Päätoiminto on .class-tiedostojen purkaminen. JAD voidaan ottaa käyttöön konsolista, ja se purkaa Java-luokat lähdekoodiksi. Tällä tavalla kehittäjät voivat tarkastella syvälle Java-ajonaikaisten kirjastojen koodia ja jopa kaunistaa rivejä valmistaen ne uudelleenkääntämistä varten. Lähdekooditiedostojen päällekirjoitusriski on olemassa, varsinkin kun käytetään parametria '-o' (korvaa tulostetiedostot ilman vahvistusta).

Esimerkki

Luodaan yksinkertainen Java-ohjelma, joka lisää kaksi numeroa.

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

Noudata ohjeita muuntaaksesi .class luettavaksi Java-lähdekoodiksi. Tässä käytämme JAD-dekäännösohjelmaa.

Vaihe 1: Lataa JAD-työkalu osoitteesta https://bit.ly/2XuRzT5

Vaihe 2: Pura zip-tiedosto ja hanki jad.exe.

Java Decompiler

Vaihe 3: Luo .java-tiedosto (DecompilerDemo.java) samaan kansioon, johon olet purkanut zip-tiedoston.

Vaihe 4: Käännä ja suorita .java-tiedosto. Se luo .class-tiedoston vastaavaan kansioon.

Java Decompiler 2

Vaihe 5: Siirrä nyt .class-tiedosto ja jad-sovellus toiseen kansioon.

taulukot java
Java Decompiler 3

Vaihe 6: Kirjoita komento: jad DecompilerDemo

Java Decompiler 4

Yllä oleva komento luo .jad-tiedoston vastaavaan kansioon.

Java Decompiler 5

Vaihe 7: Kirjoita komento: jad ?s java DecompilerDemo

gimp kuinka valinta poistetaan
Java Decompiler 6

Se luo .java-tiedoston samaan kansioon.

Java Decompiler 7

Avaa DecompilerDemo.java, saamme seuraavan koodin:

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

Voimme havaita, että kirjoitettu .java-tiedosto eroaa luodusta .java-tiedostosta, mutta antaa saman tulosteen.

Java Class File Disassembler

javap-komento

The javap on Java-komentorivityökalu, joka tulee JDK:n mukana. Sitä käytetään luokkatiedoston purkamiseen ja se tulostaa ihmisen luettavan version kyseisestä luokasta. Sen teho riippuu käytetystä vaihtoehdosta. Käyttämättä mitään vaihtoehtoa, javap tulostaa sille välitettyjen luokkien paketin, suojatut ja julkiset kentät ja menetelmät. A javap käytetään myös selvittämään, mitkä menetelmät ovat käytettävissä luokassa, jos sinulla ei ole luokan luomiseen käytettyä lähdekoodia. Javap-komennon yleinen muoto on:

 javap [options] filename 

Vaihtoehdot

Javap-komennolla on monia vaihtoehtoja. Jotkut niistä ovat:

    -c:Se tulostaa puretun koodin.-p:Se näyttää kaikki luokat ja jäsenet.-s:Se tulostaa sisäiset tyyppiallekirjoitukset.-vakiot:Se näyttää staattiset loppuvakiot.

Pura luokkatiedosto javap-komennolla

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

Luo yllä olevan ohjelman luokkatiedosto ja pura luokkatiedosto seuraavalla komennolla.

 javap -c -p DisassembleDemo 

Lähtö

Seuraava tulos näyttää, mitä luokkatiedostossa on.

Java Decompiler 8

Emme kuitenkaan saa Java-lähdekoodia käyttämällä javap-komentoa. Joten saatavilla on monia purkuohjelmia, jotka muuntavat .class-tiedoston .java-tiedostoksi.