誰かが、単一のクラスではなくJarファイル全体を逆コンパイルできる無料のデコンパイラについて知っていますか?私は名前$ 1クラス名$ 2.クラス名。クラスJarファイル全体を逆コンパイルするには?
答えて
JavaDecompilerは、jarでうまくいく:0.2.5以降、JARファイル内のすべてのファイルが表示される。
もthe question "How do I “decompile” Java class files?"参照してください。
JD-Eclipseは2009年後半から変更されていないようです(Changes参照)。
最新のEclipse(3.8,4.2+)との統合に問題が生じる可能性があります。
JDコアが積極的に維持されます。
どちらも(SOユーザー)Emmanuel Dupuyの素晴らしい仕事の結果です。
fyi、java decompiler windows、およびLinux。 – yanokwa
@AlexS nice :)次のステップ:バージョン管理(http://stackoverflow.com/questions/59561/what-tools-techniques-can-benefit-a-solo-developer)そして継続的インテグレーション(http:// stackoverflow .com/questions/130592/is-continuous-integration-for-a-solo-developer) – VonC
誰でも最新のEclipseとjdk7でEclipseプラグインを入手できますか?私は試みましたが、ダウンロードエラーが発生します。 JD-Guiは動作しますが、jd-eclipseは私のために失敗するようです... –
のようなサブクラスに問題があります。それを抽出して、ディレクトリに対してjadを使います。
私はあなたが単にそれをdirに対して実行することはできないと思います。あなたは{dir}/**/*クラスを指定する必要があります。クラス – Vihung
jarを抽出してjad {dir}のようなものを使用して、私はちょうどそれをテストして、ウィンドウでは動作しません –
jarファイルは、jar拡張子を持つzipファイルです。あなたはzipファイルのようにジャーを解凍(winzip)することができるはずです。
あなたはbashシェルと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
私は小さな、ほんの少しそれとオフのかもしれませんが、宣伝として、それは多かれ少なかれ動作するはずです。あなたは、デコンパイルされたファイルを含む$JAR.tmp
で終わるべきです。
はubuntuで#!/ bin/bashの代わりに#!/ bin/bashを使うのは、デフォルトのubuntuシェルでpushdが動作しないためです... – mossplix
私はこの基本的なループ構造内で 'javap'を使用しています。 –
まず第一に、それはすべてのJavaアーカイブファイル(.jar
/.war
は/ etc ...)いくつかの追加のマニフェストとメタデータとすべて基本的にはちょうど空想.zip
ファイル、あることを思い出して価値があります。ネイティブに逆コンパイルするためにIDEで.class
ファイル
- Jad + Jadclipse:私は個人的にすべてのレベルでこの問題を扱ういくつかのツールを使用してこの問題に取り組むための
第二に、 Javaアーカイブをサポートしています(再び、最初の段落を参照)。
- Beyond Compare私の好きな差分ツールは、正しく設定されていれば、
jar
を含む任意のアーカイブファイルの間でオンザフライ比較ができます。試してみる価値がある。
上記のすべての利点は、自分の仕事環境を乱す他の外部ツールを保持する必要がないことです。これらのファイルの1つから私が必要とするものはすべて、IDE内で処理することも、他のファイルとネイティブで区別することもできます。
lolzクロムとファイアウォクスの拡張機能を解凍していて、忘れてしまった.jarもちょうどジップです:) –
Jadへのリンクが死んでいます。 – Zero3
注:この解決策は、Macおよび* nixユーザーにのみ有効です。
私も運がないJadを見つけようとしました。私の簡単な解決策は、jadを含むMacJadをダウンロードすることでした。ダウンロードしたら、[where-you-downloaded-macjad]/MacJAD/Contents/Resources/jadでjadを見つけることができます。
「JD: Java Decompiler」という名前のツールで合理的な成功を収めました。
Java 5以降でコンパイルされたクラスを扱う場合、ほとんどの逆コンパイラよりも優れていることがわかりました。残念ながら、JADが正常に成功するにはまだまだ問題があります。
Windows版またはLinux版のJD-GUIをダウンロードできませんでした。この問題は私にしか見えませんか? – mmdemirbas
@JanusTroelsen削除しました。ご連絡ありがとうございます。答えをきれいに保つことができます:) – pramodc84
リンクが死んでいます。 – Zero3
ような何か:多分
jar -xf foo.jar && find . -iname "*.class" | xargs /opt/local/bin/jad -r
に?
私はjadをしばらく使用してきましたが、jarファイル全体を抽出して逆コンパイルするための素早い方法が必要でした。ありがとう、これは非常に助けになりました。 –
挿入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.jar.sは/ usr/binに/ dj
すぐに使用してください。dj your.jar
と入力すると、ソースがyour.jar.src
になります。デバッグモードには-d
オプションを使用してください。
ありがとう、私は自分のbinフォルダを汚染したくないので、23行目で "jad"を "./jad"に変更し、 "bash decompile.jar.sh foo.jar -d"を実行する必要があった – Sam
再コンパイラ? jadファイルをjarファイルに再コンパイルしますか? –
2つのことを覚えておいてください。1)ソースの著作権が存在し、逆コンパイルと再利用はほとんどの国で少しシフトで違法です。2)派手なJavaDecompilerを使用しても元のソースは取得できません。 – Esko
ありがとう、それは小さなアプレットであり、私は眺めと勉強のソースコードを盗んではいけません。 – StoneHeart
さらに2つのことを覚えています:1)逆コンパイラの単なる言及は、あなたの計画された用途が何であるか分からないにもかかわらず、あなたの動機について価値の判断を下し、あなたが話している人に注意するようになります。 2)派手なJavaDecompilerはコードの優れた演出を提供し、よくレイアウトされ、読みやすい - コメントだけが欠落している。驚くほど良いことに、長い名前のソースを失ったJARファイルを、変数名で修復しています。もちろん、社内のJARファイルを難読化することはありません。 – Andrew