【ASM】字节码操作 转换已有的类 修改方法 替换方法调用

96 篇文章 14 订阅 ¥39.90 ¥99.00
本文介绍了如何使用ASM库在已有的Java类中替换方法调用。首先,文章概述了替换指令的基本原理,强调了替换过程中需保持操作数栈的一致性。接着,通过示例展示了如何替换静态和非静态方法调用,详细解释了替换非静态方法时处理this变量的重要性。最后,文章总结了替换指令的关键点和注意事项。
摘要由CSDN通过智能技术生成


在这里插入图片描述

1.概述

在上一篇文章:【ASM】字节码操作 转换已有的类 清空方法体 我们学会了如何清空方法体,本章内容我们主要是学习如何替换方法调用。

1.1.如何替换Instruction

有的时候,我们想替换掉某一条instruction ,那应该如何实现呢?其实,实现起来也很简单,就是先找到该instruction ,然后在同样的位置替换成另- -个instruction就可以了。

在这里插入图片描述

同样,我们也要注意:在替换instruction的过程当中, operand stack在修改前和修改后是一致的。

在方法当中,替换Instruction ,有什么样的使用场景呢?

比如说,第三方提供的jar包当中,可能在某一个.class文件当中调用了一个方法。这个方法。从某种程度上来说,你可能对它"不满意"。假如说,这个方法是一一个验证逻辑的方法,你想替换成自己的验证逻辑,又或者说,它实现的功能比较简单,你想替换成功能更完善的方法,就可以把这个方法对应的Instruction替换掉。

2.示例:替换方法调用.

2.1预期目标

假如有一个类,代码如

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九师兄

你的鼓励是我做大写作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值