A Java Decompiler egy speciális típusú visszafejtő, amely egy osztályfájlt vesz be bemenetként, és Java forráskódot állít elő kimenetként. A dekompiláció pontosan a fordítás fordított folyamata. Így a decompiler nem állítja elő a forráskód replikáját. Ez azért van, mert a program fordítása során egy kis információ elveszett a forráskódból.
De sok bonyolultság van, például a Java kód strukturált, a bájtkód pedig nem strukturált. Ráadásul az átalakítás nem egy az egyhez: két különböző Java program azonos bájtkódot eredményezhet.
A következő Java-defordítók állnak rendelkezésre:
- DJ Java Decompiler
- JReversePro
- ZSIDÓK
- JD-CORE/ JD-GUI/ JD Eclipse
JAD Decompiler
A JAD egy parancssori alkalmazás. C++-ban van megírva. A fő funkció a .class fájlok szétszedése. A JAD a konzolról telepíthető, és a Java osztályokat visszafordítja a forráskódba. Így a fejlesztők mélyen belenézhetnek a Java futásidejű könyvtárak kódjába, sőt még szépíthetik is a sorokat, felkészítve őket az újrafordításra. Fennáll a forráskódfájlok felülírásának veszélye, különösen akkor, ha a „-o” (kimeneti fájlok felülírása megerősítés nélkül) paramétert használjuk.
Példa
java programozás váltása
Hozzunk létre egy egyszerű Java programot, amely két számot ad hozzá.
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); } }
Kövesse a lépéseket a .class olvasható Java forráskóddá alakításához. Itt JAD decompilert használunk.
java arraylist rendezve
1. lépés: Töltse le a JAD eszközt innen https://bit.ly/2XuRzT5
2. lépés: Csomagolja ki a zip fájlt, és töltse le a jad.exe fájlt.
3. lépés: Hozzon létre egy .java fájlt (DecompilerDemo.java) ugyanabban a mappában, amelybe a zip fájlt kicsomagolta.
4. lépés: Fordítsa le és futtassa a .java fájlt. Ez létrehoz egy .class fájlt a megfelelő mappában.
5. lépés: Most helyezze át a .class fájlt és a jad alkalmazást egy másik mappába.
6. lépés: Írja be a parancsot: jad DecompilerDemo
A fenti parancs létrehoz egy .jad fájlt a megfelelő mappában.
7. lépés: Írja be a parancsot: jad ?s java DecompilerDemo
bfa és b fa
Ugyanabban a mappában hozza létre a .java fájlt.
Nyissa meg a DecompilerDemo.java fájlt, és a következő kódot kapjuk:
// 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()); } }
Megfigyelhetjük, hogy az írott .java fájl eltér a generált .java fájltól, de ugyanazt a kimenetet adja.
Java Class File Disassembler
javap parancs
mark zuckerberg oktatás
A javap egy Java parancssori eszköz, amely a JDK-val érkezik. Az osztályfájl szétszedésére szolgál, és kinyomtatja az osztály ember által olvasható változatát. Kimenete a használt opciótól függ. A javap opciók használata nélkül kiírja a neki átadott osztályok csomagját, védett és nyilvános mezőit és metódusait. A javap arra is szolgál, hogy megtudja, mely metódusok állnak rendelkezésre egy osztályhoz, ha nem rendelkezik az osztály létrehozásához használt forráskóddal. A javap parancs általános formátuma:
javap [options] filename
Lehetőségek
1 millió hány 0
A javap paranccsal számos lehetőség áll rendelkezésre. Néhány közülük:
Szerelje szét az osztályfájlt a javap paranccsal
class DisassembleDemo { public static void main(String args[]) { System.out.println('Java'); } }
Hozza létre a fenti program osztályfájlját, és használja a következő parancsot az osztályfájl szétszedéséhez.
javap -c -p DisassembleDemo
Kimenet
A következő kimenet megmutatja, hogy mi van az osztályfájlban.
De nem kapjuk meg a Java forráskódot a javap paranccsal. Tehát sok defordító áll rendelkezésre, amelyek a .class fájlokat .java fájllá alakítják.