我正在做一个战争游戏,我需要分析一个java应用程序。因此,应用程序加载损坏的类文件,将其转换为字节数组,对其执行某些操作,然后使用该数组正确加载类。我需要分析类,所以我想将它保存为一个单独的类文件,以便稍后使用jd-gui对其进行反编译。我使用以下代码来保存数组:
FileOutputStream output = new FileOutputStream(new File("class.class"));
output.write(arrayOfByte);
但是之后课程没有被反编译。还有什么办法可以让反编译器读取它?
更新:
我的意思是损坏,是类文件实际上是不完整的,应用程序完成了类并使其成为一个有效的类文件,然后加载它。程序员这样做是为了防止类被反编译和读取。这个问题并不是真的需要,但我认为如果我澄清会更好。
答案 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();