svchost.exe是nt核心系統的非常重要的進(jìn)程,對于2000、xp來(lái)說(shuō),不可或缺。很多病毒、木馬也會(huì )調用它。所以,深入了解這個(gè)程序,是玩電腦的必修課之一。
大家對windows操作系統一定不陌生,但你是否注意到系統中“svchost.exe”這個(gè)文件呢?細心的朋友會(huì )發(fā)現windows中存在多個(gè)“svchost”進(jìn)程(通過(guò)“ctrl+alt+del”鍵打開(kāi)任務(wù)管理器,這里的“進(jìn)程”標簽中就可看到了),為什么會(huì )這樣呢?下面就來(lái)揭開(kāi)它神秘的面紗。
發(fā)現
在基于nt內核的windows操作系統家族中,不同版本的windows系統,存在不同數量的“svchost”進(jìn)程,用戶(hù)使用“任務(wù)管理器”可查看其進(jìn)程數目。一般來(lái)說(shuō),win2000有兩個(gè)svchost進(jìn)程,winxp中則有四個(gè)或四個(gè)以上的svchost進(jìn)程(以后看到系統中有多個(gè)這種進(jìn)程,千萬(wàn)別立即判定系統有病毒了喲),而win2003server中則更多。這些svchost進(jìn)程提供很多系統服務(wù),如:rpcss服務(wù)(remoteprocedurecall)、dmserver服務(wù)(logicaldiskmanager)、dhcp服務(wù)(dhcpclient)等。
如果要了解每個(gè)svchost進(jìn)程到底提供了多少系統服務(wù),可以在win2000的命令提示符窗口中輸入“tlist-s”命令來(lái)查看,該命令是win2000supporttools提供的。在winxp則使用“tasklist/svc”命令。
svchost中可以包含多個(gè)服務(wù)
深入
windows系統進(jìn)程分為獨立進(jìn)程和共享進(jìn)程兩種,“svchost.exe”文件存在于“%systemroot%system32”目錄下,它屬于共享進(jìn)程。隨著(zhù)windows系統服務(wù)不斷增多,為了節省系統資源,微軟把很多服務(wù)做成共享方式,交由svchost.exe進(jìn)程來(lái)啟動(dòng)。但svchost進(jìn)程只作為服務(wù)宿主,并不能實(shí)現任何服務(wù)功能,即它只能提供條件讓其他服務(wù)在這里被啟動(dòng),而它自己卻不能給用戶(hù)提供任何服務(wù)。那這些服務(wù)是如何實(shí)現的呢?
原來(lái)這些系統服務(wù)是以動(dòng)態(tài)鏈接庫(dll)形式實(shí)現的,它們把可執行程序指向svchost,由svchost調用相應服務(wù)的動(dòng)態(tài)鏈接庫來(lái)啟動(dòng)服務(wù)。那svchost又怎么知道某個(gè)系統服務(wù)該調用哪個(gè)動(dòng)態(tài)鏈接庫呢?這是通過(guò)系統服務(wù)在注冊表中設置的參數來(lái)實(shí)現。下面就以rpcss(remoteprocedurecall)服務(wù)為例,進(jìn)行講解。
從啟動(dòng)參數中可見(jiàn)服務(wù)是靠svchost來(lái)啟動(dòng)的。
實(shí)例
以windowsxp為例,點(diǎn)擊“開(kāi)始”/“運行”,輸入“services.msc”命令,彈出服務(wù)對話(huà)框,然后打開(kāi)“remoteprocedurecall”屬性對話(huà)框,可以看到rpcss服務(wù)的可執行文件的路徑為“c:\windows\system32\svchost-krpcss”,這說(shuō)明rpcss服務(wù)是依靠svchost調用“rpcss”參數來(lái)實(shí)現的,而參數的內容則是存放在系統注冊表中的。
在運行對話(huà)框中輸入“regedit.exe”后回車(chē),打開(kāi)注冊表編輯器,找到[hkey_local_machinesystemcurrentcontrolsetservicesrpcss]項,找到類(lèi)型為“reg_expand_sz”的鍵“magepath”,其鍵值為“%systemroot%system32svchost-krpcss”(這就是在服務(wù)窗口中看到的服務(wù)啟動(dòng)命令),另外在“parameters”子項中有個(gè)名為“servicedll”的鍵,其值為“%systemroot%system32rpcss.dll”,其中“rpcss.dll”就是rpcss服務(wù)要使用的動(dòng)態(tài)鏈接庫文件。這樣svchost進(jìn)程通過(guò)讀取“rpcss”服務(wù)注冊表信息,就能啟動(dòng)該服務(wù)了。
解惑
因為svchost進(jìn)程啟動(dòng)各種服務(wù),所以病毒、木馬也想盡辦法來(lái)利用它,企圖利用它的特性來(lái)迷惑用戶(hù),達到感染、入侵、破壞的目的(如沖擊波變種病毒“w32.welchia.worm”)。但windows系統存在多個(gè)svchost進(jìn)程是很正常的,在受感染的機器中到底哪個(gè)是病毒進(jìn)程呢?這里僅舉一例來(lái)說(shuō)明。
假設windowsxp系統被“w32.welchia.worm”感染了。正常的svchost文件存在于“c:\windows\system32”目錄下,如果發(fā)現該文件出現在其他目錄下就要小心了?!皐32.welchia.worm”病毒存在于“c:\windows\system32wins”目錄中,因此使用進(jìn)程管理器查看svchost進(jìn)程的執行文件路徑就很容易發(fā)現系統是否感染了病毒。windows系統自帶的任務(wù)管理器不能夠查看進(jìn)程的路徑,可以使用第三方進(jìn)程管理軟件,如“windows優(yōu)化大師”進(jìn)程管理器,通過(guò)這些工具就可很容易地查看到所有的svchost進(jìn)程的執行文件路徑,一旦發(fā)現其執行路徑為不平常的位置就應該馬上進(jìn)行檢測和處理。
由于篇幅的關(guān)系,不能對svchost全部功能進(jìn)行詳細介紹,這是一個(gè)windows中的一個(gè)特殊進(jìn)程,有興趣的可參考有關(guān)技術(shù)資料進(jìn)一步去了解它。
聯(lián)系客服