当系统运行异常时,我们最直接的反应就是打开任务管理器,来检查是否有病毒木马进程在捣乱。可有时试图关闭来历不明的可疑进程时,却面临操作失败的困扰。这些顽固的可疑进程采用各种对抗手段,让用户对其束手无策。其实,我们无需借助第三方安全工具,仅仅依靠系统的自带功能,就可以让这些令人厌恶的非法进程彻底失去活力。

提升权限,轻松关闭进程

  在Windows的任务管理器中,之所以无法关闭顽固进程,究其根源在于权限不足。其实,在系统中还隐藏着一个“隐形”的超级管理员——SYSTEM账户,其权限甚至超过了Administrator账户。使用SYSTEM账户权限,可以随意关闭顽固进程。在命令提示符窗口中执行“sc Create SuperCMD binPath= "cmd /K start" type= own type= interact”命令,建立一个名为“SuperCMD”的交互服务。执行“sc start SuperCMD”命令,来启动该交互进程。之后系统会弹出交互式服务检测窗口,如下图:

结束顽固进程

  点击其中的“查看消息”按钮,可以以SYTEM账户身份打开命令提示符窗口。你可以输入“whoami”命令查看当前用户是否为system。在其中执行“taskmgr.exe”程序,就会以SYSTEM账户身份启动任务管理器,这样,就可以有效关停顽固进程了。操作完毕后,在交互式服务检测窗口中点击“立即返回”按钮,回到正常操作界面。如果您使用的是XP系统,可以使用AT命令,来实现上述操作。方法是在CMD窗口中执行“time /t”命令,来查看当前的时间。假设当前时间为上午8:59,执行“at 9:00 /interactive taskmgr.exe”命令,就可以在上午九点启动任务管理器进程。当达到预设时间后,就会以SYSTEM账户身份启动任务管理器了。

活用Taskkill命令,对付顽固进程

  在系统中内置了名为Taskkill的工具,可以帮助您清理顽固进程。当然,必须先确定目标进程的ID号才行。在命令提示符窗口中执行“tasklist /svc”命令,可以查看当前所有进程的信息,包括映像名称、PID号、服务等。这样,可以清楚地看到目标进程的PID号。也可以在CMD窗口中执行“wmic process list”命令,使用WMIC工具来查看进程信息。为了便于观察,可以执行诸如“wmic process list > c:\procelist.txt”命令,将统计信息导出到“procelist.txt”文件中。使用记事本打开该文件,并取消自动换行功能,就可以完美浏览进程信息了。

  也可以在任务管理器中打开“进程”面板,点击菜单“查看→选择列”项,确保选中“PID(进程标识符)”项。在“进程”面板中就可以找到目标进程的ID号了。例如,在命令行窗口中执行“taskkill /PID 1916”命令,就可以关闭PID为1916的进程。如果执行“taskkill /PID 进程ID /f /t”命令,可以强制关闭指定的进程,同时终止其启用的所有子进程。Taskkill命令有一项绝活就是可以同时关闭多个进程,例如,当需要清除ID号分别为3373、3428、4936等多个进程时,可以执行“Taskkill /f /PID 3376 /PID 3428 /PID 4936”命令,将其一并清除。

  当然,也可以按照进程名称,执行关闭操作。执行“tasklist /im winserver32.exe /f”命令,就可以关闭名为“winserver32.exe”的进程。利用Taskkill命令,可以顺藤摸瓜发现多进程守护型病毒木马。例如执行“taskkill /im daemon.exe /t”命令,根据返回信息显示该进程是属于PID为736的子进程,该进程的名称为“syswd.exe”,执行“taskkill /im syswd.exe /t”命令,发现其是PID为 1560进程的子进程,经查PID为 1560的进程名为“sersec.exe”。这些进程相互守护,无法逐个进行关闭。执行“taskkill /im daemon.exe /im syswd.exe /im sersec.exe /f”命令,就可以将其一网打尽。

  使用Taskkill命令,还可以快速清除所有失去响应的进程,执行“taskkill /fi " status eq not responding"”即可。有时,当发现了某个DLL木马后,却无法将其对应的DLL木马文件删除,究其原因,在于该DLL木马插入到了某个合法进程中。对此,可以执行“taskkill /fi "modules eq winspool.dll"”命令,来关闭所有调用“winspool.dll”的进程,假设“winspool.dll”为木马DLL文件。这样,就可以轻松删除DLL木马文件了。

终极利器ntsd命令

  对于一些很霸道的进程 ,使用Taskkill命令未必有效。不过,在ntsd命令面前,对付这些霸道进程根本不在话下。Ntsd命令其实是一个系统调试工具,除了系统自身的管理进程,Ntsd命令可谓无坚不摧。按照上述谈到的方法确定需要清除的进程ID号,假设为5100,在命令行窗口中执行“ntsd –c q –p 5100”,就可以将其终结掉。其中的“-c”参数表示执行Debug级别的命令,“q”参数表示执行结束后退出,“-p”参数后面跟随具体的进程ID。

  当然,也可以针对进程名称进行操作,例如想关闭名为“windll.exe”的进程,可以执行“ntsd –c q –pn windll.exe”命令,就可以将其关停。当然,对于系统提供的“system”、“SMSS.exe”、“Csrss.exe”、“lsass.exe”等核心进程不要随意关闭。注意,Windows 7没有提供ntsd命令,可以从网上下载该工具,之后将其复制到“C:\Windows\System32”文件夹中,就可以自由使用了。下载地址:

使用“偏方”对付顽固进程

  对于某些比较特别的进程,如果使用常规方法无法应对,可以在任务管理器中的“映像路径名称”列中查看其存储位置,之后找到对应的程序文件,在其属性窗口中打开“安全”面板,点击“编辑”按钮,在弹出窗口(如图4)中的“组或用户名”列表中选择当前的账户(例如“Administrator”),在“拒绝”列中勾选所有项目。这样重启系统之后,该程序就无法运行了,之后就可以将其删除。如果在操作时,出现失败的情况,可能是这些文件受到名为TrustedInstaller账户的保护。为了让当前账户拥有对其控制权,可以在命令提示符窗口中先切换到这些文件所属目录中,执行“takeown /f * /A /R”和“icacls * /t /grant:r everyone:f”命令,就获得了所需的操作权限。

  也可以利用映像劫持技术,来对付狡猾的恶意进程。假设其名称为“secsvc.exe”,使用记事本编辑以下内容:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\secsvc.exe]
"debugger"="nofile.exe"

  将该文件保存为“norun.reg”,双击该文件就可以为“secsvc.exe”创建映像劫持,当重启系统后该程序试图启动时,系统会“错误地”执行根本不存在的“nofile.exe”程序,从而达到阻止该进程运行的目的。