答えて
を試してみてください。これを行うにはJava Decompilerが必要です。
あなたはほとんどそれが驚くほど良い仕事をすることがわかります。あなたが得るのは.class
ファイルにコンパイルされる有効な.java
ファイルですが、この.java
ファイルは元のソースコードと必ずしも同じではありません。ループ構造のようなものは別に出てくるかもしれませんし、ジェネリックや注釈のようなコンパイル時だけは再作成されません。
the code has been obfuscatedの場合は問題が発生する可能性があります。これは、コンパイルが困難になるようにクラスファイルを変更するプロセスです。たとえば、クラス名と変数名がすべて似ているので、employee.setName(name)
の代わりにaa.a(ab)
のようなコードで終わるので、何が起こっているのかは分かりません。
これを行うにはJADを使用することを覚えていますが、これは積極的に維持管理されているとは思われませんので、Javaのバージョンでは動作しない可能性があります。 Google search for java decompilerは、たくさんのオプションを提供します。
はい、それは可能であるJAD Java Decompiler
可能ですが、コードは間違っている可能性があります。しかし、いくつかのJavaデコンパイラを検索してください。
いつでも可能です。 "java disassembler"を検索してください。
しかし、ソースコードコメントと一時変数は利用できません。
クラスを逆コンパイルして、コードが変数名やメソッド名とあまりにも複雑で、メソッド名がa、b、c ...のように見える場合は、プロジェクトが難読化されていることを意味します。
これは利用可能なJava decompilersの1つを使用して可能です。コンパイラ(静的変数のインライン化、制御フローの再構築など)によって最適化されている可能性のあるバイトコードから作業しているので、元々コンパイルされたコードと正確には同じではないかもしれませんが、機能的には同等です。正確
ない逆コンパイラが、JDK contains javap, a disassembler:あなたのユースケースに応じて、
javap -c org.example.MyClass
、まだ知っているか、または使用することも面白いかもしれません。
クラスファイルの逆コンパイルの結果は、クラスファイル内に含まれる情報によって異なります。私が正しく覚えていれば、含まれているデバッグ情報(see -g flag of javac)は、特に変数などの命名にとって重要です。
私はJADを使用していますが、後で私の意見では優れている別の1に切り替えている - here
DJは、Java decompilerを使用して容易です。 .classファイルを開くだけで、java
コードが表示されます。
また、あなたが直接、いずれの場合での.java
What about the correctness of the code extracted from this option?
への.classを逆コンパイルする日食のためjadClipseプラグインを使用することができ、任意のJavaデコンパイラによって生成されたコードは、それと同じにはなりません元のjavaクラスで書かれています。バイトコードをJavaコードにデコードするだけです。あなたが確かめることができるのは、元のJavaコードの出力と同じ出力になることだけです。以前の回答に追加
+1の場合、元のJavaコードの出力と同じになります –
:最近、逆コンパイラの新しい波、すなわちプロキオン、CFR、JD、Fernflower
、今後されていますがここでは月、2015年のような最新の逆コンパイラのリストです:
- プロキオン
- CFR
- JD
- Fernflower
上記のオンラインでデコンパイラをテストしても、インストールする必要はなく、独自の選択肢を作ることができます。 クラウド内のJavaデコンパイラ:http://www.javadecompilers.com/
- 1. パイソン - バイトコードからPythonのソースコード
- 2. ソースコードをJavaバイトコードに変換するユーティリティは何ですか
- 3. Javaソースコードをバイトコードに変換するには?
- 4. RubyソースコードからJavaソースコードへの変換
- 5. Javaバイトコード
- 6. Javaバイトコードからの命令の削除
- 7. は、Javaバイトコード
- 8. ネイティブjavaバイトコード計測
- 9. LLVMバイトコードをJavaバイトコードに変換できますか?
- 10. Javaバイトコードを最適化しますか?
- 11. バイトコードによるJavaデバッグ
- 12. Javaの継承、ジェネリック、バイトコード
- 13. Javaバイトコード - ASM - ラベルオフセットの取得
- 14. Javaバイトコードによるプログラミング
- 15. Javaでのバイトコード解析
- 16. Javaバイトコードを理解する
- 17. Javaソースコード
- 18. jvmバイトコードからjavaクラスファイルヘッダを生成する
- 19. javaクラスのバイトコードをjvmからjvmに移動
- 20. JavaソースコードからJavaで書かれたInvokeスクリプト
- 21. JDI、Javaバイトコード計測とJavaエージェント(JWDP、JVMTI)
- 22. Javaバイトコードにコンパイル(Javaを使用せず)
- 23. Javaバイトコード操作とJavaリフレクションAPI?
- 24. のソースコードはバイトコードと一致していません "デバイス
- 25. 逆アセンブルされたPythonバイトコードをソースコードに戻す
- 26. Java AnnotationProcessorソースコード
- 27. Java APIソースコード
- 28. Javaネイティブメソッドのソースコード
- 29. Javaバイトコードのコンパイル "構文エラー、行、命令"
- 30. JavaバイトコードとJVMについて学ぶ
いつも可能であるとガラッとしないと思います。 Javaには同等のものを持たないバイトコード構造があると思います。また、他のソースからの.classを生成するいくつかの言語/ツール(Scala ...)もあります。 –
面白い...ここでは、Javaとバイトコードについて説明しています。 – JCasso
私は...ですが、OPは.classがJavaから(直接)作成されたとは言及していません。そして、ありがとう... –