Java アプリケーションを逆コンパイルし、逆コンパイルされたコードを使用してデバッグすることはできますか?
逆コンパイル自体よりも、逆コンパイルされたコードを使用してデバッグする機能に興味があります (それは些細なことです)。
はい、有料と無料の両方で、インターネット上で利用可能なJava逆コンパイラがあります。私は現在、無料の試用版を提供する「DJ Java decompiler」と呼ばれるものを使用しています。
逆コンパイルしようとしている jar が難読化されていないことを期待できます。
他の多くの人がすでに指摘しているように、それは確かに可能です。
JAR を逆コンパイルし、逆コンパイルされたクラスを直接実行して (つまり、ソースとして使用して) デバッグするだけの場合は、十分に役立つ逆コンパイラがたくさんあります。
アプリケーションで使用中の JAR をデバッグする予定がある場合は、逆コンパイラを選択する際に、適切なソース コードの行番号配置機能に注意してください。たとえば、この質問を見てください。次のような逆コンパイルされたコードになる可能性があります。
Line X /* Line Y */ int x = y
Line Y (anything can be here, it could even not exist)
X と Y の値がまったく異なります。これは、逆コンパイルされた .java ファイルの行 X が、コンパイルされたコードの行 Y に対応することを意味します。jar をデバッグするときは、ソース ファイルの行 Y にブレークポイントを配置してそこで停止する必要があります。これは、デバッグするのが非常に煩わしい場合があります。ソース ファイル内の逆コンパイルされたコードを行番号に合わせて調整する逆コンパイラがあります。
Line X /* Line X */ int x = y
私はJD-Eclipse Realignを使用してEclipseで成功しました。私を信じてください、ソース行のアライメントを使用して逆コンパイルされたコードをデバッグすることは違いを生みます。
アプリケーションが適切に逆コンパイルされ、デバッグ情報が削除されていない場合は、そうです。