如何在java中将字节数组保存为类文件并在以后对其进行反编译?

时间:2013-02-13 18:24:28

标签: java class bytearray reverse-engineering decompiling

我正在做一个战争游戏,我需要分析一个java应用程序。因此,应用程序加载损坏的类文件,将其转换为字节数组,对其执行某些操作,然后使用该数组正确加载类。我需要分析类,所以我想将它保存为一个单独的类文件,以便稍后使用jd-gui对其进行反编译。我使用以下代码来保存数组:

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

但是之后课程没有被反编译。还有什么办法可以让反编译器读取它?

更新:

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

1 个答案:

答案 0 :(得分: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();