aspose.pdf
- 下载Aspose.PDF for Java21.11官方jar包
- 添加Javassist修改class字节码文件
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.28.0-GA</version>
</dependency>
- 执行方法
/**
* 修改pdf jar包里面的校验
*/
public static void main(String[] args) {
try {
//这一步是完整的jar包路径,选择自己解压的jar目录
ClassPool.getDefault().insertClassPath("D:\\Space\\IDEA_Space\\testcreak\\src\\main\\resources\\lib\\aspose-pdf-22.11.jar");
//获取指定的class文件对象
CtClass zzZJJClass = ClassPool.getDefault().getCtClass("com.aspose.pdf.ADocument");
//从class对象中解析获取所有方法
CtMethod[] methodA = zzZJJClass.getDeclaredMethods();
for (CtMethod ctMethod : methodA) {
//获取方法获取参数类型
CtClass[] ps = ctMethod.getParameterTypes();
//筛选同名方法,入参是Document
if (ps.length == 0 && (ctMethod.getName().equals("lj") || ctMethod.getName().equals("lt")) ) {
ctMethod.setBody("{return true;}");
}
if (ps.length == 1 && (ctMethod.getName().equals("lI")) && ps[0].getName().equals("com.aspose.pdf.internal.l10k.ly")) {
ctMethod.setBody("{return true;}");
}
}
//指定位置,这个位置会生成一个com文件夹
zzZJJClass.writeFile("D:\\Space\\IDEA_Space\\testcreak\\src\\main\\resources\\lib\\");
} catch (Exception e) {
System.out.println("错误==" + e);
}
}
- 修改jar内容
用解压缩工具打开从官网下载的aspose-pdf-22.11.jar
,
- 替换com内容
生成的com文件夹中,有1个文件,
直接把生成的com文件夹拖到压缩包中
- 删除META-INF文件夹中的两个文件
37E3C32D.RSA
和37E3C32D.SF
aspose.word
参考第一个 aspose.pdf
版本aspose-words-20.12
- 引入
javassist
依赖 - 执行方法
ClassPool.getDefault().insertClassPath("C:\\Users\\coder\\Downloads\\aspose-words-20.12-jdk17.jar");
CtClass zzZJJClass = ClassPool.getDefault().getCtClass("com.aspose.words.zzZDZ");
CtMethod zzZ4u = zzZJJClass.getDeclaredMethod("zzZ4n");
CtMethod zzZ4t = zzZJJClass.getDeclaredMethod("zzZ4m");
zzZ4u.setBody("{return 1;}");
zzZ4t.setBody("{return 1;}");
zzZJJClass.writeFile("C:\\Users\\coder\\Desktop\\");
- 修改jar包
- 替换com文件夹
- 删除META-INF文件夹里的.RSA和.SF文件