Me

4/19/2017

流氓与功能 -- Windows 下某些软件的藏身之所


除了工作中使用的 Windows XP,除了帮助别人修理电脑,几乎没有什么机会操作 Windows 系统。而近来几乎也听不到周围有朋友说电脑中毒、不好用等的情况了。当然这个原因可能有几个:比如在移动网络速度大幅提升后,用移动设备的人多了,使用桌面计算机的用户减少了,有关桌面计算机软件的问题自然也就少了;还有可能则是自己平时几乎不使用 Windows,也不关注,与周围隔绝了;当然还有可能是网络发达,普通问题靠搜索,靠各种“管家”就可以解决了。

因最近本人的工作电脑出现了一些无法解释并由本人修复的问题的缘故,而让我对 Windows 下某些软件的行为有了新的认识。下面详细说明。

前段时间本人工作电脑中的 Outlook 突然无法连接公司的 Exchange 服务器,导致无法正常使用 Outlook 进行工作。尝试重新建立帐户,删除配置文件等方式均无法修复。最终联系公司IT部门。该部门同事给我的回复很简单:“重做吧……”。我其实很反感把重新安装系统叫做“重做”,不知道因为什么。另外我也非常不赞成因为一些小问题就重新安装系统的做法。当然这些都是我主观想法,公司的电脑,那还是交给专人去解决吧。IT的同事效率很快,半天内就把系统装完然后又让我抱回办公室了。
让我非常不满的是,这次他们使用的盗版盘跟一开始我用的不同。在此顺便再啰嗦强调一句,我已摆脱盗版软件多年,坚持不使用盗版,也常建议别人不要使用盗版,对于乐意听我唠叨说教的朋友,我也会多解释、普及一些相关知识给他们听。当然在公司工作,我没有能力决定我是使用盗版还是正版。回到正题。
这个盗版系统同样是他们通过十多年前的老方法 -- Ghost 还原-- 装到硬盘的,与之前那个盗版系统的区别是,这个系统里增加了相当多的广告链接,一堆我没听说过的浏览器。还有国内常见的某文件压缩软件,某看图软件等等。除此之外IT部门同事又给我装了某电脑管家,某杀毒,某输入法。按我的使用习惯,先把这些挨个从硬盘里请走,然后只安装 7zip(更多情况下是用来计算文件的hash值,压缩和解压其实更多会用到windows自带程序以及winrar)和 Firefox。重启电脑,问题来了,无论我如何修改浏览器主页,它都会自动被改为同一个网站,该网站直接会重定向到某知明输入法母公司的主页。无论是 Internet Explore 还是 Firefox。即使用 regedit 把 IE 的 start page项删除也不行,用注册表编辑器的搜索功能反复搜索改主页地址并删除有关项和键值也无法解决。
更令人苦恼的是,在快下班前的一个小时内,系统无故在启动后3分钟内自动重启,让我没有任何还手之力(我已排除绝对不是CPU散热不良的问题,也基本判断不是其它硬件故障)。好不容易在某次重启后将设置改为计算机出现故障后不自动重启,但没过一会儿,直接蓝屏了。强制启动后几分钟内不再自动重启,取而代之的是蓝屏,具体提示信息现在已经忘了。无奈之下,第二天又联系IT部门。
他们测试时并没有重现问题,后来我说把网线插上试试。之后听说插网线后没几分钟就出问题了。起先他们怀疑是网卡驱动的问题,后来有问我是不是中毒了。我说中毒的可能性是没有的(我对我的计算机使用水平真的是这么自信)。他们后来又把某杀毒装上杀了杀毒,后来告诉我说杀出来一些病毒,现在没问题了。
我又把机箱抱回办公室,试验了一阵子,确实是没问题了。但我好奇的是,病毒是哪来的。我找到了查杀日志,日志中查到的病毒位置并不是我存放我文件的目录。而从名称看,可以确定是我之前提到的被盗版系统制造者加入的广告链接。
好吧,既然系统稳定了,那看看主页被强制篡改的问题是不是一并被修复了。结果很是令我失望,IT部门同事的答复是,那盗版系统就这样了,也没办法,你用某电脑管家把主页锁定吧。按我的使用习惯,我是坚决不会允许这么一个设计丑陋、耗用资源、又有些“流氓”特性的“管家”存在与我的计算机中的,但为了能够不受主页被改的困扰,也不想再麻烦IT部门同事,同时也为了赶快回到工作中,决定暂时有条件的妥协一下。这些条件如下:关闭了该管家的全部网络功能,关闭了该管家自启动的功能。简单的说,唯一保留的就是锁定浏览器主页这一项。然后彻底关闭。这样一来,其实也跟没有安装差别不大了。当然不是没有差别,具体后面详表。
在这种状态下使用了一段时间,系统基本运行正常。也没再多想那“管家”的问题。鉴于前一天清理某家属工作电脑垃圾时偶然发现的当今软件的“另类”藏身之所,于是手动修复这一问题的冲动再次点燃,查找无比的顺利,一顿 shift+delete,delete……,然后“请走”某管家,重新启动系统,测试浏览器主页,嘿,终于有恢复正常了。

哦,my ……,我这个前言、背景写的有点儿长了吧。
太晚了,明天再说重点吧。

现在开始正式说这个藏身之所。
以往的 Windows 下的程序默认都会把自己的有关文件,执行/启动程序等等都放到 Program Files 这个目录下以产品或公司名称做为文件夹名称下面。比如 Tencent,Adobe,Microsoft等等。而程序的配置文件,用户配置文件等等多会放在用户目录下。XP 系统里这个目录位于 Documents and Settings,之后的 Windows 系统则是 Users 目录。以下内容基于 Windows XP。

Documents and Settings 目录下方是由用户名组成的文件夹集合。每个用户名文件夹下由存放了对应用户的配置文件等等。假设一个用户名叫做:Test,那么在此文件夹内就会有一个 Test 文件夹。进入该文件夹后就会发现一些熟悉的文件夹:比如收藏夹(Favourites)、开始菜单(Start Menu)、我的文档(My Documents)等等,当然还有“桌面”(Desktop)。这些文件夹的功能自然就不用说了。但这其实只是一小部分而已。因为当你查看这个文件夹大小时可能会吃上一惊,它怎么占用了这么大空间?这是因为有相当多的用户数据默认都要存放到这里。这包括你的文件访问记录,上网记录,浏览器插件、Outlook 数据文件、微软 Office 模版、宏等等……。

如果你的文件夹选项设置为显示隐藏文件,显示受保护的系统文件和文件夹时,那么会看到另外几个文件夹。比如 Application Data,Local Settings。根据文件夹名称的字面意思也不难理解它们是做什么用的。这里附上微软官方介绍:https://technet.microsoft.com/en-us/library/bb490855.aspx

其中 Local Settings 里就是默认存放应用程序数据的位置之一。附带说一句,如果喜欢重装系统,又不想让以前应用程序的设置(比如浏览器插件,Office模版等等)丢失的话,可以把这个文件夹内的内容备份一下。既然这是一个默认隐藏的受保护的系统文件夹,就难得不成为那些行为不轨的程序干脏活、私活的活动中心。

拿我之前所说的工作电脑为例,里面有某知名输入法厂商的文件夹,进去会发现,除了输入法有关的配置文件外,还有此厂商的浏览器可执行程序,自动更新可执行程序等等。呵呵,我只是安装了输入法,怎么还出来浏览器的运行程序了呢?呵呵,因为它是个流氓,利用自己的某些功能干了点儿私活。所以大概有不少人都有类似的疑问,咦,电脑用的好好的,不知什么时候就装了个某某程序出来了。

再找找,又发现了某电脑管家的文件夹,里面创建了 Android,某某Phone,某某Download,某某杀毒等一些列以该厂家产品名称命名的文件夹,其中有大量的可执行程序文件,即exe为扩展名的文件。不要小看这些文件啊,它们在后台同时悄悄运行起来的话,会让你的老电脑有些吃不消的,而且不一定哪一天,你打开电脑就会发现一个未经自己安装的小程序出现在你的桌面。

再拿我家属的电脑为例,其抱怨说偶尔会在电脑右下角弹出一个小方框的广告,必须点角上的小叉才能关掉。碰巧那天修理电脑时这货正好显出原形,顺藤摸瓜,用任务管理器这种最直接的方式查到异常进程名称,然后用系统的文件搜索去搜索该名称,顺利定位到此小广告的位置 -- Documents and Settings\用户名\Local Settings\Application Data\某知名视频网站\**.exe。为了确认此即广告来源,在任务管理器内结束了该进程,广告直接消失。判断无误,然后直接按着 shift 删除了这个 exe 文件。这就算解决了吗?还没有。

又有点儿晚了,明天再说。

接上文。

其实这样的删除可能只是治标不治本。为了保证能完全解决问题,还需要仔细想想有没有其它方法可能对这个可执行程序实现其功能。比如,在这个示例中我只删了test用户文件夹中对应的内容,那这些喜欢干私活的程序会不会通过其它用户运行呢?再比如,这些程序会不会还给自己设置了恢复程序,以便在被删除后重新把自己“制造”出来?

1. 我的第一个猜测是正确的。当我浏览了 Documents and Settings 下面的 Administrator、All Users、Default Users 以及文件夹后,也同样发现了上面提到的那个某知名视频网站的广告程序。于是我毫不犹豫的按着 shift 键进行了删除。之后没有听到家属反馈说再有此程序出来干扰使用。
2. 在我上述提到的那些程序中,有相当多的程序在其安装目录或是现在讨论的用户文件目录下存放了自己的保护程序、或恢复程序还有自动更新程序。这些程序多数都以**protect、update等词命名。其实程序制造商的本意大概都是保护自家的程序不受其它程序、病毒等破坏,保证其程序能够正常运行,并且让用户能够一直无忧的使用其最新的产品。可是有不少事物都有着两面性,比如那些喜欢搞小动作的、干私活的程序就会借助其自身的这个功能,在自己被破坏后通过它们实现原地满血复活。

虽然没有亲自去做测试,但这种可能性是非常高的。

下面简要的说明它们是如何通过自动更新、保护程序实现上述功能的。

现在多数应用程序都要使用网络功能,除了实现本身应有的功能外,目的还有改进、提升体验、修复漏洞等等。当然对于“那些”程序来说,它们通过网络要做的事情可能就更多了。但是光有诸如update.exe的可执行文件还是不够的,它必须要接受来自用户、系统下达的命令才可以运行。

很多程序为了不需要让用户自己去寻找升级按钮,提高程序易用性,会在Windows系统的“任务和计划”中增加定期检查更新的计划,从而免去用户亲自查找更新的烦恼。这其实是个很贴心的想法,它省去了用户命令的环节。但也是这个功能,让别有用心的应用程序干了些脏活。最终结果便是本文前面提到的,用户好奇的会问,我用的好好的,不知什么时候就出来个这个浏览器,有出来个这个下载、那个影音、那个管家等等。

因此没事常检查一下“任务和计划”中的定期任务,也可以了解自己计算机的状况。如果不确定某个计划的具体作用,可以点右键菜单查看其属性,详细了解一下调用的文件位置,再查看该文件的属性了解详情。而我为了省事,在我的工作电脑上也添加了两个任务计划:1. 每个工作日定时进行文件备份、然后复制到公司的文件服务器;2. 每天定时关机。

另外可以配合实现以上功能的,还可以通过在系统内增加服务完成。这个做法其实已不是什么新鲜事。但仍然要留有足够的警惕心。俗话说,最显眼的地方,也是最隐蔽的地方。打开系统服务也很方便,直接运行 services.msc 命令即可,或者在“我的电脑”右键菜单“管理”中也可找到。为了查看方便,可以先把服务按照某个方式排个序,比如按照启动状态,描述,名称等等。对于陌生的服务,可以点击属性详细查看其目标文件位置,然后最终决定停止还是保持此服务的运行。

下面再通过实例,介绍另一个经典、隐蔽的位置:注册表。

开始曾说过我工作电脑重装系统后浏览器主页被劫持的事情。当时也曾试过在注册表编辑器内查询关键字寻找蛛丝马迹,可惜没有成功,靠修改internet explore中start page的值也无法成功解决。直到后来在 Documents and Settings\用户名\Local Settings\Application Data\ 下发现了某国内著名搜索公司的文件夹后,决定也要在注册表编辑器内对该公司在我电脑的行为做个了解。毕竟我是从来没有在电脑上安装、使用过它的产品。

打开注册表编辑器 regedit,搜索该公司名称,一个注册表项引起了我足够的注意,我甚至有些略带激动的感觉。因为我发现了主页被篡改的真正原因。具体可见以下屏幕照片。当然我并不确定这个项却是此家公司的程序而为,亦或是某个公司的栽赃嫁祸之作,因为篡改后的网址会重定向到国内某知名输入法的网站。不管怎样,我的问题确实得到解决。

写本文的目的就是想介绍下不少干脏活、私活软件的藏身之所,没想到却花了三个晚上的时间。算算居然也有上千个字了吧。
为了方便参考,还是写个简要总结。
1. 用户目录 Documents and Settings\用户名\Local Settings\Application Data\
2. 控制面板的“任务和计划”
3. 服务,可运行 services.msc 查看
4. 注册表编辑器 regedit
5. 程序本身的设置。(很多软件功能和流氓行为兼备,为了限制其流氓行为,可在其软件设置中进行调整,一来减轻系统负担,让自己的电脑运行顺畅,二则可以有效避免其露出马脚。)

如果使用 Windows 的过程中曾经遇到过文中提到的类似的软件行为,可以尝试在上述位置检查。如有必要可删除相关文件。其中 1 和 2 位置下,即使误删文件,也不会对系统造成严重损坏,可能造成的影响是某个软件的功能异常,重新设置或重新安装此软件可解决问题。4 中使用要非常慎重。5 要结合程序和个人使用偏好进行,故在文中没有详细介绍。


最后一点,删文件要慎重,没有足够的把握,不要按着 shift 去删除。


完,2017-4-19  口十