svchost.exe是一個(gè)屬于微軟Windows操作系統(tǒng)的系統(tǒng)程序,微軟官方對(duì)它的解釋是:Svchost.exe 是從動(dòng)態(tài)鏈接庫(kù) (DLL) 中運(yùn)行的服務(wù)的通用主機(jī)進(jìn)程名稱(chēng)。這個(gè)程序?qū)ο到y(tǒng)的正常運(yùn)行是非常重要,而且是不能被結(jié)束的。在基于nt內(nèi)核的windows操作系統(tǒng)家族中,不同版本的windows系統(tǒng),存在不同數(shù)量的“svchost”進(jìn)程,用戶(hù)使用“任務(wù)管理器”可查看其進(jìn)程數(shù)目。一般來(lái)說(shuō),win2000有兩個(gè)svchost進(jìn)程,winxp中則有四個(gè)或四個(gè)以上的svchost進(jìn)程(以后看到系統(tǒng)中有多個(gè)這種進(jìn)程,千萬(wàn)別立即判定系統(tǒng)有病毒了喲),而win2003server中則更多。這些svchost進(jìn)程提供很多系統(tǒng)服務(wù),如:rpcss服務(wù)(remoteprocedurecall)、dmserver服務(wù)(logicaldiskmanager)、dhcp服務(wù)(dhcpclient)等。到了Windows Vista 系統(tǒng)時(shí)svchost 進(jìn)程多達(dá)12個(gè),這些svchost.exe都是同一個(gè)文件路徑下C :\Windows\System32\svchost.exe , 它們分別是imgsvc、 NetworkServiceNetworkRestricted、 LocalServiceNoNetwork 、NetworkService 、LocalService 、netsvcs 、LocalSystemNetworkRestricted、 LocalServiceNetworkRestricted 、services 、rpcss、 WerSvcGroup 、DcomLaunch服務(wù)組。如果要了解每個(gè)svchost進(jìn)程到底提供了多少系統(tǒng)服務(wù),可以在win2000的命令提示符窗口中輸入“tlist-s”命令來(lái)查看,該命令是win2000supporttools提供的。在winxp則使用“tasklist/svc”命令。 svchost中可以包含多個(gè)服務(wù) 深入:windows系統(tǒng)進(jìn)程分為獨(dú)立進(jìn)程和共享進(jìn)程兩種,“svchost.exe”文件存在于“%systemroot%system32”目錄下,它屬于共享進(jìn)程。隨著windows系統(tǒng)服務(wù)不斷增多,為了節(jié)省系統(tǒng)資源,微軟把很多服務(wù)做成共享方式,交由svchost.exe進(jìn)程來(lái)啟動(dòng)。但svchost進(jìn)程只作為服務(wù)宿主,并不能實(shí)現(xiàn)任何服務(wù)功能,即它只能提供條件讓其他服務(wù)在這里被啟動(dòng),而它自己卻不能給用戶(hù)提供任何服務(wù)。那這些服務(wù)是如何實(shí)現(xiàn)的呢? 原來(lái)這些系統(tǒng)服務(wù)是以動(dòng)態(tài)鏈接庫(kù)(dll)形式實(shí)現(xiàn)的,它們把可執(zhí)行程序指向svchost,由svchost調(diào)用相應(yīng)服務(wù)的動(dòng)態(tài)鏈接庫(kù)來(lái)啟動(dòng)服務(wù)。那svchost又怎么知道某個(gè)系統(tǒng)服務(wù)該調(diào)用哪個(gè)動(dòng)態(tài)鏈接庫(kù)呢?這是通過(guò)系統(tǒng)服務(wù)在注冊(cè)表中設(shè)置的參數(shù)來(lái)實(shí)現(xiàn)。下面就以rpcss(remoteprocedurecall)服務(wù)為例,進(jìn)行講解。 從啟動(dòng)參數(shù)中可見(jiàn)服務(wù)是靠svchost來(lái)啟動(dòng)的。 實(shí)例 以windowsxp為例,點(diǎn)擊“開(kāi)始”/“運(yùn)行”,輸入“services.msc”命令,彈出服務(wù)對(duì)話(huà)框,然后打開(kāi)“remoteprocedurecall”屬性對(duì)話(huà)框,可以看到rpcss服務(wù)的可執(zhí)行文件的路徑為“c:\windows\system32\svchost-krpcss”,這說(shuō)明rpcss服務(wù)是依靠svchost調(diào)用“rpcss”參數(shù)來(lái)實(shí)現(xiàn)的,而參數(shù)的內(nèi)容則是存放在系統(tǒng)注冊(cè)表中的。 在運(yùn)行對(duì)話(huà)框中輸入“regedit.exe”后回車(chē),打開(kāi)注冊(cè)表編輯器,找到[hkey_local_machine\system\currentcontrolset\services\rpcss]項(xiàng),找到類(lèi)型為“reg_expand_sz”的鍵“Imagepath”,其鍵值為“%systemroot%system32svchost-krpcss”(這就是在服務(wù)窗口中看到的服務(wù)啟動(dòng)命令),另外在“parameters”子項(xiàng)中有個(gè)名為“servicedll”的鍵,其值為“%systemroot%system32rpcss.dll”,其中“rpcss.dll”就是rpcss服務(wù)要使用的動(dòng)態(tài)鏈接庫(kù)文件。這樣svchost進(jìn)程通過(guò)讀取“rpcss”服務(wù)注冊(cè)表信息,就能啟動(dòng)該服務(wù)了。 [編輯本段]病毒相關(guān)解惑 因?yàn)閟vchost進(jìn)程啟動(dòng)各種服務(wù),所以病毒、木馬也想盡辦法來(lái)利用它,企圖利用它的特性來(lái)迷惑用戶(hù),達(dá)到感染、入侵、破壞的目的(如沖擊波變種病毒“w32.welchia.worm”)。但windows系統(tǒng)存在多個(gè)svchost進(jìn)程是很正常的,在受感染的機(jī)器中到底哪個(gè)是病毒進(jìn)程呢?這里僅舉一例來(lái)說(shuō)明。 假設(shè)windowsxp系統(tǒng)被“w32.welchia.worm”感染了。正常的svchost文件存在于“c:\windows\system32”目錄下,如果發(fā)現(xiàn)該文件出現(xiàn)在其他目錄下就要小心了。“w32.welchia.worm”病毒存在于“c:\windows\system32\wins”目錄中,因此使用進(jìn)程管理器查看svchost進(jìn)程的執(zhí)行文件路徑就很容易發(fā)現(xiàn)系統(tǒng)是否感染了病毒。windows系統(tǒng)自帶的任務(wù)管理器不能夠查看進(jìn)程的路徑,可以使用第三方進(jìn)程管理軟件,如“windows優(yōu)化大師”進(jìn)程管理器,通過(guò)這些工具就可很容易地查看到所有的svchost進(jìn)程的執(zhí)行文件路徑,一旦發(fā)現(xiàn)其執(zhí)行路徑為不平常的位置就應(yīng)該馬上進(jìn)行檢測(cè)和處理。 Svchost.exe說(shuō)明解疑對(duì)Svchost的困惑 --------------- Svchost.exe文件對(duì)那些從動(dòng)態(tài)連接庫(kù)中運(yùn)行的服務(wù)來(lái)說(shuō)是一個(gè)普通的主機(jī)進(jìn)程名。Svchost.exe文件定位在系統(tǒng)的%systemroot%\system32文件夾下。在啟動(dòng)的時(shí)候,Svchost.exe檢查注冊(cè)表中的位置(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost)來(lái)構(gòu)建需要加載的服務(wù)列表。這就會(huì)使多個(gè)Svchost.exe在同一時(shí)間運(yùn)行。每個(gè)Svchost.exe的回話(huà)期間都包含一組服務(wù),以至于單獨(dú)的服務(wù)必須依靠Svchost.exe怎樣和在那里啟動(dòng)。這樣就更加容易控制和查找錯(cuò)誤。 Svchost.exe 組是用下面的注冊(cè)表值來(lái)識(shí)別。 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost 每個(gè)在這個(gè)鍵下的值代表一個(gè)獨(dú)立的Svchost組,并且當(dāng)你正在看活動(dòng)的進(jìn)程時(shí),它顯示作為一個(gè)單獨(dú)的例子。每個(gè)鍵值都是REG_MULTI_SZ類(lèi)型的值而且包括運(yùn)行在Svchost組內(nèi)的服務(wù)。每個(gè)Svchost組都包含一個(gè)或多個(gè)從注冊(cè)表值中選取的服務(wù)名,這個(gè)服務(wù)的參數(shù)值包含了一個(gè)ServiceDLL值。 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services 簡(jiǎn)單的說(shuō)沒(méi)有這個(gè)RPC服務(wù),機(jī)器幾乎就上不了網(wǎng)了。很多應(yīng)用服務(wù)都是依賴(lài)于這個(gè)RPC接口的,如果發(fā)現(xiàn)這個(gè)進(jìn)程占了太多的CPU資源,直接把系統(tǒng)的RPC服務(wù)禁用了會(huì)是一場(chǎng)災(zāi)難:因?yàn)檫B恢復(fù)這個(gè)界面的系統(tǒng)服務(wù)設(shè)置界面都無(wú)法使用了。恢復(fù)的方法需要使用注冊(cè)表編輯器,找到 HKEY_LOCAL_MACHINE >> SYSTEM >> CurrentControlSet >> Services >> RpcSs, 右側(cè)找到Start屬性,把它的值改為2再重啟即可 造成svchost占系統(tǒng)CPU 100%的原因并非svchost服務(wù)本身:以上的情況是由于Windows Update服務(wù)下載/安裝失敗而導(dǎo)致更新服務(wù)反復(fù)重試造成的。而Windows的自動(dòng)更新也是依賴(lài)于svchost服務(wù)的一個(gè)后臺(tái)應(yīng)用,從而表現(xiàn)為svchost.exe負(fù)載極高。 常發(fā)生這類(lèi)問(wèn)題的機(jī)器一般是上網(wǎng)條件(尤其是去國(guó)外網(wǎng)站)不穩(wěn)定的機(jī)器,比如家里的父母的機(jī)器,往往在安裝機(jī)器幾個(gè)月以后不定期發(fā)生,每個(gè)月的第二個(gè)星期是高發(fā)期:因?yàn)樽罱鼛啄闙S很有規(guī)律的在每個(gè)月的第二個(gè)星期發(fā)布補(bǔ)丁程序)。上面的解決方法并不能保證不重發(fā)作,但是為了svchost文件而每隔幾個(gè)月重裝一次操作系統(tǒng)還是太浪費(fèi)時(shí)間了。 注意點(diǎn): svchost.exe 常被病毒冒充的進(jìn)程名有:svch0st.exe、schvost.exe、scvhost.exe。隨著Windows系統(tǒng)服務(wù)不斷增多,為了節(jié)省系統(tǒng)資源,微軟把很多服務(wù)做成共享方式,交由svchost.exe進(jìn)程來(lái)啟動(dòng)。而系統(tǒng)服務(wù)是以動(dòng)態(tài)鏈接庫(kù)(DLL)形式實(shí)現(xiàn)的,它們把可執(zhí)行程序指向svchost,由svchost調(diào)用相應(yīng)服務(wù)的動(dòng)態(tài)鏈接庫(kù)來(lái)啟動(dòng)服務(wù)。我們可以打開(kāi)“控制面板”→“管理工具”→服務(wù),雙擊其中“ClipBook”服務(wù),在其屬性面板中可以發(fā)現(xiàn)對(duì)應(yīng)的可執(zhí)行文件路徑為“C:\WINDOWS\system32\clipsrv.exe”。再雙擊“Alerter”服務(wù),可以發(fā)現(xiàn)其可執(zhí)行文件路徑為“C:\WINDOWS\system32\svchost.exe -k LocalService”,而“Server”服務(wù)的可執(zhí)行文件路徑為“C:\WINDOWS\system32\svchost.exe -k netsvcs”。正是通過(guò)這種調(diào)用,可以省下不少系統(tǒng)資源,因此系統(tǒng)中出現(xiàn)多個(gè)svchost.exe,其實(shí)只是系統(tǒng)的服務(wù)而已。 在Windows2000系統(tǒng)中一般存在2個(gè)svchost.exe進(jìn)程,一個(gè)是RPCSS(RemoteProcedureCall)服務(wù)進(jìn)程,另外一個(gè)則是由很多服務(wù)共享的一個(gè)svchost.exe;而在WindowsXP中,則一般有4個(gè)以上的svchost.exe服務(wù)進(jìn)程。如果svchost.exe進(jìn)程的數(shù)量多于6個(gè),就要小心了,很可能是病毒假冒的,檢測(cè)方法也很簡(jiǎn)單,使用一些進(jìn)程管理工具,例如Windows優(yōu)化大師的進(jìn)程管理功能,查看svchost.exe的可執(zhí)行文件路徑,如果在“C:\WINDOWS\system32”目錄外,那么就可以判定是病毒了。 svchost.exe病毒清除辦法 1、用unlocker刪除類(lèi)似于C:SysDayN6這樣的文件夾:例如C:Syswm1i、C:SysAd5D等等,這些文件夾有個(gè)共同特點(diǎn),就是名稱(chēng)為 Sys*** (***是三到五位的隨機(jī)字母),這樣的文件夾有幾個(gè)就刪幾個(gè)。 2、開(kāi)始——運(yùn)行——輸入“regedit”——打開(kāi)注冊(cè)表,注冊(cè)表到以下位置: HKEY_CURRENT_USER\Software\Microsoft\Windows\Current\Version\Policies\Explorer\Run 刪除右邊所有用純數(shù)字為名的鍵,如 <66><C:SysDayN6svchost.exe> <333><C:Syswm1isvchost.exe> <50><C:SysAd5Dsvchost.exe> <4><C:SysWsj7svchost.exe> 3、重新啟動(dòng)計(jì)算機(jī),病毒清除完畢。