一丶前言
最近在重构公司的硬件服务后端代码,准备用net core来开发,后来发现打印组件基本都是.net framework版本的,支持net core的一个都没有啊。。。找了半天找到一个跨平台库Spire.pdf,但是他是收费的,而且价格挺高的。
https://www.e-iceblue.com/ 这是他们的官网
还是美刀价格太高了买不起,要是几百块我就买了。。。
如果没有付费获取许可证的话,它会在你打印或者转换pdf,word里页眉上加水印。这不能用在生产环境,会被喷死的。
于是我只能破解了。
二丶开始破解
准备工具:
1.de4dot:这是个脱壳,反混淆工具
2.dnspy:可以反编译net平台所有的程序,C#,vb.net,F#。
准备环境:
vs2019,ASP.Net Core,Net Core 2.2 SDK
Nuget包下载最新版本的Spire.Doc,包里包含了Spire.Pdf
开始分析代码:
1.建个控制台项目,编译为x86 方便附加进程跟踪调试
2.启动控制台项目,然后Dnspy附加控制台进程。
根据功能代码找到这个命名空间下的方法,单步调试跟踪。
跟到这里发现一个byte[]把他的代码copy出来跑一边看看结果
有很多这种坑,长得都一样,函数名字都是空的,返回值也是byte[]。
继续跟下去,看看他是哪里填充的。
这里是他的填充水印的代码。 直接把array = this. () 给nop掉,下面就是空的了,改下我们看看效果。
这里我们不能使用编辑方法,编辑方法要重新编译,编译需要环境,显然这里不行,所以我们只能编辑IL指令集,直接修改文件,就跟用IDA pro汇编改c++的exe差不多。
改完之后试试效果。
水印没了,完美。
三丶结语
Spire.PDF 跟这个类似,也是作者把水印的字符串放到一个byte[]里,在print的某个地方偷偷加进去的。想找到在哪里只能耐心调试了。。实际调试的时候 坑比较多。
Spire 系列的组件我放群共享里了,需要的同学,直接加群去群里下载就行了。
四丶Github Demo,演示地址
演示地址:http://gaobili.cn:8600/swagger/index.html
加群一起学习共同进步。群号:963718093