残念ながら、Android のソース コードを削除してしまいました。dex2jar と baksmali を使用して jar を取得しようとし、jd-gui を使用して .apk ファイルを使用して Java ソース ファイルを取得しました。はい、ファイルを取得しましたが、問題は、Java ファイルの多くの場所で、コードがバイト形式になっていることです。先に進むには、それを読み取り可能な形式にする必要があります。
2 に答える
逆コンパイルは完全な科学ではなく、入力した正確な Java コードが返されることはめったにありません。
コードをコンパイルすると、コードに対して一連の最適化が行われるため、元のコードを取得することを目的としている場合、逆コンパイルがより困難になります。
せいぜい、適切に逆コンパイルされた多くのコードと、いくつかのバイトコードを取得できます。元のコードを書きながら、プログラム内のどこにあるかに基づいて、そのバイト コードをどの Java コードで置き換えるかを判断できるはずです。
ほとんどの単純なアプリでは、逆コンパイルしてその逆コンパイルされたコードを修正しようとするよりも、最初から書き直す方が簡単です。
tl;dr: コードのバックアップを忘れないでください。これまで。
一般に、読み取り可能なソースを取得することが目標である場合は、JD-Gui のようなものが最善の策です。しかし、失敗した場合は、私が書いた逆コンパイラであるKrakatauを試すことができます。
Krakatau は、クラスファイルが難読化されていたり、Java からコンパイルされていない場合でも、クラスファイルを逆コンパイルできるように設計されています。ただし、Java コンパイラーが残したパターンを利用しないため、結果は JD-Gui のようなものよりも読みにくくなります。完璧ではありませんが、試してみる価値はあると思います。
PS Krakatau は JVM バイトコードのみをサポートします。逆コンパイルする前に、Android から Java バイトコードに戻す方法が必要です。