どンジニアリング、逆アセンブル全体のJarファイルとは何ですか?[定休日]
-
22-07-2019 - |
質問
なんだろうけど、日本人の自由decompiler可ンジニアリング、逆アセンブル全体のJarファイルの代わりにシングル。している問題をサブクのような名$1.class 名$2.class name.class
解決
2009: JavaDecompiler できる良い仕事とjar:以来、0.2.5すべてのファイル、JARファイルが表示されます。
参照 "という質問に対すか?"ンジニアリング、逆アセンブル"Javaクラスファイル?".
にJD-Eclipseがあるようには見えません変化してい年末から2009年のものを参照 変化).
その統合と最新のEclipse(3.8,4.2+)が問題を含んでいます。
JD-コアを積極的に維持されます。
両ならではの幻想的な作(ユーザ) エマニュエル-Dupuy.
2018:現代的なオプションは、以 のコメント による デビッド-ケネディ酸:
JetBrains/intellij-地域/plugins/java-decompiler/エンジン
Fernflowerは実際に作業分析decompilerのためのJavaということもあって高いレベルのプログラミング言語です。
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\
参照 どンジニアリング、逆アセンブルをjavaのファイルintellij idea コマンドと近年のIntelliJ IDEA.
他のヒント
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
になるはずです。
まず、すべてのJavaアーカイブファイル( .jar
/ .war
/ etc ...)がすべて基本的に空想である< code> .zip ファイル、マニフェストとメタデータがいくつか追加されています。
第二に、この問題に取り組むために、私は個人的にすべてのレベルでこの問題を処理するいくつかのツールを使用します:
- Jad + Jadclipse は、IDEで
.class
ファイルを逆コンパイルするために作業中 - WinRAR 、私のお気に入りの圧縮ツールは、Javaアーカイブをネイティブにサポートしています(再度、最初の段落)。
- Beyond Compare 、私のお気に入りのdiffツールは、正しく構成されていれば、 -
jar
を含むアーカイブファイル間の即時比較。試してみる価値はあります。
前述のすべての利点は、作業環境を乱雑にする他の外部ツールを保持する必要がないことです。これらのファイルの1つから必要なものはすべて、IDE内で処理したり、ネイティブに他のファイルと比較したりできます。
(フラストレーションのある)&quot; JD:Java Decompiler &quotという名前のツールでかなりの成功を収めました;。
Java 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: <*> 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
オプションを使用します。
jarファイルは、jar拡張子を持つ単なるzipファイルです。 zipファイルのように、jarを解凍(winzip)できるはずです。
それを抽出してから、ディレクトリに対してjadを使用します。
注:このソリューションは、Macおよび* nixユーザーのみで機能します。
私は運のないJadを見つけようとしました。私の簡単な解決策は、jadを含む MacJad をダウンロードすることでした。ダウンロードしたら、[where-you-downloaded-macjad] / MacJAD / Contents / Resources / jadでjadを見つけることができます。