0

我正在做一个兵棋推演,我需要分析一个 java 应用程序。因此,应用程序加载了一个损坏的类文件,将其转换为字节数组,对其进行处理,然后使用该数组正确加载类。我需要分析这个类,所以我想将它保存为一个单独的类文件,以便以后使用 jd-gui 对其进行反编译。我使用以下代码保存数组:

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

但是该类之后不会被反编译。我还需要做什么才能使其被反编译器读取?

更新:

我所说的损坏的意思是类文件实际上是不完整的,应用程序完成了类并使其成为内部有效的类文件,然后加载它。程序员这样做是为了防止类被反编译和读取。这个问题并不真正需要,但我认为如果我澄清一下会更好。

4

1 回答 1

0

确保将类 java 字节码正确写入 Example 的路径

假设包含类名的类完全限定名称是 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 回答