最近要用到jdeli-imageio包里面一个功能,进行了去水印处理。

首先新建一个空白maven项目,并引入javassist依赖
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.28.0-GA</version>
        </dependency>

编写一个Java类类处理
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;

public class Cracker {

    public static void main(String[] args) throws Exception {
            cracker();
    }
    public static void cracker() throws Exception {
        // 获取 Jar 包
        ClassPool.getDefault().insertClassPath(
                "D:/jdeli-imageio-cracker.jar");
        CtClass c2 = ClassPool.getDefault().getCtClass("com.idrsolutions.image.JDeliImage");
        CtMethod aMethod = c2.getDeclaredMethod("optimiseImage",new CtClass[]{ClassPool.getDefault().makeClass("java.awt.image.BufferedImage")});
        // 重置方法体
        aMethod.setBody("{ return $1;}");
        c2.writeFile();
    }
}
运行上面然后得到的class进行替换jar包里面的class文件即可。生成的class文件默认在当前项目的com.idrsolutions.image包下面。

提示:以上操作仅供学习研究参考,切勿用于商用。

评论区域

评论功能已关闭. 提示:评论功能虽已关闭,关闭之前的评论仍然会展示。