前两天接到朋友的电话,她的笔记本现在性能很差,打开应用程序需要很长时间,而且界面响应很慢,让我帮忙看看。
启动电脑后我按照通常的三板斧,禁掉IE的插件,运行msconfig清除所有不明启动选项,检查注册表hkey_local_machine\software\microsoft\windows nt\currentversion\windows\Appinit_Dlls下是否有Injected Dll,然后重启。
但是系统性能还是没有根本的改善,我尝试运行了几次Notepad,启动的时间都在10秒以上。重新运行msconfig,我惊奇的发现,在上一步操作中曾经清除掉的一个选项,stup(指向C:\Program Files\Tencent\Adplus\stup.exe),又被加入了启动选项。
朋友的机器上曾经安装过QQ,后来卸载掉了。查看Adplus目录,除了stup.exe外还有几个Dll。从上述迹象判断,即使在卸载之后,腾讯依然有遗留的应用代码运行,并且采取了措施防止它被删除。于是我运行Process Explorer,查看Notepad进程,发觉其中加载了一个名称为rtckr.dll,位于C:\windows\Downloaded Program Files,Company Name为Tencent的Dll。
我打开FileMon,运行Notepad然后关闭,以监控相关文件活动流程。初步分析Filemon的输出,有两个值得注意的地方:
---在C:\Windows\System32下面,有名称为thcjhy.exe的文件,访问了Adplus目录下的相关文件。Thcjhy.exe文件属性中的Company Name为Tencent。
---运行基本Windows服务的svchost进程访问了thcjhy.exe。该svchost运行在Local System帐号下,对于本地系统有相当高的特权。
在有了上述发现之后,我更加相信这并非偶然的巧合,是一个经过预先设计的系统,有意驻留在用户计算机上,用于实现某种程度的控制。由于时间的关系来不及做进一步的调查,为了快速解决问题,我设置了NTFS的权限,拒绝了Everyone对Thcjhy.exe和Adplus目录的访问。重启计算机后,性能问题得到解决。以Notepad启动为例,从原来的10多秒变为1秒。
回到家之后心存疑惑,为了验证是否QQ包含了这样一个系统,我访问www.qq.com下载了新版的QQ,在干净的Windows XP虚拟机上进行了测试和分析。测试过程的现象与朋友计算机上并不完全一致,但是综合两者(以及网上的一些相关文章)来看,在最近版的QQ安装程序中,捆绑了搜搜地址栏(默认情况下会安装,但是可以在运行安装向导时清除该选项)。如果按照QQ安装向导的默认设置完成了安装。即使在添加\删除程序中卸载了QQ(QQ2006 Beta3中搜搜地址栏在添加/删除程序中有另外的条目,可以用该条目删除搜搜地址栏),搜搜地址栏依然会运行在用户计算机上,它的特性如下:
---保护自身不被删除,或者在被删除后恢复
---用户在IE搜索栏中输入关键字时,将会被引入Tencent的Soso
---可能会导致用户的系统性能大幅度下降
不想去做反向工程,是否还有其他的功能和影响,目前不得而知。但是从技术角度,如果认为QQ是一个普通应用软件,有两个问题我觉得很奇怪:
---有什么必要不直接运行程序,而是要在拥有Local System权限的svchost环境中运行?
---读取并复制Kernel32.dll派什么作用?
尽量往比较好的方向上猜,想了想似乎悟出点什么。IE地址栏就那么一个,盯着它的不仅仅是腾讯一家,未免大家有磕磕碰碰的时候。设计这么复杂一个东西出来,大概是为了对决或者群殴?何况顺便还是可以防止直接被从用户从文件系统或者注册表中清理出局么。添加/删除程序中是提供了搜搜的卸载功能,不过从我的经验,会Delete文件的,已经算是中级用户了。能够用添加/删除程序的,那是高级用户。
基于搜搜地址栏已经提供了卸载程序,再说它是流氓软件似乎有些理不直气不壮。但是从它的行为来看,又的确流氓气。打个比方,难道电视台可以把私人武装偷偷开到用户家里,就为了防止别的台抢频道。
相关文章:搜搜地址栏的一些技术分析