recompile recompile java (jd / jad) المصدر الذي يحتوي على تعليمات goto

StackOverflow https://stackoverflow.com/questions/2036984

سؤال

(سؤال ذي صلة: محامرة جافا أو لغات JVM التي تدعم goto؟)

لقد ضغطت على جرة (قانونيا، لأغراض تصحيح الأخطاء) وتريد إعادة ترجمة ذلك.

لقد استخدمت كلاهما جاد. و جي وكلاهما لا يترجم بسبب تعليمات goto

على سبيل المثال

      goto _L1

      ...
      L1: 
      return true;

هل هناك طريقة سهلة (أو بأي حال) لإعادة ترجمة ذلك؟ (باستثناء إعادة عدل يدويا وإزالة goto'س)


هل كانت مفيدة؟

المحلول

لا، ليس هناك. في حالتك، لم يتمكن أي من JD أو JAD من فك ملفات الفصل بشكل صحيح. بيانات "GOTO" هي تلميح حول تدفق البرنامج الفعلي.

يمكنك الاتصال بفريق Java DeCompiler مباشرة، أرسل في ملف فئة حيث ينتج عنه إزالة الشفرة في شفرة مصدر غير قانونية واسأل عما إذا كان خطأ في الإصدار الحالي أو ميزة لم يتم تنفيذها بعد.

نصائح أخرى

JAD هو deformer مذهلة حقا، دينار ... لديك بعض المشاكل مع البيانات "TRY-CART -THER- أخيرا".

هل جربت فك التشفيرhttp://www.reversed-java.com/fernflower.) ?

إيمانويل، مؤلف JD.

جميع أكتبارات النظارات تبحث عن أنماط التعليمات البرمجية المقابلة للإنشاءات المصدر Java واختر المصدر الذي يناسب الأفضل.

يبدو أن الرمز الذي لديك لا يتوافق مع أي نمط مخزن في JAD أو JD حتى تحصل على مصدر جافا غير قابل للالكبر. هذا على الأرجح لأن جاد لم يتم تطويره بنشاط لعدة سنوات.

أود أن أقترح عليك أن تنظر إلى مشروع السخام الذي يحتوي على تفريغ أكثر عدوانية.

http://www.sable.mcgill.ca/soot/

أود أن أوصي برمزيلر الحديثة - مثل CFR أو سرخسرار!

أنا وضعت عبر الإنترنت 6 أكتبارات Java: Jadx، سريع ومع دعم Android، CFR (يدعم Java 8)، JDCore (سريع جدا)، Procyon، Fernflower و Jad (سريع جدا، ولكن قديم).

يمكن للمرء استخدامها دون تثبيت هنا: http://www.javadecompilers.com/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top