يعد برنامج Java Decompiler نوعًا خاصًا من برامج فك الترجمة التي تأخذ ملف فئة كمدخل وتنتج كود مصدر Java كمخرج. إن عملية إلغاء الترجمة هي بالضبط عملية عكسية للتجميع. وبالتالي، لا ينتج برنامج decompiler نسخة طبق الأصل من التعليمات البرمجية المصدر. وذلك بسبب فقدان بعض المعلومات من الكود المصدري أثناء تجميع البرنامج.
ولكن هناك العديد من التعقيدات، على سبيل المثال، كود Java منظم، ورمز البايت غير منظم. علاوة على ذلك، فإن التحويل لا يتم من واحد إلى واحد: فقد ينتج عن برنامجين مختلفين من برامج Java كود بايت متطابق.
تتوفر برامج فك تشفير Java التالية:
- دي جي جافا ديكومبيلر
- JReversePro
- يهود
- دينار-كور/ دينار-واجهة المستخدم الرسومية/ دينار الكسوف
JAD Decompiler
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 decompiler.
الخطوة 1: قم بتنزيل أداة JAD من https://bit.ly/2XuRzT5
الخطوة 2: قم باستخراج الملف المضغوط واحصل على jad.exe.
الخطوه 3: قم بإنشاء ملف .java (DecompilerDemo.java) في نفس المجلد الذي قمت باستخراج الملف المضغوط فيه.
الخطوة 4: تجميع وتشغيل ملف .java. سيتم إنشاء ملف .class في المجلد المعني.
الخطوة 5: الآن انقل ملف .class وتطبيق jad إلى مجلد آخر.
الخطوة 6: اكتب الأمر: jad DecompilerDemo
حدد جدول متعدد SQL
يقوم الأمر أعلاه بإنشاء ملف .jad في المجلد المعني.
الخطوة 7: اكتب الأمر: جاد جافا DecompilerDemo
جافا مقارنة السلسلة
يقوم بإنشاء ملف .java في نفس المجلد.
افتح 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 الذي تم إنشاؤه ولكنه يعطي نفس الإخراج.
جافا فئة ملف المفكك
قيادة جافا
ال javap هي أداة سطر أوامر Java والتي تأتي مع JDK. يتم استخدامه لتفكيك ملف الفئة وطباعة نسخة يمكن قراءتها بواسطة الإنسان من تلك الفئة. يعتمد إنتاجه على الخيار المستخدم. بدون استخدام أي خيار، يقوم javap بطباعة الحزمة والحقول المحمية والعامة وطرق الفئات التي تم تمريرها إليها. أ javap يُستخدم أيضًا لمعرفة الطرق المتاحة للفصل الدراسي إذا لم يكن لديك كود المصدر الذي تم استخدامه لإنشاء الفصل الدراسي. التنسيق العام لأمر javap هو:
javap [options] filename
خيارات
باستخدام أمر javap، تتوفر العديد من الخيارات. بعض منهم:
قم بتفكيك ملف فئة باستخدام أمر javap
class DisassembleDemo { public static void main(String args[]) { System.out.println('Java'); } }
قم بإنشاء ملف فئة البرنامج أعلاه واستخدم الأمر التالي لتفكيك ملف الفئة.
javap -c -p DisassembleDemo
انتاج |
يُظهر الإخراج التالي ما يحتويه ملف الفصل الدراسي بداخله.
لكننا لا نحصل على كود مصدر Java باستخدام الأمر javap. لذلك هناك العديد من برامج فك التشفير المتوفرة والتي تقوم بتحويل ملف .class إلى ملف .java.