找到一个很简单方法的去除winrar广告:创建广告窗口时,将样式设置为隐藏即可。下面是分析过程,分享给大家。
这里研究的是自己用的 5.80版本(64位)WinRAR
既然有广告弹窗,猜测可能调用了CreateWindow,那就对这个API下断点。
1,先用spy++查看广告窗口,标题是“WinRAR”,窗口类名是"RarReminder"。
2,用x64dbg打开winrar.exe,在调试器符号窗口的"winrar.exe"模块查找创建窗口的API,找到 CreateWindowExW,下断点,运行程序。这个API会断下很多次,要等到窗口类名等于上一步中查找到的"RarReminder"时,才需要停下。最终,找到创建广告窗口的代码如下:
3,CreateWindowExW 的第四个参数dwStyle用来指定窗口样式,对应上图中的 R9 寄存器=0x16CB0000。查看窗口样式属性,发现WS_VISIBLE表示显示窗口,值是0x10000000,正好对应dwStyle的高4位。
然后测试修改 R9 寄存器值为0x6CB0000,运行程序,正常启动,而且没有了广告窗口。
4,给winrar.exe打补丁
从第2步的代码中,可以看到 r9d 寄存器中的值来源于esi,再往上面跟踪代码,看到esi的值来源如下:
从这里可以看出,窗口样式是写死在代码中的,所以只要修改0x13FE42391(虚拟地址)对应的winrar.exe文件位置的代码,把0000C816改成0000C806就可以了。
在x64dbg中查看winrar.exe的模块基址是0x13F560000,
所以打补丁位置相对虚拟地址 RVA = 0x13FE42391 - 0x13F560000 = 0xA2391。
对应PE的文件偏移 FA = 0xA1791,用CFF查看代码,修改FA位置代码“00 00 C8 16”为“00 00 C8 06”,保存文件,再次运行winrar,广告窗口就不见了。
|