【发布时间】:2016-11-12 18:54:11
【问题描述】:
http://lpaste.net/338173 的反汇编代码(使用 javap -c)如下所示:http://lpaste.net/338175,在第三列,有 200 作为“sipush”的参数,我如何使用 javassist 从类文件中获取它?
【问题讨论】:
标签: java disassembly javassist javap
http://lpaste.net/338173 的反汇编代码(使用 javap -c)如下所示:http://lpaste.net/338175,在第三列,有 200 作为“sipush”的参数,我如何使用 javassist 从类文件中获取它?
【问题讨论】:
标签: java disassembly javassist javap
sipush 是一个字节码,它接受一个两个字节的参数,该参数是一个要压入操作数堆栈的数字。在 Javassist 中,您可以通过 CtMethod 的 MethodInfo 中的 CodeAttribute 迭代方法的所有字节码。在您的情况下,它将是第一个字节码,但您可以检查您是否已到达Opcode.SIPUSH。迭代到此指令后,您可以通过迭代器中的 s16bitAt 方法读取 2 字节参数。该方法采用从零开始的索引。在您的情况下,这会使 sipush 的参数为零,并将 200 作为值返回。
【讨论】: