`
cydhang
  • 浏览: 5596 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

通过javassist来修改class内的方法

 
阅读更多
ClassPool pool = ClassPool.getDefault(); 
CtClass cc = pool.get("com.text.TestClass"); 
  
CtMethod method = cc.getDeclaredMethod("main");
method.setBody("System.out.println(\"Hello,world.\")");
cc.writeFile("bin/");

 

分享到:
评论

相关推荐

    Javassist 修改class字节码

    功能包括:运行时创建java class,修改class。与其他同类工具(asm等)不同的是,Javassist提供了两个层面的API: 1.java代码层 2.字节码层 通过java代码层,开发者即时对字节码不是很熟悉,也可以非常方便快速的...

    使用javassist修改class文件.pdf

    使用javassist修改class文件.pdf

    借助jclasslib与javassist修改java class字节码

    ### 借助jclasslib与javassist修改Java class字节码 #### 一、引言 在软件开发过程中,有时我们可能面临一种情况:即需要对已经编译好的`.class`文件进行修改,但手中并没有对应的源代码。这种情况下,我们可以...

    运用javassist和annotation修改class的特定method的class byte code

    在本文中,我们将深入探讨如何结合Javaassist和注解(Annotation)来修改类中的特定方法的字节码。 首先,了解Javaassist的基本用法是至关重要的。它提供了一套API,可以让我们以类似于编写Java源代码的方式来操作...

    使用Javassist对.class文件进行修改.doc

    在给定的例子中,展示了如何使用 Javassist 修改已有的 `.class` 文件中的方法。以下是一些关键知识点: 1. **ClassPool**: `ClassPool` 类是 Javassist 的核心组件,它管理着一系列的 `CtClass` 对象,这些对象...

    javassistDemo.zip

    总结来说,"javassistDemo.zip"是一个实践教程,通过实例演示了如何使用Javaassist库来动态修改Java类,包括插入新的方法和改变方法的实现。这对于理解和掌握Java运行时代码修改技术,尤其是对于那些需要在运行时...

    javassist官方手册(中文)

    如果一个 CtClass 对象通过 writeFile(), toClass(), 或 toBytecode() 方法被转换为类文件,Javassist 就冻结了此对象。对此 CtClass 对象的后续修改都是不允许的。这是为了警告那些试图修改已经被加载的类文件的...

    Java下的Class代码查看器+修改器

    当需要对类文件进行修改时,如改变方法行为、插入日志、修复bug等,就需要用到Class修改器。ASM、ByteBuddy和Javassist是常见的Java字节码操作库,它们提供了低级别的API,可以直接操作字节码,实现动态代理、AOP切...

    javaagent+javassist

    2. 实现`ClassFileTransformer`,这个接口的`transform`方法将在类加载时被调用,我们可以在这里使用javassist修改字节码: ```java public class MyTransformer implements ClassFileTransformer { @Override ...

    jboss-javassist和JByteMode整合包

    具体来说,可以将JByteMode用于反编译.jar包中的类,获取其源代码,然后利用Javassist修改这些源代码,最后再重新生成字节码并加载到Java虚拟机中。这样的流程在处理复杂的需求,如热更新、插件系统或者代码增强时...

    修改.class文件.zip

    总结来说,修改.class文件涉及到使用如jclasslib这样的工具进行分析,以及编写Java程序利用javassist等库进行字节码级别的修改。这个过程需要对Java虚拟机的工作原理、字节码表示以及反射有充分的理解。务必谨慎操作...

    javassist+jd-gui

    1. **类的加载与操作**:它可以加载类到内存中,并且提供了丰富的 API 来访问和修改类的信息,包括类名、方法、字段等。 2. **字节码生成**:允许开发者使用类似 Java 的语法生成新的类或者方法的字节码,无需关注...

    Javassist学习手册

    - **创建接口**: 如果想要创建接口而不是类,则应使用 `ClassPool.makeInterface(String interfaceName)` 方法来创建 `CtClass` 对象。接口方法可以通过 `CtNewMethod.abstractMethod(String methodName)` 创建。 *...

    java 反编译工具 jboss-javassist

    3. **创建或修改类**:通过`ClassPool`获取或创建类对象,然后利用`CtClass`的方法来添加、修改或删除类的字段和方法。 4. **处理方法体**:使用`CtMethod`可以获取或修改方法体,包括插入、替换或删除代码。 5. *...

    javassist-3.20.0-GA.zip

    同样,如果你想修改已有方法,可以通过`CtClass`的`getDeclaredMethod()`找到方法,然后修改其字节码。 在Javassist中,`CtConstructor`, `CtField`等类分别代表构造函数和字段,它们提供了与方法类似的API,使得对...

    Javassist18版20版22版的jar包

    - 类的动态修改:Javassist提供了一种简单的方式来修改类的方法、字段,甚至可以在运行时添加新的方法或字段。 - 字节码操作:它允许用户通过CtClass接口来操作字节码,CtClass对象代表一个类的字节码表示。 - ...

    javassist demo

    5. **修改方法**:通过`CtMethod`对象,可以修改类中已存在的方法。例如,你可以使用`setBody()`来替换方法体,或者使用`insertBefore()`和`insertAfter()`在原有方法体前后插入代码。 6. **动态代理**:Javaassist...

    javassist-3.15.0-GA

    - **字节码操作**:Javaassist通过字节码操作实现对类的修改,它可以解析.class文件,并允许用户以Java语法修改字节码。 2. **使用场景**: - **AOP(面向切面编程)**:在不修改源代码的情况下,插入切面代码,...

    jclasslib修改class文件

    java修改class文件使用的jclasslib.jar、javassist.jar等等文件。相关步骤、还有一个idea项目示例。(当时找了好久的jclasslib.jar文件,最后才找到一个可用的)

    javassist-3.18.0-GA

    4. **使用javassist修改class文件.txt**: 这个文件可能是一个示例或教程,解释了如何利用 Javaassist 修改已存在的 `.class` 文件。通过读取这个文件,开发者可以学习到如何在运行时改变类的行为,例如添加新的...

Global site tag (gtag.js) - Google Analytics