goto 命令を含む逆コンパイルされた Java (JD / JAD) ソースを再コンパイルします。
-
19-09-2019 - |
質問
(関連する質問: goto をサポートする Java コンパイラまたは JVM 言語は?)
jar を(合法的に、デバッグ目的で)逆コンパイルしたので、それを再コンパイルしたいと考えています。
両方使ったことがあります JAD そして JD goto 命令が原因で両方ともコンパイルされません
例えば。
goto _L1
...
L1:
return true;
再コンパイルする簡単な方法 (または何らかの方法) はありますか?(手動でリファクタリングして削除する場合を除く) goto
さん)
解決
いいえ、ありません。あなたの場合、JD も JAD もクラス ファイルを正しく逆コンパイルできませんでした。「goto」ステートメントは、実際のプログラム フローに関するヒントです。
Java Decompiler チームに直接連絡し、逆コンパイルによって不正なソース コードが生成されたクラス ファイルを送信して、それが現在のバージョンのバグなのか、それともまだ実装されていない機能なのかを尋ねることができます。
他のヒント
JAD は本当に素晴らしい逆コンパイラです、JD ...「try-catch-finally」ステートメントにはいくつかの問題があります。
Stiver の逆コンパイラを試してみましたか (http://www.reversed-java.com/fernflower) ?
エマニュエル、JDの著者。
すべての逆コンパイラは、Java ソース構造に対応するコード パターンを検索し、最も適合するソースを選択します。
どうやら、あなたが持っているコードはJADまたはJDのいずれかに保存されているパターンに準拠していないため、コンパイルできないJavaソースが得られます。これはおそらく、JAD がここ数年間積極的に開発されていないことが原因であると考えられます。
より積極的な逆コンパイラを備えた Soot プロジェクトを検討することをお勧めします。
CFR や FernFflower などの最新の逆コンパイラーをお勧めします。
6 つの Java デコンパイラをオンラインにしました。Jadx、高速で Android サポート、CFR (Java 8 をサポート)、JDCore (非常に高速)、Procyon、Fernflower、JAD (非常に高速ですが古い)。
ここでインストールせずに使用できます。 http://www.javadecompilers.com/