logo

Decompiler Java

Un decompiler Java este un tip special de decompilator care ia un fișier de clasă ca intrare și produce cod sursă Java ca ieșire. Decompilarea este exact procesul invers al compilarii. Astfel, decompilerul nu produce o replică a codului sursă. Se datorează faptului că un pic de informație s-a pierdut din codul sursă în timpul compilării programului.

Dar există multe complexități, de exemplu, codul Java este structurat, iar codul octet nu este structurat. Mai mult decât atât, transformarea nu este unul la unu: două programe Java diferite pot produce cod octet identic.

Există următoarele decompilatoare Java disponibile:

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

Decompiler JAD

JAD este o aplicație de linie de comandă. Este scris în C++. Funcția principală este de a dezasambla fișierele .class. JAD poate fi implementat din consolă și va decompila clasele Java în codul sursă. În acest fel, dezvoltatorii pot cerceta în profunzime codul bibliotecilor Java runtime și chiar pot înfrumuseța liniile, pregătindu-le pentru o recompilare. Există riscul suprascrierii fișierelor de cod sursă, mai ales atunci când este utilizat parametrul „-o” (suprascrierea fișierelor de ieșire fără confirmare).

Exemplu

Să creăm un program Java simplu care adaugă două numere.

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

Urmați pașii pentru a converti .class în cod sursă Java care poate fi citit. Aici folosim decompilatorul JAD.

dimensiunea textului latex

Pasul 1: Descărcați instrumentul JAD de la https://bit.ly/2XuRzT5

Pasul 2: Extrageți fișierul zip și obțineți jad.exe.

Decompiler Java

Pasul 3: Creați un fișier .java (DecompilerDemo.java) în același folder în care ați extras fișierul zip.

Pasul 4: Compilați și rulați fișierul .java. Va genera un fișier .class în folderul respectiv.

Java Decompiler2

Pasul 5: Acum mutați fișierul .class și aplicația jad într-un alt folder.

Java Decompiler3

Pasul 6: Tastați comanda: jad DecompilerDemo

Java Decompiler4

Comanda de mai sus generează un fișier .jad în folderul respectiv.

Java Decompiler5

Pasul 7: Tastați comanda: jad ?s java DecompilerDemo

Java Decompiler6

Acesta generează fișierul .java în același folder.

Java Decompiler7

Deschideți DecompilerDemo.java obținem următorul cod:

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

Putem observa că fișierul .java scris este diferit de fișierul .java generat, dar dă aceeași ieșire.

care este sistemul de fișiere linux

Dezasamblator de fișiere de clasă Java

Comanda javap

The javap este un instrument de linie de comandă Java care vine cu JDK. Este folosit pentru a dezasambla fișierul de clasă și pentru a tipări o versiune care poate fi citită de om a acelei clase. Ieșirea sa depinde de opțiunea utilizată. Fără a folosi nicio opțiune, javap tipărește pachetul, câmpurile protejate și publice și metodele claselor transmise acestuia. A javap este, de asemenea, folosit pentru a afla ce metode sunt disponibile pentru o clasă dacă nu aveți codul sursă care a fost folosit pentru a crea clasa. Formatul general al comenzii javap este:

 javap [options] filename 

Opțiuni

Cu comanda javap, sunt disponibile multe opțiuni. Unii dintre ei sunt:

    -c:Tipărește codul dezasamblat.-p:Afișează toate clasele și membrii.-s:Imprimă semnături de tip intern.- constante:Afișează constantele finale statice.

Dezasamblați un fișier de clasă folosind comanda javap

tipuri de învățare automată
 class DisassembleDemo { public static void main(String args[]) { System.out.println('Java'); } } 

Generați fișierul de clasă al programului de mai sus și utilizați următoarea comandă pentru a dezasambla fișierul de clasă.

 javap -c -p DisassembleDemo 

Ieșire

Următoarea ieșire arată ce conține fișierul de clasă.

Java Decompiler8

Dar nu obținem codul sursă Java folosind comanda javap. Deci, există multe decompilatoare disponibile care convertesc un fișier .class într-un fișier .java.