私はウォーゲームをやっていて、Java アプリを分析する必要があります。そのため、アプリは破損したクラス ファイルをロードし、それをバイト配列に変換して何らかの処理を行い、その配列を使用してクラスを適切にロードします。クラスを分析する必要があるため、別のクラス ファイルとして保存して、後で jd-gui を使用して逆コンパイルしたいと考えました。次のコードを使用して配列を保存します。
FileOutputStream output = new FileOutputStream(new File("class.class"));
output.write(arrayOfByte);
しかし、クラスは後で逆コンパイルされません。逆コンパイラで読み取れるようにするには、他に何をしなければなりませんか?
アップデート:
破損したとは、クラス ファイルが実際には不完全であり、アプリがクラスを完成させ、内部で有効なクラス ファイルにしてからロードするということです。プログラマーは、クラスが逆コンパイルされて読み取られるのを防ぐためにこれを行いました。これは質問には実際には必要ありませんが、明確にしたほうがよいと思いました。