剖析Windows進程SVCHOST的作用和原理 @ 電腦進階技巧 :: 隨意窩 Xuite日誌
  • 我的日誌列表
  • 留       言      板:訪客可以盡情留下你的意見。
    隨性手札:記錄我的生活、心情、文字、感受的私人天地。
    輕 鬆 過 生 活 :收集FLASH遊戲、趣味影片、笑話、動漫影音等。
    電腦進階技巧 :整理有關各式電腦使用技巧、軟體使用心得、病毒防護、程式寫作、資訊安全等資訊。
  • 關於我?
    閒人一個,工作還好,抽煙不會,
    賭搏不願,女友沒有,
    書是讀一點,琴是會一些,文筆平平,
    長相普普,不高不矮,不胖不瘦,
    缺點不是沒有,優點不會太多!
    這~就是我!

  • AdSense
  • 部落格資訊

  • 200612160939剖析Windows進程SVCHOST的作用和原理
    SVCHOST進程現在是聲名狼藉﹐本來Windows用它來啟動各種服務﹐可是偏偏病毒﹑木馬也想盡辦法來利用它

      SVCHOST進程現在是聲名狼藉﹐本來Windows用它來啟動各種服務﹐可是偏偏病毒﹑木馬也想盡辦法來利用它﹐企圖利用它的特性來迷惑用戶﹐達到感染﹑入侵﹑破壞的目的(如衝擊波變種病毒“W32.Welchia.Worm”)﹐弄的大家草木皆兵一見有SVCHOST就懷疑自己是否已經中招﹐其實Windows系統存在多個SVCHOST進程是很正常的﹐在受感染的機器中到底哪個是病毒進程呢?這裏僅舉一例來敘述。

      假設Windows XP系統被“W32.Welchia.Worm”感染了。正常的SVCHOST檔案存在於“C﹕Windowssystem32”目錄下﹐如果發現該檔案出現在其他目錄下就要小心了。“W32.Welchia.Worm”病毒存在於“C﹕Windowssystem32wins”目錄中﹐因此使用進程管理器查看SVCHOST進程的執行檔案路徑就很容易發現系統是否感染了病毒。Windows系統自帶的任務管理器不能夠查看進程的路徑﹐可以使用第三方進程管理軟體﹐如“Windows優化大師”進程管理器﹐通過這些工具就可很容易地查看到所有的SVCHOST進程的執行檔案路徑﹐一旦發現其執行路徑為不平常的位置就應該馬上進行偵測和處理。

      在基於NT內核的Windows作業系統家族中﹐不同版本的Windows系統﹐存在不同數量的“SVCHOST”進程﹐用戶使用“任務管理器”可查看其進程數目。一般來說﹐Win2000有兩個SVCHOST進程﹐WinXP中則有四個或四個以上的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)服務為例﹐進行講解。實例﹕筆者以Windows XP為例﹐點擊“開始”/“執行”﹐輸入“services.msc”命令﹐彈出服務對話方塊﹐然後打開“Remote Procedure Call”屬性對話方塊﹐可以看到RpcSs服務的可執行檔案的路徑為“C﹕WINDOWSsystem32svchost -k rpcss”﹐這敘述RpcSs服務是依靠SVCHOST呼叫“rpcss”參數來實現的﹐而參數的內容則是存放在系統註冊表中的。

      在執行對話方塊中輸入“regedit.exe”後回車﹐打開註冊表編輯器﹐找到[HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetServicesRpcSs]項﹐找到型式為“REG_EXPAND_SZ”的鍵“magePath”﹐其鍵值為“%SystemRoot%system32svchost -k rpcss”(這就是在服務窗口中看到的服務啟動命令)﹐另外在“Parameters”子項中有個名為“ServiceDll”的鍵﹐其值為“%SystemRoot%system32rpcss.dll”﹐其中“rpcss.dll”就是rpcss服務要使用的動態鏈接庫檔案。這樣SVCHOST進程通過讀取“RpcSs”服務註冊表資訊﹐就能啟動該服務了

    簡簡單單小方法 幫你防止USB...|日誌首頁|用.VBS腳本檔修改註冊表.....上一篇簡簡單單小方法 幫你防止USB碟中毒...下一篇用.VBS腳本檔修改註冊表...
    回應