当前位置:网站首页>用Asm生成Class字节码文件
用Asm生成Class字节码文件
2022-07-29 14:29:00 【程序员青菜】
一、背景
这其实是一个系列,所讲的都是关于如何在执行的时候动态更改代码,从动态代理、到Javaassist,然后到Asm,都是为了做同一件事情。
1、Java代理
相对于Javassist,Asm是直接生成二进制Class文件,效率会更高,但编写代码特别繁琐。
二、Asm一些重要的类说明
1、ClassVistor接口的两个子类,ClassWriter和ClassReader,一个用来生成Class文件,一个用来写Class文件。如果修改已经存在的Class,你需要先使用ClassReader来分析Class文件。
2、MethodVistor类
visitCode:ASM开始扫描这个方法
visitMaxs(maxStack, maxLocals); 这段代码使用最多一个堆元素 和一个 局部变量
visitEnd() 输出完成。
visitVarInsn:访问局部为量。
三、用Asm生成HelloWorld例子
这语法还是很难写的,调了好久才成功输出了HelloWorld,可以在Eclipse或IDEA中安装bytecode可以查一个Class文件的字节码,然后参照字节码文件修改代码。
边栏推荐
- Principles Of Mathematical Analysis, Third Edition免费下载地址
- AVH部署实践 (一) | 在Arm虚拟硬件上部署飞桨模型
- leetcode linked list topic
- 如何编辑CAD图库里的图纸
- kubernetes中正strace etcd
- 电视处理器a53和a55哪个厉害(cortexa55处理器好吗)
- Shared memory - shmget filling holes
- 代码越写越乱?那是因为你没用责任链
- Domestic mobile phones turn users into their advertising broilers, no wonder consumers are buying iPhones
- 中国互联网科技企业群狼围攻,谷歌终于遭受重挫导致利润大跌,它为推动鸿蒙的发展而后悔...
猜你喜欢
使用Xshell和Xftp7跑学校服务器记录
打卡广汽本田喜悦安全驾驶中心,体验最刁钻的场地训练
Work Efficiency - Fifteen minutes allows you to quickly learn Markdown syntax to proficient in typesetting practice notes
【堡垒机小知识】硬件堡垒机是什么意思?其与云堡垒机有什么区别?
EA&UML日拱一卒-活动图::StartClassifierBehavior和StartObjectBehavior
疫情之下的裁员浪潮,7点建议帮你斩获心仪offer
Google Cloud X Kyligence|如何从业务视角管理数据湖?
工业设备数字孪生技术,解决方案系统平台案例
FPGA刷题——跨时钟域传输(FIFO+打拍+握手)
leetcode linked list topic
随机推荐
进程间通信 --- system V三种通信方式(图文案例讲解)
接口和抽象
中国互联网科技企业群狼围攻,谷歌终于遭受重挫导致利润大跌,它为推动鸿蒙的发展而后悔...
已解决SyntaxError: invalid character in identifier
数据库mysql的执行顺序(sql语句大全实例教程)
How to return all prime factors of a number?
这个 MySQL bug,99% 的人会踩坑!
RAMAN CONFIGURE 命令都能实现哪些功能
AI全流程开发难题破解之钥
令人难以置信的DeepMind数据库现在包括了科学界已知的几乎所有蛋白质
Interfaces and Abstractions
hyperbench:plugin.Open(“./fabric“): plugin was built with a different version of package golang.
Chinese Internet technology companies were besieged by wolves. Google finally suffered a severe setback and its profits fell sharply. It regretted promoting the development of Hongmeng...
测试日报怎么写 ?
通过二维顺序表实现杨辉三角
潘多拉 IOT 开发板学习(RT-Thread)—— 实验19 MQTT 协议通信实验(学习笔记)
电视处理器a53和a55哪个厉害(cortexa55处理器好吗)
arcpy脚本制作arcgis工具箱注意事项
xss内容总结
Offensive EA&UML day arch - activity diagram: : Variable Actions (continue)