揭開 svchost.exe 程序之謎

揭開 svchost.exe 程序之謎

svchos.exe是 NT 核心系統的非常重要的程序,對於2000、XP 來說,不可或缺。很多病毒、木馬也會使用它。所以,深入了解這個程式,是玩電腦的必修課之一。

大家對 Windows作業系統一定不陌生,但你是否注意到系統中“svchost.exe”這個文件呢?細心的朋友會發現 Windows中存在多個 “svchost”程序(通過“ctrl+alt+del”鍵打開工作管理員,這裡的“處理程序”標籤中就可看到了),為什麼會這樣呢?下面就來揭開它神 秘的面紗。

發現

在基於 NT 核心的 Windows作業系統家族中,不同版本的 Windows系統,存在不同數量的“svchost”程序,用戶使用“工作管理員”可查看其程序數目。一般來說,win2000有兩個svchost程 序,Windows XP中則有四個或四個以上的svchost程序(以後看到系統中有多個這種程序,千萬別立即判定系統有病毒了喲),而win2003 server中則更多。這些svchost程序提供很多系統服務,如:rpcss服務(remote procedure call)、dmserver服務(logical disk manager)、dhcp服務(dhcp client)等。

如果要了解每個svchost程序到底提供了多少系統服務,可以在win2000的命令提示符窗口中輸入“tlist -s”命令來查看,該命令是win2000 support tools提供的。在winxp則使用“tasklist /svc”命令。

svchost中可以包含多個服務

深入

windows系統程序分為獨立程序和共用程序兩種,“svchost.exe”文件存在於“%systemroot%\system32”目錄下,它屬 於共用程序。隨著windows系統服務不斷增多,為了節省系統資源,微軟把很多服務做成共用方式,交由 svchost.exe程序來啟動。但svchost程序只作為服務宿主,並不能實現任何服務功能,即它只能提供條件讓其他服務在這裡被啟動,而它自己卻 不能給用戶提供任何服務。那這些服務是如何實現的呢?

原來這些系統服務是以動態鏈結庫(dll)形式實現的,它們把可執行程式指向 svchost,由svchost調用相應服務的動態鏈結庫來啟動服務。那svchost又怎麼知道某個系統服務該調用哪個動態鏈結庫呢?這是通過系統服 務在註冊表中設置的參數來實現。下面就以rpcss(remote procedure call)服務為例,進行講解。

從啟動參數中可見服務是靠svchost來啟動的。

實例

以windows xp為例,點擊“開始”/“執行”,輸入“services.msc”命令,彈出服務對話方塊,然後打開“remote procedure call”屬性對話方塊,可以看到rpcss服務的可執行文件的路徑為“c:\windows\system32\svchost -k rpcss”,這說明rpcss服務是依靠svchost調用“rpcss”參數來實現的,而參數的內容則是存放在系統註冊表中的。

在執行對話方塊中輸入“regedit.exe”後執行,打開註冊表編輯器,找到[hkey_local_machine\ system\currentcontrolset\services\rpcss]項,找到類型為“reg_expand_sz”的鍵 “magepath”,其鍵值為“%systemroot\%system32\svchost -k rpcss”(這就是在服務窗口中看到的服務啟動命令),另外在“parameters”子項中有個名為“servicedll”的鍵,其值為“% systemroot\%system32\rpcss.dll”,其中“rpcss.dll”就是rpcss服務要使用的動態鏈結庫文件。這樣 svchost程序通過讀取“rpcss”服務註冊表資訊,就能啟動該服務了。

解惑
(關於svchost懷疑感染到病毒,可循下列方式查詢)-提供給受感染網友參考...
因為svchost程序啟動各種服務,所以病毒、木馬也想盡辦法來利用它,企圖利用它的特性來迷惑用戶,達到 感染、入侵、破壞的目的(如衝擊波變種病毒“w32.welchia.worm”)。但windows系統存在多個svchost程序是很正常的,在受感 染的機器中到底哪個是病毒程序呢?這裡僅舉一例來說明。

假設windows xp系統被“w32.welchia.worm”感染了。正常的svchost文件存在於“c:\windows\system32”目錄下,如果發現該 文件出現在其他目錄下就要小心了。“w32.welchia.worm”病毒存在於“c:\windows\system32\wins”目錄中,因此使 用程序管理器查看svchost程序的執行文件路徑就很容易發現系統是否感染了病毒。windows系統自帶的工作管理員不能夠查看程序的路徑,可以使用 第三方程序管理軟體,如“windows優化大師”程序管理器,通過這些工具就可很容易地查看到所有的svchost程序的執行文件路徑,一旦發現其執行 路徑為不平常的位置就應該馬上進行檢測和處理。

由於篇幅的關係,不能對svchost全部功能進行詳細介紹,這是一個windows中的一個特殊程序,有興趣的可參考有關技術資料進一步去了解它。

提示:svchost.exe文件的調用路徑可以通過「系統訊息→軟體環境→正在運行任務」來查看

沒有留言:

張貼留言