此文的目的就是在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