文章目录
1.概述
在上一篇文章:【ASM】字节码操作 转换已有的类 清空方法体 我们学会了如何清空方法体,本章内容我们主要是学习如何替换方法调用。
1.1.如何替换Instruction
有的时候,我们想替换掉某一条instruction ,那应该如何实现呢?其实,实现起来也很简单,就是先找到该instruction ,然后在同样的位置替换成另- -个instruction就可以了。
同样,我们也要注意:在替换instruction的过程当中, operand stack在修改前和修改后是一致的。
在方法当中,替换Instruction ,有什么样的使用场景呢?
比如说,第三方提供的jar包当中,可能在某一个.class文件当中调用了一个方法。这个方法。从某种程度上来说,你可能对它"不满意"。假如说,这个方法是一一个验证逻辑的方法,你想替换成自己的验证逻辑,又或者说,它实现的功能比较简单,你想替换成功能更完善的方法,就可以把这个方法对应的Instruction替换掉。
2.示例:替换方法调用.
2.1预期目标
假如有一个类,代码如