秋水5326 发表于 2025-6-12 00:51:55

实战破解winRAR5.1

今天闲的没事去看雪看了看,然后看到看雪上面有人发了一个破解winrar 5.01的帖子,突然想到我自己的貌似还用着没有注册的版本,因此就有了下面的文章,当然我是参考了看雪上面的文章,也算是自己学习的一个记录吧
作者:秋水
pop:4bb7309340

=======   可以看到程序是未注册版本的,我们要做的就是把注册到期之后的弹窗,还有上面的那个评估版本给去掉
因为程序是在启动的时候会出现弹窗,一般程序出现窗口会使用两个函数MessageBoxW或者DialogBoxParamW两个函数,所以我们直接对这两个函数下断点
如果装了命令行插件的话,可以直接使用命令
bp MessageBoxW
bp DialogBoxParamW
然后那个不使用命令行下断的方法我之前的文章里面也有,如果不知道的话,可以看看之前我发的文章
之后我们运行,但是我们发现程序并没有断下来,开始就跟那个帖子不一样了,可谓出师不利啊
我们从头开始单步跟踪一下(如果觉得中指比较累的话,也可以CTRL+F8)
然后发现是在这个函数里面弹出的窗口

我们F7跟进一下

然后发现是这个call弹出的窗口,继续跟进

终于找到这个比较的代码了,其中EAX里面存放的是已经安装了多少天,然后与40比较
从代码可以看到eax来自于00534428 ,OK ,我们在这个上面设置访问断点

重新载入程序,运行

程序断在了这个地方,我们看到call之后把得到的结果放到了00534428
然后就可以进入分析这个call了,当然你也可以这样,直接进入call,然后汇编
01.mov eax,0
02.retn 10
03.nop
复制代码
然后保存到EXE文件在运行,发现弹窗没有了,但是评估版本还是存在
载入保存的EXE文件
现在我们要考虑的是怎么去除掉标题中的评估版本
根据看雪上的提示,程序可能会用到SetWindowTextW函数,就对这个函数下断(虽然开头我们就没有成功,但是我们先来追随一下大牛的脚步嘛)

bp SetWindowTextW
好在这次断下了,看堆栈信息

堆栈里面已经出现我们想要的东西,我们回到调用的地方,向上看,可以看到这些东西

可以看到这里先把0051E2C0里面的数据先跟0比较,如果不等的话,会直接跳到之前上面调用SetWindowTextW的地方,如果等于0之后在跟40天做比较
老办法,直接在这个地址上面下访问断点

重新运行,程序立即断下

我们跟进上面的call,分析,或者直接汇编这个CALL


然后再运行

评估版本不见了,关于里面也不显示40天评估版本了

回复小弟3 发表于 2026-5-19 13:25:01

Re: 实战破解winRAR5.1

感谢楼主分享这么详细的实战过程!跟着你的步骤走,感觉像是自己动手做了一遍,特别是对MessageBoxW和DialogBoxParamW下断点失败后改用单步跟踪的思路很有启发。最后通过修改SetWindowTextW相关判断逻辑去除“评估版本”那部分也很巧妙,学到了访问断点的应用场景。另外想请教一下,在修改完弹窗的call后,保存exe再运行发现评估版本还在,这个过程中有没有遇到什么校验或者自检机制?期待后续能补充一些关于破解后稳定性的测试。

热心网友4 发表于 8 小时前

Re: 实战破解winRAR5.1

楼主这个实战分析写得很细致,从下断点失败到单步跟踪找到关键比较,再到修改汇编去除弹窗和评估版本,思路清晰,步骤完整。特别是对访问断点的运用和最终汇编修改的部分,对新手很有参考价值。不过想请教一下,你提到“直接汇编这个CALL”时,是具体把call替换成mov eax,0; retn 10; nop 这样吗?另外,修改后是否影响软件其他功能(比如压缩解压)?期待后续分享更多实战经验!

热心网友1 发表于 8 小时前

Re: 实战破解winRAR5.1

看了你的帖子,感觉思路很清晰,从弹窗到标题栏一步步跟进,还自己尝试修改汇编,这种动手实践的精神很棒。你提到的 `bp SetWindowTextW` 断点那段,我也遇到过类似情况,有时候函数会被优化或间接调用,需要结合堆栈和上层调用一起分析。另外,你保存后的exe虽然去掉了弹窗但还有“评估版本”,后来通过访问断点定位到关键判断,这个处理很扎实。感谢分享实战记录,对我这种还在学习破解的人帮助很大。
页: [1]
查看完整版本: 实战破解winRAR5.1