سؤال

لا أحد يعرف من حر decompiler التي يمكن فك جرة كاملة بدلا من ملف واحد في الصف ؟ لدي مشكلة مع فئات فرعية مثل اسم$1.class اسم$2.class name.class

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

المحلول

2009: JavaDecompiler يمكن القيام بعمل جيد مع جرة:منذ 0.2.5 جميع الملفات في جرة الملفات المعروضة.

http://java.decompiler.free.fr/sites/default/screenshots/screenshot1.png

انظر أيضا السؤال "كيف "فك" جافا فئة الملفات؟".

JD-الكسوف لا يبدو أن تغيرت منذ أواخر عام 2009 على الرغم من (انظر التغييرات).
لذلك التكامل مع أحدث الكسوف (3.8, 4.2+) قد يكون مشكلة.

JD-Core بنشاط المحافظة.

وكلاهما نتيجة رائعة عمل (إذن المستخدم) إيمانويل دوبوي.


2018:أكثر حداثة الخيار المذكور في التعليقات قبل ديفيد كينيدي Araujo:

JetBrains/intellij-المجتمع/الإضافات/java decompiler/المحرك

Fernflower هو الأول في الحقيقة العمل التحليلي ل Java decompiler وربما على مستوى رفيع لغة البرمجة بشكل عام.

java -jar fernflower.jar [-<option>=<value>]* [<source>]+ <destination>

java -jar fernflower.jar -hes=0 -hdc=0 c:\Temp\binary\ -e=c:\Java\rt.jar c:\Temp\source\

انظر أيضا كيفية فك إلى ملفات جافا intellij idea من أجل قيادة العمل مع الأخيرة IntelliJ IDEA.

نصائح أخرى

إذا كنت يحدث ليكون كل قذيفة باش و جاد:

JAR=(your jar file name)
unzip -d $JAR.tmp $JAR
pushd $JAR.tmp
for f in `find . -name '*.class'`; do
    jad -d $(dirname $f) -s java -lnc $f
done
popd

وأنا قد تكون صغيرة، صغيرة قليلا قبالة مع ذلك، ولكن ينبغي لها أن تعمل أكثر أو أقل كما هو معلن. يجب أن ينتهي مع $JAR.tmp التي تحتوي على الملفات الخاصة بك decompiled.

أولا وقبل كل شيء ، من الجدير بالذكر أن جميع جافا ملفات الأرشيف (.jar/.war/الخ...) هي كل شيء في الأساس مجرد نزوة.zip الملفات, مع عدد قليل وأضاف يظهر والبيانات الوصفية.

ثانيا لمعالجة هذه المشكلة وأنا شخصيا استخدام العديد من الأدوات التي تتعامل مع هذه المشكلة على جميع المستويات:

  • Jad + Jadclipse بينما كان يعمل في IDE على إلغاء ترجمته .class الملفات
  • برنامج WinRAR, المفضل أداة ضغط أصلا يدعم جافا المحفوظات (مرة أخرى ، انظر الفقرة الأولى).
  • للمقارنة, المفضل مهرجان دبي السينمائي الدولي أداة ، عندما يتم تكوين بشكل صحيح يمكن القيام به على ذبابة مقارنات بين أي ملف الأرشيف ، بما في ذلك jars.تستحق المحاولة.

والاستفادة من كل ما سبق هو أن لا تحتاج إلى عقد أي أداة خارجية الذي يبعثر بلدي بيئة العمل.كل شيء سوف تحتاج من أي وقت مضى من واحد من تلك الملفات التي يمكن التعامل معها داخل IDE أو diffed مع ملفات أخرى أصلا.

ولقد كان نجاحا معقولا مع أداة المسمى (محبط) " JD: جافا المنقح ".

ولقد وجدت أنه أفضل من معظم decompilers <م> عند التعامل مع فئات جمعتها جافا 5 وأعلى . لسوء الحظ، فإنه لا يزال لدينا بعض السقطات حيث JAD سينجح بشكل طبيعي.

وشيء من هذا القبيل:

jar -xf foo.jar && find . -iname "*.class" | xargs /opt/local/bin/jad -r

وربما؟

أدخل ما يلي في decompile.jar.sh

# Usage: decompile.jar.sh some.jar [-d]

# clean target folders
function clean_target {
  rm -rf $unjar $src $jad_log
}

# clean all debug stuff
function clean_stuff {
  rm -rf $unjar $jad_log
}

# the main function
function work {
  jar=$1
  unjar=`basename $jar.unjar`
  src=`basename $jar.src`
  jad_log=jad.log

  clean_target

  unzip -q $jar -d $unjar
  jad -d $src -ff -r -lnc -o -s java $unjar/**/*.class > $jad_log 2>&1

  if [ ! $debug ]; then
    clean_stuff
  fi

  if [ -d $src ] 
    then
      echo "$jar has been decompiled to $src"
    else
      echo "Got some problems check output or run in debug mode"
  fi
}

function usage {
  echo "This script extract and decompile JAR file"
  echo "Usage: $0 some.jar [-d]"
  echo "    where: some.jar is the target to decompile"
  echo "    use -d for debug mode"
}

# check params
if [ -n "$1" ]
  then
    if [ "$2" == "-d" ]; then
      debug=true
      set -x
    fi
    work $1
  else
    usage
fi
  • chmod +x decomplie.jar.sh //تنفيذي
  • ln-s ./decomplie.جرة.s /usr/bin/دي جي

جاهزة للاستخدام, فقط اكتب dj your.jar وسوف تحصل على your.jar.src مجلد مع المصادر.استخدام -d خيار وضع التصحيح.

وملف جرة هو مجرد ملف مضغوط مع التمديد جرة. يجب أن تكون قادرة على فك الضغط (برنامج لضغط الملفات) جرة تماما مثل ملف مضغوط.

ويمكنك استخراجها ومن ثم استخدام جاد ضد دير.

ملاحظة:هذا الحل يعمل فقط لنظام التشغيل Mac و *nix المستخدمين.

كما أنني حاولت أن تجد جاد مع أي حظ.بلدي سريعة الحل هو تحميل MacJad الذي يحتوي على جاد.بمجرد تحميلها يمكنك أن تجد جاد في [حيث يمكنك تحميلها-macjad]/MacJAD/Contents/Resources/jad.

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