Aspose.CAD破解去PDF水印
本帖最后由 Pnmker 于 2020-2-26 21:22 编辑Aspose.CAD是可以将AutoCAD的DWG图纸文件转换成各种格式文件,如JPG、PNG、TIFF、PDF等,功能十分强大的,但转换出来的PDF有水印。
此文的目的就是在Aspose.CAD 19.9.0版本上去掉改水印
首先想到的就是上网找License,竟然在坛子里找到了,在如下地址里https://www.52pojie.cn/thread-399721-1-1.html写了一段程序来验证
结果运行的时候报如下错误
:
从提示上看,是这个License过期了。也找不到最新版的License,那么下面只能考虑去破解去水印了。首先de4dot查壳脱壳:
脱壳过程还是挺顺利的,但不幸的是脱壳后的程序运行会报错。按照以往使用De4Dot的经验,感觉不应该呐。
于是上网搜索了下Eazfuscator.NET这个混淆工具的用法,原来Eazfuscator内部还使用了虚拟机的模式对代码进行了保护,
对于其一般的逆向过程可以参照坛子里的这篇文章,但是这个方法对于去水印这个比较庞大的工程量还是不适用的
:https://www.52pojie.cn/thread-958680-1-1.html
后面用是从字符串的加密保护入手,虽然有一点小的进展,但是水印最终还是无法完全去掉。到此去水印的工作因无法下手搁置了将近一个月。
就这么突然一天上网搜索Aspose.CAD的破解资料时,在nuget上发现了Aspose.CAD的许多版本。
https://www.nuget.org/packages/Aspose.CAD
抱着试试看的态度,把Aspose.CAD的每一个版本都下载了下来对比了下,最终发现Aspose.CADv1.0.0版本的保护很弱。
这给最终破解去水印带来了极大的希望。 遵循一般的步骤,首先de4dot对Aspose.CADv1.0.0进行脱壳,(此处省略脱壳过程),
然后在Reflector里查看关于License类中SetLicense方法的处理
从V1.0.0版本的License Key验证过程分析推测,如果V19.9.0版本的验证过程也应该大抵如此,
因此如果能够在V19.9.0版本改写 num=class2.method_1(stream)的返回值令其始终返回0,水印就能够完整去掉。
然而,用Reflector查看V19.9.0版本可发现代码被保护了起来
再一次陷入绝境。回头反复看JemmyloveJenny大神的文章” Eazfuscator.NET虚拟机壳还原方法 ”。
学会了实用dnSpy,这个工具超级好用,它可以进行调试。又是一阵好折腾,无效的折腾!
反复运用JemmyloveJenny的逆向方法,但是实用无法跟到类似num=class2.method_1(stream)的方法调用。
又再次卡壳。 进行不下去的时候,我又再次回到了V1.0.0,深入到num=class2.method_1(stream)内部去分析低版本中的License key验证过程。
Reflector点进去,嗯哼,果真是眼前一亮!
原来License Key数据流是一个XML文档,果断写了一个程序把文章前面的那个key输出为XML如下:
将时间改大之后,运行程序,提示如下:
大概意思是License的签名是无效的。虽然还是无法验证通过,但总算有进展了。
再回头分析XML文档可以推测,这段XML是不能随意改动的,如果改动之后程序会校验失败。
经过前面的尝试发觉,低版本的代码对分析问题帮助很大。于是,再回到低版本分析校验过程。
从上述分析可以得出smethod_3方法中对Class1687类的调用会是一个关键,需要进一步分析smethod_3方法,留意其中有个Class1687的调用。
层层跟踪下去,果然发现有对Class1687.smetod_3(1)的调用,可以推测非0值表示校验失败,0表示签名校验成功。
不过这个smethod_0的处理太过复杂,一时半会也不一定能看得懂。但对于破解,这显然是没必要的,
既然smethod_0会更改Class1687内的一个状态值,那么我们只需在smethod_0调用完之后再加多一行Class1687.smetod_3(0)的调用就可以通过签名检验了。
但是以上是对低版本的代码分析,要验证这个分析是否有效还需要在V19.9.0版本上进行验证。dnSpy虽然能够调试,但是面对如此的字符,我也是内牛满面!!!
再次陷入困局。
皇天不负有心人,运气总是青睐有准备的人。接下来的过程没有任何一点技术含量,但确确实实抓到了点子上。
就在一筹莫展,无聊地在dnSpy中一个一个点击类展开看看是否会有所发现时,被我找到了:
点击上图类名” \u000E\u2001\u2008\u2005”,找到以下两个函数,是否有种似曾相识的感觉哈!
这两个函数就对应低版本中method_0和smehtod_0两个函数,见上文的截图!
赶紧加入\u0005\u2002\u2008\u2005.\u0002(0);进行签名检验状态值的修改。
修改完成后,再次运行转换PDF的程序后,查看PDF结果:
水印完美去掉!到此破解过程终于完结。如果说技巧的话,我感觉并没有多少。
最重要一点就是对于低版本程序的分析是很关键的。这或许会涉及到某些社会学的知识吧。
通过此破解我对此更加深信。
dplxin 发表于 2020-2-27 09:04
分析的不错啊, 我以前是直接在 免费版上 找写水印的地方,因为他之前肯定会先判断是 正版,试用版, ...
谢谢你了。正版key可以不用了,key的XML已经明文出来了,想要怎么用都可以改XML就行了。程序方面的改动只是因为XML是有签名的, 我没签名密钥,所以把签名验证的地方改掉就OK了。 楼主的方法能否破解aspose.slides最新20.10版本,按照您分享的方法,找不到相应的位置。另外de4dot脱壳失败,提示Detected Unknown Obfuscator CAD软件自身就带有转换功能噢!但是你这个应该也还可以,试试看怎么样。 看着曲折,实属不易啊 学习楼主的思路! 哪个版本cad开始带去水印?我机子性能差,目前在用的是13版的 跟楼主学习! 楼主锲而不舍的精神令人感动 多谢分享,试试怎么样。 感谢分享思路 的了。。