如何查找弹窗广告的源头?
分享一个挺好玩的经历,最近电脑每天上午都会准时弹出一条「腾讯元宝」的广告,我电脑后台并没有微信、QQ、腾讯会议之类的腾讯产品进程,弹窗页面也没有标注来源,这让我很好奇,到底谁推送的这个广告?
当然,拦截弹窗广告非常简单,安装个火绒就行。有意思的玩法是找出幕后真凶。Process Explorer这个软件可以深入探索Windows系统进程,下面是下载链接。
https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer
下载成功后,双击procexp64.exe启动。左键拖曳上面的准星图标到弹窗上,Process Explorer会显示对应的进程。由此找到真凶,查了一下才明白,搜狗已经并入腾讯,怪不得搜狗输入法会弹腾讯元宝的广告。

右键Kill Process杀死进程,弹窗就消失了。但是为了斩草除根,我们先找贼巢,暂时不要关闭进程。右键选择查看Properties,里面显示了进程的详细信息。重点关注它的执行命令。

这个进程运行的是biz_aurfx.exe,程序位于C:\D\CA\搜狗输入法\SogouInput\Components\biz_center\1.0.0.3115\文件夹下面。它通过下面这条命令运行:
"C:\D\CA\搜狗输入法\SogouInput\Components\biz_center\1.0.0.3115\biz_aurfx.exe" --cftype=systoast --subtype=webtpl --nfwnd=1053186这个程序采用的是单例模式,如果已经存在实例,则不会创建新的实例。所以先关闭这个进程。然后进入1.0.0.3115文件夹,里面可以看到biz_aurfx.exe,在该目录的地址栏输入cmd回车启动命令行。

在命令行中输入这条命令回车,可以唤醒这个弹窗广告,由此我们掌握了弹窗的主动权。
C:\D\CA\搜狗输入法\SogouInput\Components\biz_center\1.0.0.3115>"C:\D\CA\搜狗输入法\SogouInput\Components\biz_center\1.0.0.3115\biz_aurfx.exe" --cftype=systoast --subtype=webtpl --nfwnd=1053186下面是AI对这条命令参数的推测:
--cftype=systoast
system toast 系统级弹窗
--subtype=webtpl
web template 说明这个弹窗基于 Web 渲染
--nfwnd=1053186
父窗口句柄根据AI的说法,这些属于与输入法无关的业务模块,可以直接删掉biz_aurfx.exe。为了防止自动下载回来,我们可以来个「偷梁换柱、鸠占鹊巢」。删掉后,新建一个biz_aurfx.exe文件夹。在 Windows 的同一个目录下,不允许出现名称完全相同的两个对象,无论它们一个是文件还是一个是文件夹。当搜狗程序想下载biz_aurfx.exe文件时,会因为与文件夹同名,造到Windows的拒绝。接下来还需要修改文件夹的访问权限,查看属性→安全→高级,在Everyone这里删除继承,编辑选择完全控制、拒绝,这样这个假货就删不掉了。不过这会带来一个问题,以后卸载搜狗输入法时这个文件夹无法删除,需要手动更改权限,然后再删除。然后再运行前面的命令,就不起作用了。

二更:
想不到第二天依旧弹出了腾讯元宝的广告,狙击结果如下,这次的弹窗程序变成了biz_helper.exe。看来昨天用假货替换biz_aurfx.exe是生效的,只不过防不胜防,搜狗搞了多个弹窗程序。

当然,本回答只是分享追溯弹窗来源的方法,真正拦截弹窗安装火绒就行。从目录来看,我怀疑即便再用假货替换biz_helper.exe,biz_notify.exe和biz_render.exe这俩哥们也会接替上场的。
