0x00 前言
WinRAR作为一款老牌压缩软件,一直深受笔者喜爱。但是每次使用时的广告弹窗真的烦人。于是有了这次魔改。魔改版本——5.71.0(64位):

0x01 去广告弹窗
起初通过CreateWindowExW()
函数设断,但调试一番之后发现中断次数过多,无法定位到具体调用位置。之后尝试利用WM_DESTROY
消息设断,仍无果。于是突发奇想,利用类名字符串设断,具体过程见下。
x64dbg打开WinRAR.exe
,不作任何操作,F9运行程序,直至出现下图:

x64dbg切换到句柄窗口,F5刷新,找到"导航已取消"(因为笔者在调试过程中处于断网状态,故未加载出页面)窗口类名如下:

这时直接搜索类名字符串是搜索不出来的,因为不在WinRAR.exe
程序领空内,故右击该行——>>消息断点,设WM_DESTROY
消息断点:

设完断点后关闭广告窗口,来到WinRAR.exe
程序领空:

搜索类名字符串:

双击第一行的地址,转到反汇编窗口,可以看到调用CreateWindowExW()
函数处:

F2在此处设断,之后在断点窗口禁用消息断点:

Ctrl+F2重新开始,F9运行程序,停在断点处:

空格,修改该指令为nop
:

F9继续运行下去,结果发现广告弹窗的确消失了,但出现一提示购买WinRAR许可的对话框。
0x02 去提示购买对话框
Ctrl+F2重新开始,Ctrl+G:

在DialogBoxParamW()
函数处设断:

F9运行程序,当程序停在上节所设断点处时,修改call
调用为nop
指令,继续向下执行,来到DialogBoxParamW()
函数:

查看栈窗口,可以得到返回地址,于此处Enter,来到主程序领空:

修改call
调用为nop
指令,继续向下执行,成功去除提示购买对话框:

Ctrl+P——>>修补文件,保存所有的修改即可:

0x03 32位WinRAR
笔者并没有逆32位WinRAR,看到网上这篇文章较详细,贴到此处。
[培训]科锐逆向工程师培训第53期2025年7月8日开班!