web-dev-qa-db-ja.com

Java逆コンパイラ

EclipseのJava逆コンパイラーをお勧めしますか?他の質問は、他のJavaプログラムからの逆コンパイルされたコードの使用にはどのような制限がありますか?ライセンスについてあまり知りません。読んでくれてありがとう。

22
MartK

グーグルにポップアップ表示されるものをお勧めします。これは [〜#〜] jd [〜#〜] Javaデコンパイラーです。本当に素晴らしいです。

制限については、特定のソフトウェアのライセンスを読む必要があり、逆コンパイルの方法は禁止されていると書かれている場合があります。

30
Mirek Pluta

JadClipse -が好きですが、場所で年齢を示しています。必要になるだろう:

  • jadバイナリ
  • インストール済みのjadClipse
  • eclipse設定を上記のjadバイナリにポイントします
  • 行番号を生成し、デバッグ用に整列するように指示します

いくつかの欠点があります。

  • バイトコードが再配置されたために、バイトコードで何かが遅れるが、元のソースでは早い場合、コードは順番に生成されます。
  • jadはJava 5 + 6バイトコードを非常によく理解していません。

このEclipseプラグインを使用しました: JadClipse

そしてこれJava decompiler: [〜#〜] jad [〜#〜]

5
treaz

私はいくつかの逆コンパイラを試しましたが、それらのほとんどは逆コンパイルしようとしていたアプレットの正しいソースを生成できませんでした(これは http://mrl.nyu.edu/~perlin/experiments/emotive-actors/ 、誰かが複製したい場合)。

完全に問題なく動作したのは Cavaj 1.11 で、それによって生成されたコードには構文エラーが含まれておらず、ソースからコンパイルされたアプレットは元と同じように実行されます。 UI側で欠けていたのは、Ctrl-A/Ctrl-Cキーボードショートカットが機能せず、バッチ変換が利用できないことでした。

私が試した他の逆コンパイラは:

  • JD Java decompiler (フリーウェア)は見栄えが良いですが、変数宣言で多くの間違いを犯しました(一部の宣言が欠落しており、他の宣言が不適切に配置されていました)
  • Neshkov DJ Java Decompiler (シェアウェア)も見栄えがよく、生成されるコードの構文エラーはJDよりも少ないが、コードは機能していなかった。無料ではありませんが、もう少し期待します。
5
Suma

[〜#〜] jd [〜#〜] が最高Java私が知っている逆コンパイラーです。

2
secmask

私はあなたの最初の質問に答えることができません:それは偏っているでしょう、おそらく...

2番目の質問については、逆コンパイルはLEGALです。この点は私にとって非常に重要です。この興味深いページをご覧ください: http://www.program-transformation.org/Transform/LegalityOfDecompilation

2
Emmanuel Dupuy

[〜#〜] jd [〜#〜] が非常に良いことがわかりました。ただし、1つまたは2つの小さなバグがあり、実行時に予期しない動作が発生しました。

たとえば、元のcaseステートメントの最後のノードに 'break'がなかった例がありました(当然、これは不要です)が、JDがノードの順序を変更したため、 'default'の場合を意味しました予想外に呼ばれた。また、期待どおりにログアウトするために、物事の最後に追加のtoString()呼び出しが必要になる文字セットの問題もありました。それとは別に、それは素晴らしかったです!

私は別の逆コンパイラー [〜#〜] dj [〜#〜] を使用して、JDによって逆コンパイルされたコードの何が問題なのかを調べました。しかし、DJが処理できない他のことがあったので、両方の逆コンパイラの混合物が私のために働いたと思います:)

デュピュイ氏がこれを読むことを願っています!

1