2009-12-02 9 views

答えて

16

を試してみてください。これを行うにはJava Decompilerが必要です。

あなたはほとんどそれが驚くほど良い仕事をすることがわかります。あなたが得るのは.classファイルにコンパイルされる有効な.javaファイルですが、この.javaファイルは元のソースコードと必ずしも同じではありません。ループ構造のようなものは別に出てくるかもしれませんし、ジェネリックや注釈のようなコンパイル時だけは再作成されません。

the code has been obfuscatedの場合は問題が発生する可能性があります。これは、コンパイルが困難になるようにクラスファイルを変更するプロセスです。たとえば、クラス名と変数名がすべて似ているので、employee.setName(name)の代わりにaa.a(ab)のようなコードで終わるので、何が起こっているのかは分かりません。

これを行うにはJADを使用することを覚えていますが、これは積極的に維持管理されているとは思われませんので、Javaのバージョンでは動作しない可能性があります。 Google search for java decompilerは、たくさんのオプションを提供します。

0

可能ですが、コードは間違っている可能性があります。しかし、いくつかのJavaデコンパイラを検索してください。

0

いつでも可能です。 "java disassembler"を検索してください。

しかし、ソースコードコメントと一時変数は利用できません。

クラスを逆コンパイルして、コードが変数名やメソッド名とあまりにも複雑で、メソッド名がa、b、c ...のように見える場合は、プロジェクトが難読化されていることを意味します。

+0

いつも可能であるとガラッとしないと思います。 Javaには同等のものを持たないバイトコード構造があると思います。また、他のソースからの.classを生成するいくつかの言語/ツール(Scala ...)もあります。 –

+1

面白い...ここでは、Javaとバイトコードについて説明しています。 – JCasso

+0

私は...ですが、OPは.classがJavaから(直接)作成されたとは言及していません。そして、ありがとう... –

1

これは利用可能なJava decompilersの1つを使用して可能です。コンパイラ(静的変数のインライン化、制御フローの再構築など)によって最適化されている可能性のあるバイトコードから作業しているので、元々コンパイルされたコードと正確には同じではないかもしれませんが、機能的には同等です。正確

0

ない逆コンパイラが、JDK contains javap, a disassembler:あなたのユースケースに応じて、

javap -c org.example.MyClass 

、まだ知っているか、または使用することも面白いかもしれません。

クラスファイルの逆コンパイルの結果は、クラスファイル内に含まれる情報によって異なります。私が正しく覚えていれば、含まれているデバッグ情報(see -g flag of javac)は、特に変数などの命名にとって重要です。

0

私はJADを使用していますが、後で私の意見では優れている別の1に切り替えている - here

0

DJは、Java decompilerを使用して容易です。 .classファイルを開くだけで、javaコードが表示されます。

また、あなたが直接、いずれの場合での.java

What about the correctness of the code extracted from this option?
への.classを逆コンパイルする日食のためjadClipseプラグインを使用することができ、任意のJavaデコンパイラによって生成されたコードは、それと同じにはなりません元のjavaクラスで書かれています。バイトコードをJavaコードにデコードするだけです。あなたが確かめることができるのは、元のJavaコードの出力と同じ出力になることだけです。以前の回答に追加

+0

+1の場合、元のJavaコードの出力と同じになります –

1

:最近、逆コンパイラの新しい波、すなわちプロキオン、CFR、JD、Fernflower

、今後されていますがここでは月、2015年のような最新の逆コンパイラのリストです:

  • プロキオン
  • CFR
  • JD
  • Fernflower

上記のオンラインでデコンパイラをテストしても、インストールする必要はなく、独自の選択肢を作ることができます。 クラウド内のJavaデコンパイラ:http://www.javadecompilers.com/

関連する問題