0

私はウォーゲームをやっていて、Java アプリを分析する必要があります。そのため、アプリは破損したクラス ファイルをロードし、それをバイト配列に変換して何らかの処理を行い、その配列を使用してクラスを適切にロードします。クラスを分析する必要があるため、別のクラス ファイルとして保存して、後で jd-gui を使用して逆コンパイルしたいと考えました。次のコードを使用して配列を保存します。

FileOutputStream output = new FileOutputStream(new File("class.class"));
output.write(arrayOfByte);

しかし、クラスは後で逆コンパイルされません。逆コンパイラで読み取れるようにするには、他に何をしなければなりませんか?

アップデート:

破損したとは、クラス ファイルが実際には不完全であり、アプリがクラスを完成させ、内部で有効なクラス ファイルにしてからロードするということです。プログラマーは、クラスが逆コンパイルされて読み取られるのを防ぐためにこれを行いました。これは質問には実際には必要ありませんが、明確にしたほうがよいと思いました。

4

1 に答える 1

0

例のパスにクラスJavaバイトコードを正しく記述していることを確認してください

クラス名を含むクラスの完全修飾名がcom.test.Sampleであるとすると、com \ test\Sample.classフォルダーの下にクラスバイトコードを記述する必要があります。

さらに、バイトコードを書き込んだ後、FileOutputStreamが正しく閉じられていることを確認します。

// use fully qualified class name
FileOutputStream output = new FileOutputStream(new File("c:\\com\\test\\Sample.class"));
output.write(arrayOfByte);
output.close();
于 2013-02-13T18:38:04.450 に答える