クラスファイルを逆コンパイルするためにどのプログラムを使用できますか?実際にJavaコードを入手するのでしょうか、それとも単にJVMアセンブリコードなのでしょうか。
このサイトのJavaパフォーマンスに関する質問では、Javaクラスファイルを「逆コンパイル」してコンパイラが特定のものを最適化する方法を確認した人からの回答がよく見られます。
2016年2月に更新:
www.javadecompilers.com はJADを以下のようにリストします。
最も人気のあるJavaデコンパイラーですが、主にこの時代のものです。 C++で書かれているのでとても速いです。
古い、サポートされておらず、Java 5以降を正しく逆コンパイルできません
だからあなたの走行距離は最近のjdk(7、8)で変わるかもしれません。
同じサイトに他のツールがリストされています。
そして、javadecompilerは、 コメント の Salvador Valencia (2017年9月)で指摘されているように、SaaSを提供し、そこで.class
ファイルをクラウドにアップロードして返します。逆コンパイルされたコード.
オリジナルの答え:2008年10月
Java Decompiler (さらにもう1つのFast Java逆コンパイラ)は次のものを持ちます。
JDK 1.1.8からJDK 1.7.0までのコンパイラ( Jikes 、 JRockit など)で動作します。
それは実際に完全に機能的であるオンライン ライブデモ版 を備えています!あなたはただ何もインストールせずにページにjarファイルをドロップして逆コンパイルされたソースコードを見ることができます。
Javaのソースコードを見るには、逆コンパイラをチェックしてください。 jad を検索してください。
バイトコードを見たい場合は、JDKに付属の javap を使用してください。
私はいくつか試してみました、そして Procyon は私のために最もうまくいくようでした。現在活発に開発中で、最新バージョンのJavaの多くの機能をサポートしています。
これらは私が試した他の人です:
-skip
コマンドラインフラグを使用する必要がありました。積極的に開発され、そして興味深いことにそれはPythonで書かれています。JAD Decompiler を使います。
Eclipse それのためのプラグイン、 jadeclipse があります。なかなかいいですね。
Procyonには逆コンパイラが含まれます。 FOSSです。
Soot は、新しいJavaコード用のオプションです。少なくともそれはまだ最近維持されているという利点があります...
また、 Java Decompiler は、スタンドアロンのGUIとEclipse統合の両方を備えたデコンパイラーです。
最後に、 Jdec は言及されていませんが、他のオプションほど洗練されていません。
これが2015年2月現在の逆コンパイラのリストです。
Procyon 、オープンソース、 https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler
_ cfr _ 、無料、ソースコードなし、 http://www.benf.org/other/cfr/
_ jd _ 、非営利目的に限り無料、 http://jd.benow.ca/
Fernflower 、オープンソース、 https://github.com/fesh0r/fernflower 、
_ jad _ - ここでは歴史的な理由でのみ与えられています。無料、ソースコードなし、 http://varaneckas.com/jad/ 古い、サポートされていない、およびJava 5以降を正しく逆コンパイルしない。
あなたは上記の逆コンパイラをオンラインでテストすることができます。インストールは不要ですし、あなた自身の賢い選択をすることもできます。
クラウド内のJavaデコンパイラー: http://www.javadecompilers.com/ /
Java用のほとんどの逆コンパイラは _ jad _ に基づいています。これは素晴らしいツールですが、残念ながらしばらくの間更新されておらず、Java 1.5以降のクラスをうまく処理できません。 1.5以上のクラスを適切に処理するツールは見たことがありません。
cavaj を見てください。
これまでにリストされたJADリンクはすべて壊れているように思われるので、このサイトを見つけました。うまく動作します(少なくともLinuxの場合)。 Ubuntu 11.10では、何らかの理由で静的なものをダウンロードしなければなりませんでした。
JADは機能するもので単純なものです。
また、メソッドを見たいだけの場合は、javapを使用してください。
Javaコンパイラがどのように動作するのかを知りたいのであれば、逆コンパイルはしたくない、逆アセンブリは必要です。逆コンパイルでは、バイトコードをJavaソースに変換する必要があります。つまり、多くの低レベルの情報が失われます。コンパイラの最適化について疑問に思っている場合は、おそらくこれが非常に興味深い情報です。
とにかく、 オープンソースのJava逆アセンブラ を書いたことがあります。 Javapとは異なり、これは非常に病理学的なクラスでも機能するので、難読化ツールが自分のクラスに対しても何をしているのかがわかります。お勧めしませんが、逆コンパイルもできます。
IntelliJ IDEAプラットフォームでは、 Java Decompiler IntelliJ Plugin を使用できます。デバッグプロセス中にすべてのJavaソースを表示できない場合でも、それらをすべて表示することができます。それは有名なツール JD-GUI に基づいています。
JADは私には機能しません(Ubuntu 11.10の問題)ので、私は先に進み、 _ jodo _ を使用しました。少なくともOpen Javaのソースコードがあり、my .class を正しく逆コンパイルできました。
最初に 'branches/generic' branchをチェックアウトすることをお勧めします。トランクは安定していません。
AndroChef Java Decompiler を使うと、apk、dex、jar、およびJavaクラスファイルを逆コンパイルできます。それはシンプルで簡単です。 AndroChef JDは FernFlower に基づいています。 10回の無料使用で評価できます。
AndroChefは、総称、列挙型、注釈などのJava言語機能をサポートしています。いくつかの研究によると、AndroChef Java Decompilerは伝統的なJavaコンパイラで生成されたJavaアプリケーションの98.04%を逆コンパイルすることができます - 非常に高い回復率。それはあなたが読みやすいJavaソースにJavaとDalvikバイトコード(DEX、APK)を逆コンパイルすることを可能にするシンプルだが強力なツールです。
OSXの場合、私はお勧めします:jarzillaまたはJD-GUI
それらは両方ともあなたが瓶や戦争などを見ることを可能にします。内容をファイル化し、その中のクラスファイルをすべて逆コンパイルします。
Jarzilla: https://code.google.com/p/jarzilla/
JD-GUI: http://jd.benow.ca/ /