在虚拟机里作为解压软件使用时,它的弹窗广告很烦人,我们来做个小实验,把它关掉吧!
从官网下载x86的安装包:
下载完成后在win7 x86虚拟机中安装。
如果你随意双击一个rar文件,就会弹出广告。
如何破解它?
找到安装目录,用OD调试器打开.exe,开始调试之旅。
我们知道创建新窗口的函数是 或 ,因此我们按 Ctrl + G 分别在它们上设置断点。
然后按F9进入调试。
断点命中后,右下角会显示详细的参数信息。
我们关心的是一个,因此忽略不相关的,然后按 F9 继续。
第一次出现的相关调用是:
这次主窗口已经创建,但是由于所有资源还没有准备好,所以窗口还未显示出来。
通过堆栈回溯可以定位到它的调用点,但是关键信息并不多。
接下来还会有很多调用,因为需要初始化窗口上的资源,会触发诸如、、等等的调用,这些可以过滤掉。
初始化完成后,弹出主窗口。按理说,接下来就是为弹出广告窗口做准备了。
我们发现右下角还有一处调用,我们通过回溯堆栈来看一下调用点:
我在函数调用上方发现了一个链接,这是嵌入在广告窗口中的链接。
为了验证,按几次F9(初始化广告弹窗),广告弹窗就会出现!
好的!现在我们已经找到弹出广告了!
那么如何关闭这个弹窗呢?当然是删除这个通话了。
当我第一次尝试时,我用 nop 填充了所有指定的字段。
保存之后发现中间部分被其他值填充了,这是因为这些指令被重定位了,这个方法有点冒险,可能会导致执行崩溃。
于是我改用第二种方法,使用jmp指令直接跳过这些行。
保存并替换原文件,然后双击你就会发现弹窗广告没有了!