首页 > 编程语言 >使用javassist修改jar包里class文件

使用javassist修改jar包里class文件

时间:2022-12-12 14:56:29浏览次数:69  
标签:文件 classPool jar c2 class javassist

参考:使用javassist修改jar包里class文件_淹死的鱼0719的博客-CSDN博客

一、javassist依赖

<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.28.0-GA</version>
</dependency>

二、编写修改.class文件

注意:文件目录

jar包要放在工程目录下!!!

public static void main(String[] args) {
        // 获取 Jar 包
        ClassPool classPool = ClassPool.getDefault();
        classPool.insertClassPath("D:\\test\\test.jar");
        CtClass c2 = classPool.getCtClass("com.kk.A");
        // A类有参方法
        CtMethod aMethod = c2.getDeclaredMethod("methodName", new CtClass[]{classPool.makeClass("java.lang.String")});
        // 重置方法体,方法体里面的参数要用$1,$2...代替, 涉及的类要用全类名
        aMethod.setBody("方法体");
        // A类无参方法
        CtMethod bMethod = c2.getDeclaredMethod("methodName");
        // 重置方法体,涉及的类要用全类名
        bMethod.setBody("方法体");
        c2.writeFile();
}

执行

三、替换class类

生成的.class文件替换原.class文件,工具7Z

标签:文件,classPool,jar,c2,class,javassist
From: https://www.cnblogs.com/qqkkOvO/p/16976019.html

相关文章