【问题标题】:Getting the arguments for the bytecode using Javassist使用 Javassist 获取字节码的参数
【发布时间】:2016-11-12 18:54:11
【问题描述】:

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

【问题讨论】:

    标签: java disassembly javassist javap


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多