Aspose.CAD破解去PDF水印

查看 127|回复 10
作者:Pnmker   
Aspose.CAD是可以将AutoCAD的DWG图纸文件转换成各种格式文件,如JPG、PNG、TIFF、PDF等,功能十分强大的,但转换出来的PDF有水印。
此文的目的就是在Aspose.CAD 19.9.0版本上去掉改水印


1.png (84.44 KB, 下载次数: 7)
下载附件
2020-2-26 21:02 上传


首先想到的就是上网找License,竟然在坛子里找到了,在如下地址里https://www.52pojie.cn/thread-399721-1-1.html写了一段程序来验证


2.png (52.21 KB, 下载次数: 1)
下载附件
2020-2-26 21:04 上传

结果运行的时候报如下错误
:


3.png (39.99 KB, 下载次数: 0)
下载附件
2020-2-26 21:04 上传

从提示上看,是这个License过期了。也找不到最新版的License,那么下面只能考虑去破解去水印了。首先de4dot查壳脱壳:


4.png (32.66 KB, 下载次数: 0)
下载附件
2020-2-26 21:05 上传


脱壳过程还是挺顺利的,但不幸的是脱壳后的程序运行会报错。按照以往使用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.CAD  v1.0.0版本的保护很弱。
这给最终破解去水印带来了极大的希望。 遵循一般的步骤,首先de4dot对Aspose.CAD  v1.0.0进行脱壳,(此处省略脱壳过程),
然后在Reflector里查看关于License类中SetLicense方法的处理


5.png (43.55 KB, 下载次数: 1)
下载附件
2020-2-26 21:06 上传


从V1.0.0版本的License Key验证过程分析推测,如果V19.9.0版本的验证过程也应该大抵如此,
因此如果能够在V19.9.0版本改写 num=class2.method_1(stream)的返回值令其始终返回0,水印就能够完整去掉。
然而,用Reflector查看V19.9.0版本可发现代码被保护了起来


6.png (15.07 KB, 下载次数: 1)
下载附件
2020-2-26 21:07 上传


再一次陷入绝境。回头反复看JemmyloveJenny大神的文章” Eazfuscator.NET虚拟机壳还原方法 ”。
学会了实用dnSpy,这个工具超级好用,它可以进行调试。又是一阵好折腾,无效的折腾!
反复运用JemmyloveJenny的逆向方法,但是实用无法跟到类似num=class2.method_1(stream)的方法调用。
又再次卡壳。 进行不下去的时候,我又再次回到了V1.0.0,深入到num=class2.method_1(stream)内部去分析低版本中的License key验证过程。
Reflector点进去,嗯哼,果真是眼前一亮!


7.png (48.27 KB, 下载次数: 1)
下载附件
2020-2-26 21:08 上传

原来License Key数据流是一个XML文档,果断写了一个程序把文章前面的那个key输出为XML如下:


8.png (60.66 KB, 下载次数: 1)
下载附件
2020-2-26 21:08 上传

将时间改大之后,运行程序,提示如下:


9.png (32.34 KB, 下载次数: 0)
下载附件
2020-2-26 21:09 上传

大概意思是License的签名是无效的。虽然还是无法验证通过,但总算有进展了。
再回头分析XML文档可以推测,这段XML是不能随意改动的,如果改动之后程序会校验失败。


10.png (48.68 KB, 下载次数: 0)
下载附件
2020-2-26 21:09 上传


经过前面的尝试发觉,低版本的代码对分析问题帮助很大。于是,再回到低版本分析校验过程。


11.png (59.13 KB, 下载次数: 1)
下载附件
2020-2-26 21:10 上传



12.png (54.41 KB, 下载次数: 0)
下载附件
2020-2-26 21:11 上传

从上述分析可以得出smethod_3方法中对Class1687类的调用会是一个关键,需要进一步分析smethod_3方法,留意其中有个Class1687的调用。


13.png (65.2 KB, 下载次数: 0)
下载附件
2020-2-26 21:11 上传

层层跟踪下去,果然发现有对Class1687.smetod_3(1)的调用,可以推测非0值表示校验失败,0表示签名校验成功。
不过这个smethod_0的处理太过复杂,一时半会也不一定能看得懂。但对于破解,这显然是没必要的,
既然smethod_0会更改Class1687内的一个状态值,那么我们只需在smethod_0调用完之后再加多一行Class1687.smetod_3(0)的调用就可以通过签名检验了。


14.png (14.87 KB, 下载次数: 1)
下载附件
2020-2-26 21:12 上传


但是以上是对低版本的代码分析,要验证这个分析是否有效还需要在V19.9.0版本上进行验证。dnSpy虽然能够调试,但是面对如此的字符,我也是内牛满面!!!


15.png (123.5 KB, 下载次数: 2)
下载附件
2020-2-26 21:12 上传


再次陷入困局。
皇天不负有心人,运气总是青睐有准备的人。接下来的过程没有任何一点技术含量,但确确实实抓到了点子上。
就在一筹莫展,无聊地在dnSpy中一个一个点击类展开看看是否会有所发现时,被我找到了:


16.png (142.55 KB, 下载次数: 0)
下载附件
2020-2-26 21:13 上传

点击上图类名” \u000E\u2001\u2008\u2005”,找到以下两个函数,是否有种似曾相识的感觉哈!
这两个函数就对应低版本中method_0和smehtod_0两个函数,见上文的截图!
赶紧加入
[color=]\u0005\u2002\u2008\u2005
[color=].
[color=]\u0002
(
[color=]0
);
进行签名检验状态值的修改。


17.png (28.61 KB, 下载次数: 1)
下载附件
2020-2-26 21:14 上传

修改完成后,再次运行转换PDF的程序后,查看PDF结果:


18.png (38.3 KB, 下载次数: 2)
下载附件
2020-2-26 21:14 上传


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

Aspose.CAD破解PDF水印.zip
(627.19 KB, 下载次数: 1006)
2020-2-26 21:16 上传
点击文件名下载附件
Aspose.CAD破解PDF水印
下载积分: 吾爱币 -1 CB

宋体, 下载次数

nhf347   

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


夜泉 发表于 2020-2-27 00:44
楼主的这种破解方式纯属靠运气,

某种程度上不能否认。运气也是靠知识的底蕴来支撑的,运气的性质类似灵感。一次运气的成功会开启通往更大成功的道路。我试过了目前我能尝试到的所有方法,在这个资料收集的过程中也收获了许多,也收集到了许多可以继续深入探索的点,比如说深入研究eaz的代码虚拟化机制。这些不是单靠"运气"两个字就能概况的。
YinZi   

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

看着曲折,实属不易啊                          
woaipujie   

学习楼主的思路!
lovelyhsy   

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

跟楼主学习!
qiaoyaoyao   

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

多谢分享,试试怎么样。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部