1.样本概况
1.1 应用程序信息
应用程序名称:WinRAR 6.11.0
MD5值:F2BD2E3D8B7C7C8EEFA2B28E3280EDA3
SHA1值:DC2B378B27D1AFDE576F067B2B0DE27EC377A113
简单功能介绍:解压缩文件
1.2 分析环境及工具
系统环境:win7 32位
工具:Ollydbg、010Editor、Exeinfo、Spy++
1.3 分析目标
去掉弹窗广告
2.具体分析过程
2.1 分析过程
2.1.1 程序基本信息
使用Exeinfo查看程序的信息,发现其连接器是14.3,对应的应该是VS2022:
再看其导入表,判断其应该是一个SDK程序:
另外,为了后面分析方便,使用010Editor修改其基址为固定的
2.1.2 使用OD进行分析
先运行程序,测试程序的运行步骤,发现其弹出主页面后,会马上弹出一个广告窗口:
然后将程序拖入OD开始进行分析,因为会弹出窗口,所以Ctrl+G搜索创建窗口的函数:CreateWindowExA/W。然后都下断点,让程序跑起来:
运行之后发现,在CreateWindowExW处一直在中断,然后我们看栈区域:
发现其Class一直在变,我们猜测是在创建程序主页面的各个窗口,我们使用Spy++查看主程序的各个窗口类名,发现能够对的上,说明猜测正确。
因此,我们要想去掉弹窗广告,就需要找到弹出广告窗口的位置,可以使用Spy++,先查看其窗口类名:
发现其窗口类名是:RarReminder, 然后继续运行程序,同时观察栈区对应的窗口类名,就能找到关键位置:
当栈区的窗口类名也是RarReminder时,说明将要创建该窗口,我们看K窗口中的栈回溯:
找到创建弹窗的函数后,我们发现调用函数的上面有一个网站,猜测其可能是广告的网址,经过验证确定其实弹出广告的网址。又在下面发现push的窗口类名的参数是:RarReminder,单步调试之后,确定0x004C4E4E调用的函数就是弹出广告的函数。要想去掉广告 ,我们可以跳过该函数调用,跳到该函数的下一行:
修改完之后,右键保存修改,运行程序,发现果然没有了弹窗,目标达成。
在找弹出窗口的函数时,我们知道窗口类名是RarReminder后,也可以尝试用插件搜索字符串,这里发现也能够找到关键地方:
3.总结
在该程序分析过程中,主要是需要找到弹出广告的函数,找到之后跳过就行了。下完窗口窗口的断点后,需要对栈区进行仔细观察。