由于现在 U盘相当普及,导致了U盘病毒的泛滥。很多人对U盘病毒非常痛恨,但是却找不到一种较好的解决方案。特别是比如有的时候新安装的系统,一不小心插个U盘,努力全部白费了,真是让人欲哭无泪啊。
U盘病毒,顾名思义,是通过U盘传播的病毒,是一种手段而不是目的。很多“著名“的病毒,比如熊猫烧香,都拥有通过U盘传播的能力。目前U盘病毒大致可以分为两类,一种是Autorun.inf型的,这也是大部分U盘病毒的类型。另外一种则是Autorun.inf+EXE全盘感染。这种类型的相当恶毒,因为它会感染U盘上的所有EXE可执行文件,只要执行这些EXE就会立即感染。
不论是哪种, U盘病毒的核心机制就是AutoRun,相信很多人都知道从Win95开始,Windows系统就拥有一个自动播放的功能,可以为用户提供方便的自动安装的功能。但是Autorun还有一些鲜为人知的功能。Autorun可以将指定的项挂载到右边键菜单中,这样一旦用户双击打开设备,即激活病毒。
下面是一个典型 Autorun.inf的文件结构:
[AutoRun]
Open= Test.exe
Shell\Open= 打开 (&O)
Shell\Open\Command=Test.exe
Shell\Open\Default=1
Shell\Explore= 资源管理器 (&X)
Shell\Explore\Command= Test.exe
 
 
将此文件命名为 Autorun.inf,然后置于任意一个盘(不论是硬盘还是U盘)根目录,一旦用户双击盘符,或者右键选择了“打开”或者“资源管理器”,则会执行Test.exe。这个过程是由 Windows Explorer完成的,Explorer会自动搜寻每个盘的根目录是否存在名为“Autorun.inf“的文件,一旦找到则加载进行相应处理。
从程序角度来看,“ Autorun.inf“这个字符串是被硬编码在Shell32.Dll中的,现在网上有种U盘病毒永久免疫器,就是通过修改Shell32.Dll里面的“Autorun.inf“字符串,使得Autorun失效。这种方法可能会影响系统稳定性,故不推荐。
知道了原理,就可以很快知道应对策略了。即防止病毒建立 Autorun.inf。特别是对于硬盘的NTFS分区,我们可以采用权限机制来禁止Autorun.inf,即建立一个同名的文件夹,然后将其权限设为禁止更改删除即可。
对于非 NTFS的盘,则也可以建立同名文件夹,然后再在此文件夹中建立一个不可删除的目录,方法如下,打开cmd,切换到建立的Autorun.inf文件夹下,然后 输入md xxxx..\ 即可建立一个特殊的文件夹,这个文件夹不可通过一般方式删除。这样病毒由于无法建立Autorun.inf而失效了。目前有的新型病毒可以自动识别这种方式,故此方法也不是总是有效地。
最有效的方法是修改注册表,禁止 Autorun.info的挂载。打开注册表编辑器,切换到HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\CurrentVersion\\Explorer\\MountPoints2,右键双击此项,然后点击权限,在弹出的对话框中点击高级,选中包含父权限的复选框,确定后即可更改权限了,将相应用户的权限设为只读即可。一旦操作完成,则Autorun.inf彻底无法起作用了。
U盘病毒只能在Windows XPWindows Server 2003上有效,因而大家可以尽快升级到Windows 7,永远避免U盘病毒的骚扰了。
为了方便清除感染了 U盘病毒的盘,我写了一个小程序,程序使用VC9.0开发。它可以自动识别并清除此类病毒。每次插上u盘之后运行一下即可。操作非常方便。源代码公开,需要的人可以自行更改。