logo

Java Decompiler

En Java Decompiler er en spesiell type decompiler som tar en klassefil som input og produserer Java-kildekode som output. Dekompileringen er nøyaktig den omvendte prosessen med kompilering. Dermed produserer ikke dekompileren en kopi av kildekoden. Det er fordi litt informasjon går tapt fra kildekoden under kompileringen av programmet.

Men det er mange kompleksiteter, for eksempel er Java-kode strukturert, og bytekode er ikke strukturert. Dessuten er transformasjonen ikke én til én: to forskjellige Java-programmer kan gi identisk bytekode.

java saksuttalelse

Det er følgende Java-dekompilatorer tilgjengelig:

  • DJ Java Decompiler
  • JReversePro
  • JØDER
  • JD-CORE/ JD-GUI/ JD Eclipse

JAD Decompiler

JAD er et kommandolinjeprogram. Det er skrevet i C++. Hovedfunksjonen er å demontere .class-filene. JAD kan distribueres fra konsollen, og den vil dekompilere Java-klasser til kildekoden. På denne måten kan utviklere se dypt inn i koden til Java runtime-biblioteker og til og med forskjønne linjene, forberede dem for en rekompilering. Det er en risiko for overskriving av kildekodefiler, spesielt når parameteren '-o' (overskriv utdatafiler uten bekreftelse) brukes.

Eksempel

La oss lage et enkelt Java-program som legger til to tall.

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

Følg trinnene for å konvertere .class til lesbar Java-kildekode. Her bruker vi JAD-dekompileren.

Trinn 1: Last ned JAD-verktøy fra https://bit.ly/2XuRzT5

nummer til streng java

Steg 2: Pakk ut zip-filen og få jad.exe.

Java Decompiler

Trinn 3: Lag en .java-fil (DecompilerDemo.java) i samme mappe som du har pakket ut zip-filen.

Trinn 4: Kompiler og kjør .java-filen. Den vil generere en .class-fil i den respektive mappen.

Java Decompiler 2

Trinn 5: Flytt nå .class-filen og jad-applikasjonen til en annen mappe.

Java Decompiler 3

Trinn 6: Skriv inn kommandoen: jad DecompilerDemo

Java Decompiler 4

Kommandoen ovenfor genererer en .jad-fil i den respektive mappen.

Java Decompiler 5

Trinn 7: Skriv inn kommandoen: jad ?s java DecompilerDemo

Java Decompiler 6

Den genererer .java-filen i samme mappe.

Java Decompiler 7

Åpne DecompilerDemo.java får vi følgende kode:

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

Vi kan observere at den skrevne .java-filen er forskjellig fra den genererte .java-filen, men gir samme utdata.

Java Class File Disassembler

armstrong nummer

javap kommando

De javap er et Java-kommandolinjeverktøy som følger med JDK. Den brukes til å demontere klassefilen og skriver ut en lesbar versjon av den klassen. Utgangen avhenger av alternativet som brukes. Uten å bruke noe alternativ, skriver javap ut pakken, beskyttede og offentlige felter og metodene for klassene som sendes til den. EN javap brukes også til å finne ut hvilke metoder som er tilgjengelige for en klasse hvis du ikke har kildekoden som ble brukt til å lage klassen. Det generelle formatet til javap-kommandoen er:

 javap [options] filename 

Alternativer

Med javap-kommandoen er mange alternativer tilgjengelige. Noen av dem er:

    -c:Den skriver ut demontert kode.-p:Den viser alle klasser og medlemmer.-s:Den skriver ut interne typesignaturer.-konstanter:Den viser statiske sluttkonstanter.

Demonter en klassefil ved å bruke javap-kommandoen

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

Generer klassefilen til programmet ovenfor og bruk følgende kommando for å demontere klassefilen.

javascript varslingsboks
 javap -c -p DisassembleDemo 

Produksjon

Følgende utdata viser hva klassefilen har inni.

Java Decompiler 8

Men vi får ikke Java-kildekoden ved å bruke javap-kommandoen. Så det er mange dekompileringsprogrammer tilgjengelig som konverterer en .class-fil til en .java-fil.