一直在使用WinRAR解压文件,感觉非常的好用,可是现在WinRAR添加了广告,每次打开压缩包都会弹出广告,有时候甚至在解压的时候弹出来,而每次弹出广告都会卡顿一下,忍了很长时间今天实在是受够了,准备尝试去广告,故把过程记录下来,这里我使用的是最新版 5.71.
免责声明:该教程仅用于技术交流,并无任何商业目的,您不得将下述内容用于商业或者非法用途,否则后果自负,如果您喜欢该程序,请支持正版软件,购买注册 ,得到更好的正版服务,如有侵权请邮件联系作者!
通过API函数去广告 (x32位)
1.首先我的思路如下,程序在运行后因为会弹出窗体,而广告从某种程度上说也是一种窗体,所以猜测是否会调用 CreateWindowEx这个函数来创建窗体呢,经过使用IDA验证,果然调用了这个函数。
2.接着使用OD载入WinRAR程序,下一个 CreateWindowExW 函数断点。
3.接着我们直接 【F9】运行程序,然后程序会断下,观察第一次断下的结果,其堆栈如下,我们需要注意 WindowName这一栏,很明显这个不是。
4.继续按下【F9】运行程序,当按下5-6次F9后,堆栈中显示出了WinRAR相关的字眼,这里需要注意,马上就是主窗体创建代码了。
5.此时我们在堆栈窗口,右击选择反汇编窗口中跟随,并在【00D516D1】的位置下断点并去除多余断点,然后重新载入程序。
6.重新载入程序以后运行程序,并单步F8慢慢向下走。
7.当走到【00D51AB9】的位置的时候,程序会卡顿一下,然后接着就会弹出广告,由此我们可以肯定这个CALL就是广告弹出的关键CALL
8.此时我们记下这个CALL的地址【call 00D153A0】,搜索所有常量,并分别将这几处CALL调用替换成NOP指令。
9.保存文件,保存所有修改,然后运行即可完美去广告。
通过窗口句柄去广告 (x64)
1.打开x64dbg,直接F9让程序跑起来,并等待程序出现弹窗,然后切换到句柄,在窗口中选择弹窗窗体类,并记下类名称 RarReminder。
2.接着在反汇编窗口中搜索字符串,并查找 RarReminder 类名。
3.找到类名后,在所有的类名上设置断点。
4.重新加载程序,并F9直接运行,此处需要运行两次,会发现是创建窗体的过程,我们这里需要修改一处地址,使创建窗体失效。
5.此处将原有指令修改为lea rdx, ds:[0x00007FF70A5FFFFF]
这样CreateWindowEx函数就会失效,从而不去创建弹窗。
6.保存文件,并运行看看效果,发现已经完美屏蔽广告了,嘎嘎!
去广告后可以压缩一份,以后直接解压就能使用。