Pnmker 发表于 2020-2-26 21:24

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结果:

水印完美去掉!到此破解过程终于完结。如果说技巧的话,我感觉并没有多少。
最重要一点就是对于低版本程序的分析是很关键的。这或许会涉及到某些社会学的知识吧。
通过此破解我对此更加深信。

Pnmker 发表于 2020-2-27 10:00

dplxin 发表于 2020-2-27 09:04
分析的不错啊, 我以前是直接在 免费版上 找写水印的地方,因为他之前肯定会先判断是 正版,试用版,   ...

谢谢你了。正版key可以不用了,key的XML已经明文出来了,想要怎么用都可以改XML就行了。程序方面的改动只是因为XML是有签名的, 我没签名密钥,所以把签名验证的地方改掉就OK了。

nhf347 发表于 2020-11-11 02:30

楼主的方法能否破解aspose.slides最新20.10版本,按照您分享的方法,找不到相应的位置。另外de4dot脱壳失败,提示Detected Unknown Obfuscator

YinZi 发表于 2020-2-26 21:27

CAD软件自身就带有转换功能噢!但是你这个应该也还可以,试试看怎么样。

bachelor66 发表于 2020-2-26 21:37

看着曲折,实属不易啊                        

woaipujie 发表于 2020-2-26 21:53

学习楼主的思路!

lovelyhsy 发表于 2020-2-26 21:53

jori 发表于 2020-2-26 21:59

哪个版本cad开始带去水印?我机子性能差,目前在用的是13版的

qiaoyaoyao 发表于 2020-2-26 22:13

跟楼主学习!

bjxiaoyao 发表于 2020-2-26 22:25

楼主锲而不舍的精神令人感动

Norton 发表于 2020-2-26 22:34

多谢分享,试试怎么样。

li809 发表于 2020-2-26 22:36

感谢分享思路 的了。。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: Aspose.CAD破解去PDF水印