Adakah yang tahu tentang dekompiler gratis yang dapat mendekompilasi seluruh file Jar, bukan kelas tunggal? Saya punya masalah dengan sub-kelas seperti nama $ 1.class name $ 2.class name.class
Adakah yang tahu tentang dekompiler gratis yang dapat mendekompilasi seluruh file Jar, bukan kelas tunggal? Saya punya masalah dengan sub-kelas seperti nama $ 1.class name $ 2.class name.class
Jawaban:
2009: JavaDecompiler dapat melakukan pekerjaan dengan baik dengan jar: sejak 0.2.5, Semua file, dalam file JAR, ditampilkan.
Lihat juga pertanyaan "Bagaimana cara saya" mendekompilasi "file kelas Java?" .
JD-Eclipse tampaknya tidak berubah sejak akhir 2009 (lihat Perubahan ).
Jadi integrasinya dengan Eclipse terbaru (3.8, 4.2+) mungkin bermasalah.
JD-Core dikelola secara aktif.
Keduanya adalah hasil karya fantastis (pengguna SO) Emmanuel Dupuy .
2018: Pilihan yang lebih modern, disebutkan dalam komentar oleh David Kennedy Araujo :
JetBrains / intellij-community / plugins / java-decompiler / engine
Fernflower adalah dekompiler analitik pertama yang benar-benar berfungsi untuk Java dan mungkin untuk bahasa pemrograman tingkat tinggi secara umum.
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\
Lihat juga Cara mendekompilasi ke file java intellij idea untuk perintah yang bekerja dengan IntelliJ IDEA baru-baru ini.
Pertama-tama, perlu diingat bahwa semua file arsip Java ( .jar
/ .war
/ etc ...) semuanya pada dasarnya hanya .zip
file mewah , dengan beberapa manifes dan metadata yang ditambahkan.
Kedua, untuk mengatasi masalah ini saya secara pribadi menggunakan beberapa alat yang menangani masalah ini di semua tingkatan:
.class
filejar
s. Layak dicoba.Keuntungan dari semua yang disebutkan di atas, adalah bahwa saya tidak perlu memegang alat eksternal lain yang mengacaukan lingkungan kerja saya. Semua yang saya perlukan dari salah satu file tersebut dapat ditangani di dalam IDE saya atau berbeda dengan file lain secara asli.
Jika Anda memiliki bash shell dan jad:
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
Saya mungkin sedikit, sangat kecil dengan itu, tetapi harus bekerja lebih atau kurang seperti yang diiklankan. Anda harus berakhir dengan $JAR.tmp
berisi file yang telah dikompilasi.
javap
dalam struktur loop dasar ini, dan itu berfungsi untuk saya.
Saya sudah cukup sukses dengan alat bernama (frustasi) " JD: Java Decompiler ".
Saya telah menemukan itu lebih baik daripada kebanyakan decompiler ketika berhadapan dengan kelas yang dikompilasi untuk Java 5 dan lebih tinggi . Sayangnya, masih ada beberapa masalah di mana JAD biasanya berhasil.
Sesuatu seperti:
jar -xf foo.jar && find . -iname "*.class" | xargs /opt/local/bin/jad -r
mungkin?
Masukkan yang berikut ini ke 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
Siap digunakan, cukup ketik dj your.jar
dan Anda akan mendapatkan your.jar.src
folder dengan sumber. Gunakan -d
opsi untuk mode debug.
Anda mengekstraknya dan kemudian menggunakan jad melawan dir.
Catatan: Solusi ini hanya berfungsi untuk pengguna Mac dan * nix.
Saya juga mencoba menemukan Jad tanpa hasil. Solusi cepat saya adalah mengunduh MacJad yang berisi jad. Setelah Anda mengunduhnya, Anda dapat menemukan jad di [tempat-Anda-mengunduh-macjad] / MacJAD / Konten / Sumber Daya / jad.