logo

Java Decompiler

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.

Java Decompiler

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.

Java Decompiler2

5. lépés: Most helyezze át a .class fájlt és a jad alkalmazást egy másik mappába.

Java Decompiler 3

6. lépés: Írja be a parancsot: jad DecompilerDemo

Java Decompiler 4

A fenti parancs létrehoz egy .jad fájlt a megfelelő mappában.

Java Decompiler 5

7. lépés: Írja be a parancsot: jad ?s java DecompilerDemo

bfa és b fa
Java Decompiler 6

Ugyanabban a mappában hozza létre a .java fájlt.

Java Decompiler 7

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:

    -c:Kiírja a szétszerelt kódot.-p:Megjeleníti az összes osztályt és tagot.-s:Belső típusú aláírásokat nyomtat.-konstansok:Statikus végső állandókat mutat.

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.

Java Decompiler 8

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.