本贴仅用于学习交流,禁止用于商业用途
PDFElement 是我非常喜欢的pdf编辑器,界面简洁好看,功能很强大。PDFElement7 专业版我用了功能还是很赞的,但是不太稳定,处理的pdf文件过大的时候很容易报错甚至于崩溃,以前用过他家iPad版的应用,也是各种不稳定就上架。。。不过这个就不管了,本贴只是简单说一下怎么patch。其实已经有人过破解过6了,7好像也有了,但是没人发帖。我自己新人小白,纯属练手。
这个软件使用 .NET写的,我自己之前也没接触过,还是看了一些简单的MSIL和C#才敢开始试着破解的。
工具:dnSpy
之前年少不更事,用x64dbg逆向,搞得我怀疑人生,最后老老实实上了dnSpy的船。本贴就简简单单说几句,没有深入分析,稍微水一水。最先用exeinfope 看到使用.NET编写,用dnSpy打开后也没发现有对程序做任何混淆等保护措施,所以dnSpy反编译出来的代码很清晰和易读。
1,登录框。PDFElement7是要先登录才能使用,我本来想去掉登录环节,但是试了一天多(原谅小白我能力差),搞得程序直接崩溃,一想到登录一下也没啥,最后就放弃要去掉登录环节的执念了。所以正常用微信或账号登录算了,登录后界面如下,在账户旁边会有购买按钮。大佬有精力要跳过登录应该也不难。
批注 2019-12-10 163446.png
2,注册信息。登陆账户后,账户状态包含注册信息,主要是trial,standard,professional,也分为registered和unregistered。试用用户使用高级功能,比如转换为word,或者保存OCR识别后的PDF时,会弹出购买窗口:
批注 2019-12-10 163658.png
批注 2019-12-10 175915_LI.jpg
试用的话还会有页数限制和水印等问题。所以破解的要点就是要解决这个问题。
作为小白的我,要找到关键的类和函数还是很麻烦的,我自己并没有什么捷径和技巧,只是重复了很多遍,进入函数寻找关键信息,最先找到的是ProductAuthMgr类,看名字就大概知道其是管理授权信息的。他的初始化函数为:
批注 2019-12-10 181156.png
其中g()函数比较关键,进入其中会找到如下两个句子:
ProductAuthMgr.ProductAuth = new WULRegProductAuth(false)
ProductAuthMgr.ProductAuth = new WSIDProductAuth(ProductAuthMgr.e())
可见真正管理授权信息保存在ProductAuthMgr类中的ProductAuth成员变量里,而且其包含WULRegProductAuth和 WSIDProductAuth两种不同授权类型或者途径,这两个类都位于ProductAuthor.dll中。进入其中,找到这两个类包含了我们要找的用户信息:
批注 2019-12-10 182310.png
批注 2019-12-10 182727.png
显然,get_RegStatus就是突破口,其返回不同的register的状态,其中Registered状态对应于0x00000002,右键打开il指令编辑框,将所有ret前的指令改为idc.i4.2,就可保证每次查询RegStatus得到的都是Registered了。注意,
WULRegProductAuth和 WSIDProductAuth两个类中的get_RegStatus都要按照上面的改。
更改后,步骤1中的购买按钮不见了,高级功能(转换为doc,OCR后保存PDF)能够使用,但是使用前还是会弹出步骤2前两张截图所示的购买窗口。意即,功能其实已经破解,但是使用前还是会弹出窗口骚扰一下。
3,跳过购买窗。购买窗口是在点击 转换为doc 按钮时弹出的。这个按钮可以在dnSpy的局部变量窗口中展开this中找到,this指向的是MainForm,其中包含了窗体上的各种按钮,根据按钮的名称可以找到其类型为WUL.CTRLs.Gbutton派生的RibbonButton,进而找到其onClick函数,用笨办法不断的下断点和进入函数结合,终于找到在onClick函数中会调用PEStudio.PDFElement.Base.Authorisation.trails中TrailFunctionWindows成员变量中所定义的的a()函数,他们都位于PEStudio.PDFElement.Base.dll文件中。a()函数包含如下信息:
批注 2019-12-10 185038.png
ShowAuthForm显然就是展示购买窗口的入口。分析a()流程如下图,switch下会经过到case 5,随后一条if语句,要么到case 3后立马return true,要么进入另一条途径最终调用ShowAuthForm,显然我们要选择前者。右键进入IL指令编辑界面,将bne.un改为beq以改变if的跳转,从而绕过了显示购买窗的环节。
批注 2019-12-10 185401.png
至此,破解基本完成,将修改后的PEStudio.PDFElement.Base.dll和ProductAuthor.dll替换掉原程序中的文件即可,高级功能都能不受限制的自由使用。不过还有很多可以小修小补的地方,但是总体上到这里也就够用了。
这里不提供程序下载,仅分享经历供学习讨论,欢迎自己尝试。上述过程可能由于记忆而有所偏差,可自行修正。
.NET 逆向刚接触这一点,可以学的还很多。。。。
后续更新:
1,强制登录框
【【【经@wwb66668 补充,在PEStudio.PDFElement.UI.dll中找到ForceLoginForChinaBrand函数是生成登陆框的入口,使其直接return即可直接跳过强制登陆账户后才能使用的限制。感谢!!!】】】
2,登录按钮
可以免登录使用且去掉购买按钮后,主界面上还有留着一个用户登录的按钮,看着有些碍眼。这个按钮名字叫 rbReg,是通过在MainFrame的类成员中找到的,通过搜索rbReg可以找到其创建位置位于PEStudio.PDFElement.UI.Controls.Ribbon.Pages.BaseRibbonPage的InitializeComponent方法,将this.AutoSize改为false,将minimumsize和size都改为(0,0),则可以完全隐藏掉这个用户登录按钮。
批注 2019-12-11 152347.png
最终效果如图,一切专业版功能正常,且去掉了UI上多余购买和登录的按钮,无需登录即可正常使用。
批注 2019-12-11 153303.png
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
更新日志
2024年11月01日
2024年11月01日
- 群星《狐妖小红娘月红篇 电视剧原声带》[320K/MP3][233.61MB]
- 英雄联盟s14四强淘汰赛规则是什么 全球总决赛四强淘汰赛规则详解
- 英雄联盟s14四强赛怎么分组 S14全球总决赛四强赛分组规则详解
- 英雄联盟s14四强赛抽签规则是什么 S14全球总决赛四强抽签规则详解
- ButterQuartet-ScintillaEarlyItalianStringQuartets(DeLuxe)(2024)[24Bit-WAV]
- 草原最美情歌《迷醉女中音》2CD/DTS-ES[WAV]
- 爵士女伶何芸妮《靡靡之音》(香港版)[WAVCUE]
- 游戏中辱骂他人同样侵犯名誉权 一玩家被判道歉
- 老游戏远程共享申请失败 美国版权局拒绝豁免请愿
- 通过本地化支付解决方案,解锁150亿美元拉美和非洲游戏市场
- 群星《狐妖小红娘月红篇 电视剧原声带》[FLAC/分轨][574.68MB]
- 群星《红色冲浪板 电影配乐专辑》[320K/MP3][106.63MB]
- 罗艺恒《What Could've Been》[320K/MP3][50.62MB]
- 于台烟.1989-人间山水【银河唱片】【WAV+CUE】
- 杨克强.1992-特制的面具【恩华声视】【WAV+CUE】