前言
工欲善其事,必先利其器
源码分析
1. 下载Aspose.PDF for Java21.11官方jar包
2. 开始分析
- 调用授权方法
1 | java复制代码InputStream is = new FileInputStream("..license.xml"); |
license.xml文件内容这里是个过期的文件主要是格式
1 | xml复制代码<License> |
- 分析License类的
setLicense
方法setLicense
代码太长我就不贴了,源码里面有。
主要分析里面的核心代码,setLicense
第两个重载方法主要验证在139和140行
1 | java复制代码l9f var10 = new l9f(); |
进入l9f
类的lT
方法
1 | java复制代码void lI(InputStream var1) throws Exception { |
仔细观察你会发现这个方法就是验证的,主要是做验证失败抛异常和添加一些标识,这个分析下来就简单了,我们直接找到验证成功的最终执行176~179行,然后尝试修改试一下。
1 | java复制代码this.l0if = l10if.lf; |
3. 分析结果
- 修改
void lI(InputStream var1)
方法为
1 | java复制代码void lI(InputStream var1) throws Exception { |
执行操作
1. 添加Javassist修改class字节码文件
1 | xml复制代码<dependency> |
2. 添加修改方法
1 | java复制代码/** |
运行修改方法后会在桌面生成 com 修改后的文件夹
3. 修改jar包里面的数据
为了不修改原jar包建议复制一份重命名。
- 打开jar包将桌面com文件夹覆盖到jar包com文件夹
2. 删除jar包里面的.RSA
和.SF
文件
4. 重新导入修改后的jar包进行测试
- maven移除旧的jar包,导入修改后的jar包
- 调用测试方法进行测试转换后的文件是否去除水印和数量限制成功
1 | java复制代码String sourceFile = "D:\\b.pdf";//输入的文件 |
声明
本方法只做个人研究学习使用,切勿用于商用。
其他参考
Aspose.Words for Java21.11去除水印和数量限制
本文转载自: 掘金