java的字节码增强的方式

BitRhapsodyMaster
• 阅读 7043

1、修改字节码

第一步要用的工具有ASM、javassist、cglib(基于ASM),用来修改字节码。

2、加载新的字节码

第二步,自定义ClassLoader来加载修改后的字节码

3、替换原来的字节码

或者替换掉原来的字节码,这里主要有两种技术:
1、在JVM加载用户的Class时,拦截,返回修改后的字节码
2、在运行时,使用Instrumentation.redefineClasses方法来替换掉原来的字节码,和这个类相关的实例立即生效。

都需要agent外挂在启动时
java -javaagent:xxxtransformer.jar xxxclass
或者运行时通过VirtualMachine.attach和VirtualMachine.loadAgent把agent attach到pid上

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
4年前
java字节码操作
你知道如何操作JAVA字节码文件吗,这里将介绍与操作Java字节码有关的基本知识和操作Java字节码的方法及Demo,首先我们来看一下AOP的概念,AOP是OOP的延续,是AspectOrientedProgramming的缩写,意思是面向方面编程。如何操作JAVA字节码文件  本文将介绍与操作Java字节码有关的基本知识和操作Ja
限时发布!纯手打“RocketMQ笔记”
1JVM的内存区域布局java代码的执行步骤有三点java源码文件编译器字节码文件字节码文件JVM机器码机器码系统CPU执行JVM执行的字节码需要用类加载来载入;字节码文件可以来自本地文件,可以在网络上获取,也可以实时生成。就是说你可以跳过写java代码阶段,直接生成字节码交由JVM执行其中Jav
浅谈字节码增强技术系列1-字节码增强概览
作者:董子龙前言前段时间一直想参照lombok的实现原理写一篇可以生成业务单据修改记录插件的专利,再查阅资料的过程中,偶然了解到了字节码增强工具byteBuddy。但是由于当时时间紧促,所以没有深入的对该组件进行了解。其实再我们的日常开发中,字节码增强组件
Java层逆向分析方法和技巧
本公众号分享的所有技术仅用于学习交流,请勿用于其他非法活动,如有错漏,欢迎留言指正Java层逆向分析方法和技巧一、smali汇编1.Dalvik字节码java字节码、Dalvik字节码、机器码之间的关系?在Android上,Java代码首先经过编译器编译成
Stella981 Stella981
4年前
AR包介绍大全用途作用详解JAVA
jta.jar标准JTAAPI必要commonscollections.jar集合类必要antlr.jar ANotherToolforLanguageRecognition必要asm.jar ASM字节码库 如果使用“cglib”则必要asmattrs.jar ASM字节码库如果使用“cglib”
Stella981 Stella981
4年前
2200 Star!功能强大的 Java 字节码编辑器!
【导语】:Recaf是一款功能十分强大的Java字节码编辑器,基于objectweb的ASM构建,可以更好地显示文件的属性,并为字节码编辑提供方便。简介Recaf是一个易于使用的现代的Java字节码编辑器,它抽象了Java程序的复杂性,自动处理栈帧和常量池的生成,它是一种辅助编辑工具,提供修改字节码的界面,可以提高工作效率。当然,使用这个工具
Wesley13 Wesley13
4年前
CGLIB代理基础
  本文意在讲解CGLIB的基础使用及基本原理。一、CGLIB的基本原理:  依赖ASM字节码工具,通过动态生成实现接口或继承类的类字节码,实现动态代理。  针对接口,生成实现接口的类,即implements方式;针对类,生成继承父类的类,即extends方式。二、为什么使用CGLIB?  JDK的动态代理只能基于接口,有时候我们想基于类
Wesley13 Wesley13
4年前
Java虚拟机(一):JVM简介
JVM简介Java虚拟机(JVM)是由Java虚拟机规范定义的,其上运行的是字节码指令集。这种字节码指令集包含一个字节的操作码(opcode),零至多个操作数(oprand),虚拟机规范明确定义了每种字节码指令完成的功能是什么以及需要多少个操作数。Java虚拟机上运行的class文件,这个文件中包含字节码指令流以及类定义的信息,所以Java虚
Wesley13 Wesley13
4年前
Java字节码增强探秘
1.字节码1.1什么是字节码?Java之所以可以“一次编译,到处运行”,一是因为JVM针对各种操作系统、平台都进行了定制,二是因为无论在什么平台,都可以编译生成固定格式的字节码(.class文件)供JVM使用。因此,也可以看出字节码对于Java生态的重要性。之所以被称之为字节码,是因为字节码文件由十六进制值组成,
可莉 可莉
4年前
2200 Star!功能强大的 Java 字节码编辑器!
【导语】:Recaf是一款功能十分强大的Java字节码编辑器,基于objectweb的ASM构建,可以更好地显示文件的属性,并为字节码编辑提供方便。简介Recaf是一个易于使用的现代的Java字节码编辑器,它抽象了Java程序的复杂性,自动处理栈帧和常量池的生成,它是一种辅助编辑工具,提供修改字节码的界面,可以提高工作效率。当然,使用这个工具
打开java语言世界通往字节码世界的大门——ASM字节码操作类库
一、ASM介绍1、ASM是什么ASM是一个通用的Java字节码操作和分析框架。它可以用于修改现有类或直接以二进制形式动态生成类。ASM提供了一些常见的字节码转换和分析算法,可以从中构建定制的复杂转换和代码分析工具。ASM提供了与其他Java字节码框架类似的