劉景云
當系統運行異常時,我們最直接的反應就是打開任務管理器,來檢查是否有病毒木馬進程在搗亂??捎袝r試圖關閉來歷不明的可疑進程時,卻面臨操作失敗的困擾。這些頑固的可疑進程采用各種對抗手段,讓用戶對其束手無策。其實,我們無需借助第三方安全工具,僅僅依靠系統的自帶功能,就可以讓這些令人厭惡的非法進程徹底失去活力。
提升權限,輕松關閉進程
在Windows的任務管理器中,之所以無法關閉頑固進程,究其根源在于權限不足。其實,在系統中還隱藏著一個“隱形”的超級管理員——SYSTEM賬戶,其權限甚至超過了Administrator賬戶。使用SYSTEM賬戶權限,可以隨意關閉頑固進程。在命令提示符窗口中執行“sc Create SuperCMD binPath= "cmd /K start" type= own type= interact”命令,建立一個名為“SuperCMD”的交互服務。執行“sc start SuperCMD”命令,來啟動該交互進程。之后系統會彈出交互式服務檢測窗口(如圖1)。

點擊其中的“查看消息”按鈕,可以以SYTEM賬戶身份打開命令提示符窗口。在其中執行“taskmgr.exe”程序,就會以SYSTEM賬戶身份啟動任務管理器,這樣,就可以有效關停頑固進程了。操作完畢后,在交互式服務檢測窗口中點擊“立即返回”按鈕,回到正常操作界面。如果您使用的是XP系統,可以使用AT命令,來實現上述操作。方法是在CMD窗口中執行“time /t”命令,來查看當前的時間。假設當前時間為上午8:59,執行“at 9:00 /interactive taskmgr.exe”命令,就可以在上午九點啟動任務管理器進程。當達到預設時間后,就會以SYSTEM賬戶身份啟動任務管理器了。
活用Taskkill命令,對付頑固進程

在系統中內置了名為Taskkill的工具,可以幫助您清理頑固進程。當然,必須先確定目標進程的ID號才行。在命令提示符窗口中執行“tasklist /svc”命令,可以查看當前所有進程的信息,包括映像名稱、PID號、服務等(如圖2)。這樣,可以清楚地看到目標進程的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”命令,將其一并清除(如圖3)。
當然,也可以按照進程名稱,執行關閉操作。執行“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”文件夾中,就可以自由使用了。下載地址:http://www.pc6.com/softview/SoftView_25612.html#download。
使用“偏方”對付頑固進程
對于某些比較特別的進程,如果使用常規方法無法應對,可以在任務管理器中的“映像路徑名稱”列中查看其存儲位置,之后找到對應的程序文件,在其屬性窗口中打開“安全”面板,點擊“編輯”按鈕,在彈出窗口(如圖4)中的“組或用戶名”列表中選擇當前的賬戶(例如“Administrator”),在“拒絕”列中勾選所有項目。這樣重啟系統之后,該程序就無法運行了,之后就可以將其刪除。如果在操作時,出現失敗的情況,可能是這些文件受到名為TrustedInstaller賬戶的保護。為了讓當前賬戶擁有對其控制權,可以在命令提示符窗口中先切換到這些文件所屬目錄中,執行“takeown /f * /A /R”和“icacls * /t /grant:r everyone:f”命令,就獲得了所需的操作權限。
也可以利用映像劫持技術,來對付狡猾的惡意進程。假設其名稱為“secsvc.exe”,使用記事本編輯以下內容:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ secsvc.exe]
"debugger"="nofile.exe"

將該文件保存為“norun.reg”,雙擊該文件就可以為“secsvc.exe”創建映像劫持,當重啟系統后該程序試圖啟動時,系統會“錯誤地”執行根本不存在的“nofile.exe”程序,從而達到阻止該進程運行的目的。