Windows逆向学习笔记——WinRAR隐藏广告窗口
找到一个很简单方法的去除winrar广告:创建广告窗口时,将样式设置为隐藏即可。下面是分析过程,分享给大家。这里研究的是自己用的5.80版本(64位)WinRAR
既然有广告弹窗,猜测可能调用了**CreateWindow**,那就对这个API下断点。
1,先用spy++查看广告窗口,标题是“WinRAR”,窗口类名是"RarReminder"。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200727214257510.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODUyNjE4MA==,size_16,color_FFFFFF,t_70)
2,用x64dbg打开winrar.exe,在调试器符号窗口的"winrar.exe"模块查找创建窗口的API,找到 **CreateWindowExW**,下断点,运行程序。这个API会断下很多次,要等到窗口类名等于上一步中查找到的"RarReminder"时,才需要停下。最终,找到创建广告窗口的代码如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200727215325932.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zODUyNjE4MA==,size_16,color_FFFFFF,t_70)
3,**CreateWindowExW** 的第四个参数dwStyle用来指定窗口样式,对应上图中的 R9 寄存器=0x16CB0000。查看窗口样式属性,发现WS_VISIBLE表示显示窗口,值是0x10000000,正好对应dwStyle的高4位。
然后测试修改 R9 寄存器值为0x6CB0000,运行程序,正常启动,而且没有了广告窗口。
4,给winrar.exe打补丁
从第2步的代码中,可以看到 r9d 寄存器中的值来源于esi,再往上面跟踪代码,看到esi的值来源如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200727223503340.png)
从这里可以看出,窗口样式是写死在代码中的,所以只要修改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,广告窗口就不见了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200727225043531.png) bodyy 发表于 2020-8-6 14:43
关了WINRAR也不会一起关闭吗?
應該會的,我也不知道。沒試過,你可以試一試不關廣告窗去關閉主窗口。我猜應該會一起關閉,因為廣告窗口創建函數里好像有一個參數時父窗口的,是主窗口,我也不懂,就是感覺像。 列明 发表于 2020-8-6 14:56
應該會的,我也不知道。沒試過,你可以試一試不關廣告窗去關閉主窗口。我猜應該會一起關閉,因為廣告窗口 ...
是的没错,会一起关闭。正常用软件时,关闭程序广告窗口也会一起关闭。这里只是隐藏广告窗口没让它显示,其它没有改动,所以其它行为应该是保持不变的。 很好学习了 感谢楼主 ! 厉害了楼主 這樣好像廣告窗口還是存在的,只是看不見了,也關不掉了。 这个有点厉害的,学习了一波{:1_893:} 本帖最后由 wzxiaodu 于 2020-8-6 13:38 编辑
学习了!!最近正准备学逆向! 根据教程已经修改OK,我的版本是5.21,只是寄存品变了一个 感谢分享! 这个去广告的不错