使用Java ASM删除方法

时间:2017-01-31 22:53:50

标签: java java-bytecode-asm bytecode-manipulation

我试图使用Java ASM库,经过相当多的研究,我还没有找到解决我遇到的问题的方法。我试图创建一个执行以下操作的应用程序:

  • 从外部Jar文件中读取类
  • 从指定的类中完全删除某些方法
  • 打印到控制台或存储修改后的课程'编译的字节码或编译的类内容,例如来自new String(cw.toByteArray()),cw是ClassWriter的实例(类似于使用记事本编辑类文件时的情况)

我已经能够读取字节码和已编译的类内容,但不能删除方法。我还没有能够找到任何正常工作的代码,只能找到部分代码,但很少解释如何实现它。

1 个答案:

答案 0 :(得分:2)

您可以实现ClassVisitor覆盖visitMethod方法并从此方法返回null,而不会在发现某种模式时调用super.visitMethod

这样,将跳过相关方法,而不会将其添加到创建的类文件中。