JVM クラス ファイルとテキスト表現の間を往復するフェイル セーフな方法を探しています。
厳密な要件の 1 つは、テキスト表現が変更されていない限り、結果として得られるラウンドトリップ JVM クラス ファイルが元の JVM クラス ファイルと機能的に完全に同等であることです。
さらに、テキスト表現は人間が判読可能で編集可能でなければなりません。テキスト表現に小さな変更 (テキスト文字列やクラス名の変更など) を加えて、結果のクラス ファイル表現に反映できるようにする必要があります。
最も簡単な解決策は、JAD などの Java デコンパイラを使用してテキスト表現を生成することです。この場合、テキスト表現は単純に再作成された Java ソース コードになります。次に、javac を使用してバイトコードを生成します。ただし、無料の Java 逆コンパイラの現状を考えると、このアプローチはすべての状況で機能するとは限りません。クラスファイル/Java ソース/クラスファイルの完全なラウンドトリップに耐えられない難読化されたバイトコードを作成するのはかなり簡単です (一部には、JVM バイトコードとJava ソースコード)。
上記の要件を考慮して、JVM クラスファイル/テキスト表現/クラスファイルのラウンドトリップを実現するフェイルセーフな方法はありますか?
更新:回答する前に - 上記のすべての要件を読んで時間と労力を節約し、具体的には次の点に注意してください。
- 「JVM バイトコードのテキスト表現」は、必ずしも「Java ソースコード」を意味するわけではありません。