logo

Декомпилатор на Java

Декомпилаторът на Java е специален тип декомпилатор, който приема файл с клас като вход и произвежда изходен код на Java като изход. Декомпилирането е точно обратният процес на компилирането. По този начин декомпилаторът не създава реплика на изходния код. Това е така, защото малко информация се губи от изходния код по време на компилирането на програмата.

Но има много сложности, например Java кодът е структуриран, а байт кодът не е структуриран. Освен това, трансформацията не е едно към едно: две различни Java програми могат да дадат идентичен байт код.

Налични са следните Java декомпилатори:

java сравнява низове
  • DJ Java декомпилатор
  • JReversePro
  • ЕВРЕИ
  • JD-CORE/ JD-GUI/ JD Eclipse

Декомпилатор на JAD

JAD е приложение от командния ред. Написан е на C++. Основната функция е да разглобявате .class файловете. JAD може да се внедри от конзолата и ще декомпилира Java класовете в изходния код. По този начин разработчиците могат да надникнат дълбоко в кода на библиотеките за изпълнение на Java и дори да разкрасят редовете, подготвяйки ги за повторно компилиране. Съществува риск от презаписване на файлове с изходен код, особено когато се използва параметърът „-o“ (презаписване на изходни файлове без потвърждение).

Пример

Нека създадем проста програма на Java, която добавя две числа.

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

Следвайте стъпките, за да конвертирате .class в четим изходен код на Java. Тук използваме JAD декомпилатор.

Етап 1: Изтеглете инструмента JAD от https://bit.ly/2XuRzT5

безплатен ipconfig

Стъпка 2: Разархивирайте zip файла и вземете jad.exe.

Декомпилатор на Java

Стъпка 3: Създайте .java файл (DecompilerDemo.java) в същата папка, в която сте извлекли zip файла.

Стъпка 4: Компилирайте и стартирайте .java файла. Той ще генерира .class файл в съответната папка.

Java Decompiler2

Стъпка 5: Сега преместете файла .class и приложението jad в друга папка.

Java Decompiler3

Стъпка 6: Въведете командата: jad DecompilerDemo

Java Decompiler4

Горната команда генерира .jad файл в съответната папка.

Декомпилатор на Java 5

Стъпка 7: Въведете командата: jad ?s java DecompilerDemo

Java Decompiler6

Той генерира .java файла в същата папка.

Java Decompiler7

Отворете DecompilerDemo.java, получаваме следния код:

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

Можем да забележим, че написаният .java файл е различен от генерирания .java файл, но дава същия резултат.

Java Class File Disassembler

Команда javap

спи в javascript

The javap е инструмент за команден ред на Java, който идва с JDK. Използва се за разглобяване на файла на класа и отпечатване на четима от човека версия на този клас. Неговият резултат зависи от използваната опция. Без да използва никаква опция, javap отпечатва пакета, защитените и публичните полета и методите на предадените му класове. А javap също се използва, за да разберете кои методи са налични за клас, ако нямате изходния код, който е използван за създаване на класа. Общият формат на командата javap е:

 javap [options] filename 

Настроики

npm изчистване на кеша

С командата javap са налични много опции. Някои от тях са:

    -° С:Отпечатва разглобен код.-p:Показва всички класове и членове.-с:Той отпечатва подписи на вътрешен тип.-константи:Показва статични крайни константи.

Разглобете класов файл с помощта на командата javap

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

Генерирайте класовия файл на горната програма и използвайте следната команда, за да разглобите класовия файл.

 javap -c -p DisassembleDemo 

Изход

Следният изход показва какво съдържа файлът на класа вътре.

Java Decompiler8

Но ние не получаваме изходния код на Java с помощта на командата javap. Така че има много налични декомпилатори, които конвертират .class файл в .java файл.