使用Javassist获取字节码的参数

时间:2016-11-12 18:54:11

标签: java disassembly javassist javap

http://lpaste.net/338173的反汇编代码(使用javap -c)如下所示:http://lpaste.net/338175,在第三列,有200作为“sipush”的参数我如何才能从使用javassist的类文件?

1 个答案:

答案 0 :(得分:1)

sipush是一个字节码,它接受一个双字节参数,这是一个推入操作数堆栈的数字。在Javassist中,您可以通过CodeAttribute的{​​{1}}中提供的CtMethod迭代方法的所有字节码。在您的情况下,它将是第一个字节代码,但您可以检查是否到达MethodInfo。迭代到此指令后,您可以通过迭代器中的s16bitAt方法读取2字节参数。该方法采用从零开始的索引。在您的情况下,这会使Opcode.SIPUSH的参数为零,并将sipush作为值返回。