c#应用破解实战之PDFelement
前言
在知乎上发现一款不错的 pdf
处理软件 PDFelement
,功能比较强大,格式转换,pdf编辑,ocr,在网上搜了一遍没找到能用的破解版,于是自己动手。
正文
最开始我是拿的 6.0
版本破解的,破解完后发现,这个版本的 bug
特别严重,不能 编辑 pdf
(也许是我改坏了, 6.4
就没问题), 于是后来又下了最新的 6.4
. 老版的还有混淆,新版本连混淆都没有。为了总结更多的经验,先写 6.0
版本的破解,然后写 6.4
的破解。
工具
- dnSpy .net 应用反编译,调试工具
- de4dot .net 去混淆
6.0版本破解
首先安装好,对于应用破解可以搜关键字符串,像这种比较大的程序,一般会有单独一个目录放置语言文件便于多语言的支持。
不过该程序的资源文件貌似不是文本格式的,故我放弃了这条路。
接着我去分析了 PDFelement.exe
,想看看能不能根据函数名找到关键的函数。
发现它里面没有啥东西,估计关键逻辑都在 dll
里面,于是决定调试他,然后在调试的时候去 dll
里面找找。
运行程序,然后用 dnspy 附件上去
然后在 模块 窗口查看加载的 dll
,可以在 调试
- 窗口
-模块
调出该窗口
最后在 PEStudio.PDFElement.Base.dll
里面找到了有意思的函数。
看这些函数名,估计这里是在注册时,用来校验的函数了。在这里下个断点
然后我们去注册,触发这个逻辑然后看看她是在哪里被调用的
断下来后查看调用堆栈信息
转到调用者这里,发现各种跳转,看起来是做了混淆,于是使用 de4dot
去混淆,如果不去混淆的话修改代码保存会出很多的错。
|
|
对于上面的错,把出错的位置删掉即可(在这里折腾了好久,才发现直接删掉即可)。
为了方便调试分析,把去掉混淆的 dll
替换掉安装目录里面的。
根据参数和其他的特征定位到我们刚刚找到的关键函数
设下断点,断下来后往上回溯
我们需要的逻辑就是
那么把其他的去掉,如果是前面那个逻辑正确的话,会提示是 5.x
版本的验证码。
那么就把那个删掉
this.method_7
最终调用的也是 WSProductReg.Verify
,这个函数最终调用了WSProductReg.Class12.smethod_0
WSProductReg.Class12.smethod_0
才是真正的 校验函数,于是修改掉他的返回值。
|
|
为了保持修改,需要先关掉程序,然后使用 dnspy
的保存功能即可。
重启程序,随便输入 序列号 和 邮箱
但是会提示
估计是他有在线校验,断网使用就没问题了。最后使用了 idea
破解一样的办法,抓到 验证包, 修改 host
是他无法验证。
然后把这个 0.0.0.0 platform.wondershare.com
放到 host
文件里面。
然后应该就没有问题了。
6.4最新版破解
最新版连混淆都没有,逻辑更加的清晰。
调试找到了 6.0
中的相对应的 校验函数 WSProductReg.RSAKeyCodec.VerifySN
修改掉
同时还找到了 在线校验的函数ProductClient.RegCheck
修改
|
|
即可。
本站文章均原创, 转载注明来源
本文链接:http://blog.hac425.top/2018/02/03/crack_PDFelement.html