前言
最近在研究文档转换的功能,经过对众多产品的实验与分析,最终把目光放在了Aspose旗下的words产品上。
看了大多帖子发现版本都太老了,并且讲述得不够清晰,无奈自己动手破解一个吧。以后有需要就不需要上网搜帖子了
介绍
Aspose文档转换组件是一款十分优秀的组件,Aspose于2002年3月在澳大利亚悉尼创建。公司网站于2002年10月对外发布。Aspose 一直致力于成为全球最大的.Net 组件提供商,为全球.NET 程序员提供最丰富的选择。数十个国家的数千机构选择了Aspose的产品,这包括微软、IBM、普华永道、安永、杜邦、希尔顿酒店、读者文摘、美洲银行、波音、西门子等等
Aspose.word
Aspose.Words是一款先进的类库,通过它可以直接在各个应用程序中执行各种文档处理任务。Aspose.Words支持DOC,OOXML,RTF,HTML,OpenDocument, PDF, XPS, EPUB和其他格式。使用Aspose.Words,您可以生成,更改,转换,渲染和打印文档而不使用Microsoft Word。
提供多语言API .net、java、php等,不需要单独安装独立应用
声明 !!!
本篇文章仅讨论实现思路不提供破解包,仅供学习参考,商业用途请购买正版
准备工作
下载jar包
仓库地址
本文使用19.1版本做示范,从19后期版本开始对jar包中加入了更多的代码校验,由明文显示的方式改为了byte[]形式,
同时代码关联错综复杂,为了简化本教程使用相对容易破解的版本做说明
正文
未解除验证效果


未验证版本在每页都会带上水印
手术开始…
定位验证文件
-
需要对jar包进行反编译,常用工具有idea 、jd-gui等
-
这里用jd-gui做示例,导入jar包,搜索License验证文件
分析代码逻辑
从下方的License类中可以看出jar包做了代码混淆,但这并不影响我们对代码逻辑的分析
- else为验证文件的不为空执行的代码,由此可推出由 “zzY” 、"zzZIO"两个函数做的验证逻辑
- 已知isLicensed() return 1 为验证操作,所以我们只需要更改对应函数的返回值即可
全盘复制代码,新建一个同名的.java文件复制进去
打开java文件,并对相关验证函数做修改。
就是这两个函数啦,让我们往它眼睛里弄点灰
修改后的效果:
替换jar包内class文件
将jar包和我们编写好的java文件放在相同路径中,使得编译时可以引用到,在上方地址栏输入cmd指令在本目录下打开
窗口中执行javac -cp aspose-words-19.1-jdk16.jar; zzZLJ.java
编译一个class新的class文件出来
打开jar包删除目录下的META-INF目录,目录中含有jar包校验文件不删除会报错
测试破解可用性
public class Test3 {
public static void main(String[] args) {
AsposeWordsUtils.convert("C:\\Users\\****\\Downloads\\15-MB-docx-file-download.docx", com.aspose.words.SaveFormat.PDF);
}
}
可以看到现在转换的文件已经没有水印了。至此破解成功!
Idea中配置
在Maven项目中的resources文件新建lib文件夹,将破解好的jar包放置其中
按下图添加lib包

Maven配置
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>19.1</version>
<scope>system</scope>
<!-- 添加第三方jar包 -->
<systemPath>${pom.basedir}/src/main/resources/lib/aspose-words-19.1-crack.jar</systemPath>
</dependency>
附言
整个流程还是比较简单的,其它产品的破解思路也基本相同。
欢迎留言点赞交流.