字节码序列反编译

时间:2012-05-12 15:23:28

标签: java bytecode decompiling

我有byte[]数组,我知道它是类文件中方法的字节码序列。有没有办法对这个byte[]数组进行选择性反编译?我无权访问实际的.class文件。 我查看了Javassist库,它有很多方法(javassist.bytecode.CodeAttribute类)但是我找不到这样的具体方法。
有人有线索吗?

我可以使用这个byte[]数组并使用JVM参考手册为JavaByte代码助记符生成实际的字节码,但我需要生成反编译的Java源代码。 谢谢!

2 个答案:

答案 0 :(得分:3)

我从来没有听说过处理单个方法的字节码。我想你会发现你无法用它做任何事情。你有什么字节码?你是从哪里得到的?您熟悉class file formathow methods are stored吗?例如,name of a method存储在the constant pool中,它是整个类文件的一部分,不属于任何一种方法。继续阅读方法格式,看看还有什么。我非常强烈地怀疑你要么没有你认为的那个byte[],要么你没有足够的信息去做任何事情。

免责声明:我只涉及字节码操作,所以不要采取我说的权威。相信规范所说的。

答案 1 :(得分:2)

仅使用特定方法的字节码生成有效的Java源是不可能的,因为所有名称都存储在类范围的常量池中。您可以期待的最好的方法是生成字节码助记符。