logo

Java Derleyicisi

Java Derleyicisi, bir sınıf dosyasını girdi olarak alan ve çıktı olarak Java kaynak kodunu üreten özel bir derleyici türüdür. Kaynak koda dönüştürme, derleme işleminin tam tersidir. Bu nedenle, kod çözücü kaynak kodun bir kopyasını üretmez. Bunun nedeni programın derlenmesi sırasında kaynak kodundan bir miktar bilginin kaybolmasıdır.

Ancak pek çok karmaşıklık vardır; örneğin Java kodu yapılandırılmıştır ve bayt kodu yapılandırılmamıştır. Üstelik dönüşüm bire bir değildir: iki farklı Java programı aynı bayt kodunu verebilir.

java dizeleri

Aşağıdaki Java kod çözücüler mevcuttur:

  • DJ Java Derleyicisi
  • JReversePro
  • YAHUDİLER
  • JD-CORE/ JD-GUI/ JD Eclipse

JAD Derleyicisi

JAD bir komut satırı uygulamasıdır. C++ ile yazılmıştır. Ana işlev .class dosyalarını parçalara ayırmaktır. JAD konsoldan dağıtılabilir ve Java sınıflarını kaynak koduna dönüştürür. Bu şekilde geliştiriciler, Java çalışma zamanı kitaplıklarının kodlarına derinlemesine bakabilir ve hatta satırları güzelleştirerek onları yeniden derlemeye hazırlayabilir. Özellikle '-o' (onay olmadan çıktı dosyalarının üzerine yaz) parametresi kullanıldığında kaynak kod dosyalarının üzerine yazılma riski vardır.

Örnek

İki sayıyı toplayan basit bir Java programı oluşturalım.

 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 dosyasını okunabilir Java kaynak koduna dönüştürmek için adımları izleyin. Burada JAD kod çözücüyü kullanıyoruz.

Aşama 1: JAD aracını şuradan indirin: https://bit.ly/2XuRzT5

Java dizi listesi sıralandı

Adım 2: Zip dosyasını çıkartın ve jad.exe'yi edinin.

Java Derleyicisi

Aşama 3: Zip dosyasını çıkardığınız klasörde bir .java dosyası (DecompilerDemo.java) oluşturun.

Adım 4: .Java dosyasını derleyin ve çalıştırın. İlgili klasörde bir .class dosyası oluşturacaktır.

Java Derleyicisi2

Adım 5: Şimdi .class dosyasını ve jad uygulamasını başka bir klasöre taşıyın.

Java Derleyicisi3

Adım 6: Komutu yazın: jad DecompilerDemo

Java Derleyicisi4

Yukarıdaki komut, ilgili klasörde bir .jad dosyası oluşturur.

Java Derleyicisi5

Adım 7: Komutu yazın: jad'ın java DecompilerDemo'su

Java Derleyicisi6

Aynı klasörde .Java dosyasını oluşturur.

Java Derleyicisi7

DecompilerDemo.java'yı açın, aşağıdaki kodu elde ederiz:

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

Yazılan .java dosyasının, oluşturulan .java dosyasından farklı olduğunu ancak aynı çıktıyı verdiğini görebiliriz.

Java Sınıfı Dosya Ayırıcı

c++ dizesinde bul

javap Komutu

javap JDK ile birlikte gelen bir Java komut satırı aracıdır. Sınıf dosyasını parçalara ayırmak ve o sınıfın insan tarafından okunabilir bir versiyonunu yazdırmak için kullanılır. Çıktısı kullanılan seçeneğe bağlıdır. Javap herhangi bir seçenek kullanmadan kendisine iletilen sınıfların paketini, korumalı ve ortak alanlarını ve yöntemlerini yazdırır. A javap sınıfı oluşturmak için kullanılan kaynak kodunuz yoksa, bir sınıf için hangi yöntemlerin mevcut olduğunu bulmak için de kullanılır. Javap komutunun genel formatı şöyledir:

 javap [options] filename 

Seçenekler

Javap komutu ile birçok seçenek mevcuttur. Onlardan bazıları:

    -C:Demonte edilmiş kodu yazdırır.-P:Tüm sınıfları ve üyeleri gösterir.-S:Dahili tip imzaları yazdırır.-sabitler:Statik son sabitleri gösterir.

Javap komutunu kullanarak bir sınıf dosyasını parçalara ayırın

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

Yukarıdaki programın sınıf dosyasını oluşturun ve sınıf dosyasını sökmek için aşağıdaki komutu kullanın.

uzman sistemler
 javap -c -p DisassembleDemo 

Çıktı

Aşağıdaki çıktı, sınıf dosyasının içinde ne olduğunu gösterir.

Java Derleyicisi8

Ancak javap komutunu kullanarak Java kaynak kodunu alamıyoruz. Dolayısıyla, bir .class dosyasını bir .java dosyasına dönüştüren birçok kod çözücü mevcuttur.