Јава декомпајлер је посебан тип декомпајлера који узима датотеку класе као улаз и производи Јава изворни код као излаз. Декомпилација је управо обрнути процес компилације. Дакле, декомпајлер не производи реплику изворног кода. То је зато што је део информација изгубљен из изворног кода током компилације програма.
Али има много сложености, на пример, Јава код је структуриран, а бајт код није структуриран. Штавише, трансформација није један према један: два различита Јава програма могу дати идентичан бајт код.
гит статус
Доступни су следећи Јава декомпајлатори:
- ДЈ Јава Децомпилер
- ЈРеверсеПро
- ЈЕВРЕЈИ
- ЈД-ЦОРЕ/ ЈД-ГУИ/ ЈД Ецлипсе
ЈАД Децомпилер
ЈАД је апликација са командне линије. Написан је у Ц++. Главна функција је растављање датотека .цласс. ЈАД се може применити са конзоле и декомпилирати Јава класе у изворни код. На овај начин, програмери могу да погледају дубоко у код Јава рунтиме библиотека и чак да улепшају линије, припремајући их за поновну компилацију. Постоји ризик од преписивања датотека изворног кода, посебно када се користи параметар '-о' (препиши излазне датотеке без потврде).
Пример
Хајде да направимо једноставан Јава програм који додаје два броја.
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); } }
Пратите кораке да бисте претворили .цласс у читљив Јава изворни код. Овде користимо ЈАД декомпајлер.
Корак 1: Преузмите ЈАД алат са хттпс://бит.ли/2КсуРзТ5
Корак 2: Распакујте зип датотеку и преузмите јад.еке.
Корак 3: Креирајте .јава датотеку (ДецомпилерДемо.јава) у истој фасцикли у коју сте распаковали зип датотеку.
4. корак: Преведите и покрените .јава датотеку. Генерисаће датотеку .цласс у одговарајућој фасцикли.
5. корак: Сада преместите датотеку .цласс и јад апликацију у другу фасциклу.
Корак 6: Откуцајте команду: јад ДецомпилерДемо
Горња команда генерише .јад датотеку у одговарајућој фасцикли.
7. корак: Откуцајте команду: јад ?с јава ДецомпилерДемо
арп - команда
Он генерише .јава датотеку у истој фасцикли.
Отворите ДецомпилерДемо.јава и добијамо следећи код:
// 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()); } }
Можемо приметити да се написана .јава датотека разликује од генерисане .јава датотеке, али даје исти излаз.
Јава Цласс Филе Дисассемблер
јавап Цомманд
Тхе јавап је Јава алатка командне линије која долази са ЈДК. Користи се за растављање датотеке класе и штампа читљиву верзију те класе. Његов излаз зависи од опције која се користи. Без коришћења било које опције, јавап штампа пакет, заштићена и јавна поља и методе класа које су му прослеђене. А јавап се такође користи да сазна које су методе доступне за класу ако немате изворни код који је коришћен за креирање класе. Општи формат јавап команде је:
javap [options] filename
Опције
Са јавап командом, доступне су многе опције. Неки од њих су:
Раставите датотеку класе помоћу јавап команде
class DisassembleDemo { public static void main(String args[]) { System.out.println('Java'); } }
Генеришите датотеку класе горњег програма и користите следећу команду да раставите датотеку класе.
javap -c -p DisassembleDemo
Излаз
Следећи излаз показује шта датотека класе има унутра.
Али не добијамо Јава изворни код коришћењем јавап команде. Дакле, постоји много доступних декомпајлера који претварају .цласс датотеку у .јава датотеку.