logo

Java Decompiler

En Java Decompiler er en speciel type decompiler, som tager en klassefil som input og producerer Java-kildekode som output. Dekompileringen er nøjagtig den omvendte proces af kompilering. Decompiler producerer således ikke en replika af kildekoden. Det skyldes, at en smule information går tabt fra kildekoden under kompileringen af ​​programmet.

Men der er mange kompleksiteter, for eksempel er Java-kode struktureret, og byte-kode er ikke struktureret. Desuden er transformationen ikke én til én: to forskellige Java-programmer kan give identisk bytekode.

java sagsfremstilling

Der er følgende Java-decompilere tilgængelige:

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

JAD Decompiler

JAD er et kommandolinjeprogram. Det er skrevet i C++. Hovedfunktionen er at adskille .class filerne. JAD kan implementeres fra konsollen, og det vil dekompilere Java-klasser i kildekoden. På denne måde kan udviklere se dybt ind i koden for Java runtime-biblioteker og endda forskønne linjerne og forberede dem til en genkompilering. Der er risiko for overskrivning af kildekodefiler, især når parameteren '-o' (overskriv outputfiler uden bekræftelse) bruges.

Eksempel

Lad os skabe et simpelt Java-program, som tilføjer to tal.

 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 trinene for at konvertere .class til læsbar Java-kildekode. Her bruger vi JAD decompiler.

Trin 1: Download JAD-værktøj fra https://bit.ly/2XuRzT5

int til streng i java

Trin 2: Udpak zip-filen og få jad.exe.

Java Decompiler

Trin 3: Opret en .java-fil (DecompilerDemo.java) i den samme mappe, som du har pakket zip-filen ud.

Trin 4: Kompiler og kør .java-filen. Det vil generere en .class-fil i den respektive mappe.

Java Decompiler 2

Trin 5: Flyt nu .class-filen og jad-applikationen til en anden mappe.

Java Decompiler 3

Trin 6: Skriv kommandoen: jad DecompilerDemo

Java Decompiler 4

Ovenstående kommando genererer en .jad-fil i den respektive mappe.

Java Decompiler 5

Trin 7: Skriv kommandoen: jad ?s java DecompilerDemo

Java Decompiler 6

Den genererer .java-filen i samme mappe.

Java Decompiler 7

Åbn DecompilerDemo.java, vi får 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-fil er forskellig fra den genererede .java-fil, men giver det samme output.

Java Class File Disassembler

hvordan finder jeg skjulte apps på Android

javap kommando

Det javap er et Java-kommandolinjeværktøj, der følger med JDK. Den bruges til at adskille klassefilen og udskriver en menneskelæselig version af den klasse. Dens output afhænger af den anvendte mulighed. Uden at bruge nogen valgmulighed, udskriver javap pakken, beskyttede og offentlige felter og metoder for de klasser, der sendes til den. EN javap bruges også til at finde ud af, hvilke metoder der er tilgængelige for en klasse, hvis du ikke har den kildekode, der blev brugt til at oprette klassen. Det generelle format for javap-kommando er:

 javap [options] filename 

Muligheder

Med javap-kommandoen er mange muligheder tilgængelige. Nogle af dem er:

    -c:Den udskriver adskilt kode.-p:Det viser alle klasser og medlemmer.-s:Den udskriver interne typesignaturer.-konstanter:Den viser statiske slutkonstanter.

Adskil en klassefil ved hjælp af javap-kommandoen

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

Generer klassefilen for ovenstående program og brug følgende kommando til at adskille klassefilen.

python gem json til fil
 javap -c -p DisassembleDemo 

Produktion

Følgende output viser, hvad klassefilen har inde.

Java Decompiler 8

Men vi får ikke Java-kildekoden ved at bruge javap-kommandoen. Så der er mange tilgængelige decompilere, som konverterer en .class-fil til en .java-fil.