どンジニアリング、逆アセンブル全体のJarファイルとは何ですか?[定休日]

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

  •  22-07-2019
  •  | 
  •  

質問

なんだろうけど、日本人の自由decompiler可ンジニアリング、逆アセンブル全体のJarファイルの代わりにシングル。している問題をサブクのような名$1.class 名$2.class name.class

役に立ちましたか?

解決

2009: JavaDecompiler できる良い仕事とjar:以来、0.2.5すべてのファイル、JARファイルが表示されます。

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

参照 "という質問に対すか?"ンジニアリング、逆アセンブル"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を見つけることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top