现在的病毒变得越来越狡猾,往往采用双进程守护的方式,达到对抗清理的目的。也就是说病毒同时运行两个功能相近的进程,彼此之间相互监视,当发现对方被关停后,另一个病毒进程即可自动将其激活,造成无法关停病毒进程的目的,这给病毒的清理工作带来很大的麻烦。笔者的电脑近日就遭到了此类病毒的侵袭,系统启动后运行速度明显降低,对各种操作反映迟钝。明明没有上网操作,ADSL Modem的流量指示灯却频频闪烁。但是笔者安装的某款杀毒软件对此却无动于衷,看来病毒一定是采用了最新的免杀技术。打开任务管理器,发现“server.exe”和“explorer.exe’’两个来历不明的进程,不管关闭其中哪一个进程后,另一个进程都会自动将对方重新启动。如何简单快捷的清除此类病毒呢?笔者利用了映像劫持技术,赤手空拳不费吹灰之力,就将其轻松搞定。
一、清除病毒过程
在“开始”→“运行”中执行“regedit.exe”程序,在注册表编辑器中展开“HKEY_LOCAL_
MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”分支,在该主键的右键菜单上点击“新建”→“项”,之后将新建的子健改名为“server.exe”,选中该子键,在右侧窗口中建立一个字符串类型的名称为“debugger”的键值名,并将其值修改为“nofileA.exe”。按照同样方法,新建一个名为“explorer.exe”的子键,选中该子健,在右侧窗口中建立一个字符串类型的名称为“debugger”的键值名,并将其值修改为“nofileB.exe”。这样,我们就创建了两个映像劫持项目,注意其中的“nofileA.exe”和“nofileB.exe”是两个根本不存在的程序。当然,您也可以将其改为其它不存在的程序名。有了这两个镜像劫持项目,那么当启动“Server.exe”和“Explorer.exe”程序时,系统就会寻找“nofileA.exe”和“nofileB.exe”,来替代上述两个病毒程序,因为“nofileA.exe”和“nofileB.exe”根本就不存在,当然就无法启动了。之后重新启动系统,系统就会提示无法运行“nofileA.exe”和“nofileB.exe”程序。这样,“Server.exe”和“ExplOrer.exe”两个病毒程序无法运行了,根据其名称,笔者在“C:\Windows\System32”文件夹中找到这两个病毒文件,之后其删除即可。这样笔者几乎没有花费什么力气,病毒就束手就擒了。
二、什么是镜像劫持
映像劫持其实是Windows内设的用来调试程序的功能,但是现在却往往被病毒恶意利用。当用户双击对应的程序后,操作系统就会给外壳程序(例如“explorer.exe”)发布相应的指令,其中包含有执行程序的路径和文件名,然后由外壳程序来执行该程序。事实上在该过程中,Windows还会在注册表的上述路径中查询所有的映像劫持子键,如果存在和该程序名称完全相同的子键,就查询对应子健中包含的“dubugger”键值名,并用其指定的程序路径来代替原始的程序,之后执行的是遭到“劫持”的虚假程序。同系统启动项相比,映像劫持技
术显得更加隐蔽。实际上,病毒就很“喜欢”使用映像劫持来隐藏自己,例如病毒可以在注册表的上述路径中创建和杀毒软件主文件名完全同名的子键(例如NOD32的“egui.exe”,瑞星的“ravexe”、金山毒霸的“kav32.exe”等),然后在其中创建“debugger”键值名,并用病毒的路径取而代之,达到禁用杀毒软件和非法执行病毒程序的目的。
三、映像劫持的用途
当然,映像劫持也并非一无是处,可以利用其来实现禁用特定程序的目的。
将该文件保存为lockie.reg,双击该文件就可以为IE建立映像劫持,当双击IE图标试图访问网页时,Windows就可以弹出找不到文件的提示,因为其中的“nowenjian.exe”根本就不存在。这样别人就无法正常使用IE了。按照上述方法,可以将禁用的程序全部建立映像劫持,这样就可以有效的禁用对应的程序了。此外,映像劫持存在一个重要的缺点,那就是它只能根据程序文件名来确定该程序是否被劫持,如果将被劫持的程序改名,那么映像劫持就失效了。利用该方法,可以巧妙实现阻止病毒运行的目的。例如现在有一种很流行的优盘病毒,会在每个磁盘根目录创建“Autorun.inf"和“auto.exe”文件,这样只要双击对应的盘符,就自动运行病毒文件“auto.exe”。您可以使用记事本编辑以下内容:将该文件保存为“noautorun.reg",双击该文件就可以为“auto.exe”创建映像劫持,当运行该病毒文件时,就会“错误的”执行根本不存在的“nofile.exe”程序,从而达到阻止该病毒运行的目的。
四、管理映像劫持
那么如何才能彻底清除病毒建立的映像劫持,将被禁的安全软件彻底解放出来呢?方法很简单,直接在注册表的上述路径中找到和被劫持的的程序名称相同的子健,将其逐一删除即可。也可以运行Autoruns这款小巧的安全软件来清除映像劫持。在Autoruns主窗口中打开“Image Hijacks”面板,在其中列出所有被劫持的程序项目,双击对应的劫持项目即可打开注册表,并自动定位到相应地劫持项位置,之后将其删除即可。
单纯的删除操作显得比较繁琐,如何才能彻底禁用映像劫持功能呢?在注册表的“HKEY_
LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options”分支的右键菜单中点击“权限”,在弹出的窗口中的“完全控制”项的设置为“拒绝”即可,这样病毒就无法使用映像劫持功能了。