操作aspose-pdf-20.12-jdk17.jar 对其重编译修改校验权限 使用javassist 重编译(学习测试使用)
package com.xlw.filebag.compile; import javassist.ClassPool; import javassist.CtClass; import javassist.CtMethod; /** * @date 2021-03-16 * @user xlw * PDFCompile * */ public class PDFCompile { public static void main(String[] args) throws Exception { compile(); } public static void compile() throws Exception{ ClassPool.getDefault().insertClassPath("C:\\Users\\Administrator\\Desktop\\jar\\aspose-pdf-20.12-jdk17.jar"); CtClass ctClass = ClassPool.getDefault().getCtClass("com.aspose.pdf.ADocument"); CtMethod[] declaredMethods = ctClass.getDeclaredMethods(); for (CtMethod method: declaredMethods) { CtClass[] ps = method.getParameterTypes(); if (ps.length==2 && method.getName().equals("lI") && ps[0].getName().equals("com.aspose.pdf.ADocument") && ps[1].getName().equals("int")){ // 最多只能转换4页 处理 System.out.println(method.getReturnType()); System.out.println(ps[1].getName()); method.setBody("{return false;}"); } if (ps.length==0&& method.getName().equals("lt")){ // 水印处理 method.setBody("{return true;}"); } } ctClass.writeFile("C:\\Users\\Administrator\\Desktop\\jar\\"); } }package com.ysxn.office; import javassist.*; import java.io.IOException; /** * aspose-cells for java 21.11 测试 * @author : xlw * @since : 2026-09-02 13:59 * JavasistCompile */ public class JavasistCompile { public static void main(String[] args) { crackAsposePdfJar("C:\\Users\\Administrator\\Desktop\\aspose-cells-21.11.jar"); } private static final String Desktop="C:\\Users\\Administrator\\Desktop\\"; private static void crackAsposePdfJar(String jarName) { try { // 这个是得到反编译的池 ClassPool pool = ClassPool.getDefault(); // 取得需要反编译的jar文件,设定路径 pool.insertClassPath(jarName); CtClass ctClass = pool.get("com.aspose.cells.License"); CtMethod[] declaredMethods = ctClass.getDeclaredMethods(); for (CtMethod method : declaredMethods) { if (method.getName().equals("isLicenseSet")) { method.setBody("{return true;}"); continue; } if (method.getName().equals("setLicense")) { method.setBody("{ a = this;\n" +" com.aspose.cells.zblc.a();}"); continue; } } ctClass.writeFile(Desktop); } catch (NotFoundException e) { e.printStackTrace(); } catch (CannotCompileException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }编译之后替换jar包中原来的class文件,并删除原有jar中 37E3C32D.SF 、37E3C32D.RSA 文件