logo

جافا المنقح

يعد برنامج 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 في المجلد المعني.

جافا المنقح 2

الخطوة 5: الآن انقل ملف .class وتطبيق jad إلى مجلد آخر.

جافا المنقح3

الخطوة 6: اكتب الأمر: jad DecompilerDemo

حدد جدول متعدد SQL
جافا المنقح4

يقوم الأمر أعلاه بإنشاء ملف .jad في المجلد المعني.

جافا المنقح5

الخطوة 7: اكتب الأمر: جاد جافا DecompilerDemo

جافا مقارنة السلسلة
جافا المنقح6

يقوم بإنشاء ملف .java في نفس المجلد.

جافا المنقح7

افتح 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 

انتاج |

يُظهر الإخراج التالي ما يحتويه ملف الفصل الدراسي بداخله.

جافا المنقح8

لكننا لا نحصل على كود مصدر Java باستخدام الأمر javap. لذلك هناك العديد من برامج فك التشفير المتوفرة والتي تقوم بتحويل ملف .class إلى ملف .java.