網際論壇 - 硬體技術交流 - [知識]揭開 svchost.exe 程序之謎
» 遊客:  註冊 | 登錄 | 會員 | 幫助
 

免費線上小說
動漫分類 : 最新上架熱門連載全本小說最新上架玄幻奇幻都市言情武俠仙俠軍事歷史網游競技科幻靈異 ... 更多小說

<<  [1] [2] [3] [4] [5] [6] [7]  >>
作者:
標題: [知識]揭開 svchost.exe 程序之謎 取消高亮 | 上一主題 | 下一主題
  purple
  白金會員 
  觀人於言/觀人於後/多言不如 ...


 
  積分 31589
  發文 1869
  註冊 2005-9-4
  來自 偷得浮生半日閒~
  狀態 離線
#1  [知識]揭開 svchost.exe 程序之謎

謝謝轉貼.轉的很好!我又多懂一些新資訊了!給你加5分獎勵===sodown

揭開 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文件的調用路徑可以通過「系統訊息→軟體環境→正在運行任務」來查看

討論

並不是啟動一個相關服務就多一個svchost程序的,而是根據命令參數分組,一般是一組服務就有一個svchost程序,如TT舉例的那個c:\windows\system32\svchost -k rpcss,這個屬於rpcss組。


說明解疑對Svchost的困惑

Svchost.exe文件對那些從動態連接庫中運行的服務來說是一個普通的主機進程名。Svhost.exe文件定位在系統的%systemroot%\system32文件夾下。在啟動的時候,Svchost.exe檢查註冊表中的位置來構建需要加載的服務列表。這就會使多個Svchost.exe在同一時間運行。每個Svchost.exe的回話期間都包含一組服務,以至於單獨的服務必須依靠Svchost.exe怎樣和在那裡啟動。這樣就更加容易控制和查找錯誤。
.
SVCHOST\.exe 組是用下面的註冊表值來識別。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost
每個在這個鍵下的值代表一個獨立的Svchost組,並且當你正在看活動的進程時,它顯示作為一個單獨的例子。每個鍵值都是REG_MULTI_SZ類型的值而且包括運行在Svchost組內的服務。每個Svchost組都包含一個或多個從註冊表值中選取的服務名,這個服務的參數值包含了一個ServiceDLL值。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Service
.
.
更多的信息
.
為了能看到正在運行在Svchost列表中的服務。
開始-運行-敲入cmd
然後在敲入 tlist -s (tlist 應該是win2k工具箱裡的東東)
Tlist 顯示一個活動進程的列表。開關 -s 顯示在每個進程中的活動服務列表。如果想知道更多的關於進程的信息,可以敲 tlist pid。
Tlist 顯示Svchost.exe運行的兩個例子。
0 System Process
8 System
132 smss.exe
160 csrss.exe Title:
180 winlogon.exe Title: NetDDE Agent
208services.exe
Svcs: AppMgmt,Browser,Dhcp,dmserver,Dnscache,Eventlog,lanmanserver,LanmanWorkst
ation,LmHosts,Messenger,PlugPlay,ProtectedStorage,seclogon,TrkWks,W32Time,Wmi
220 lsass.exe Svcs: Netlogon,PolicyAgent,SamSs
404 SVCHOST\.exe Svcs: RpcSs
452 spoolsv.exe Svcs: Spooler
544 cisvc.exe Svcs: cisvc
556 SVCHOST\.exe Svcs: EventSystem,Netman,NtmsSvc,RasMan,SENS,TapiSrv
580 regsvc.exe Svcs: RemoteRegistry
596 mstask.exe Svcs: Schedule
660 snmp.exe Svcs: SNMP
728 winmgmt.exe Svcs: WinMgmt
852 cidaemon.exe Title: OleMainThreadWndName
812 explorer.exe Title: Program Manager
1032 OSA.EXE Title: Reminder
1300 cmd.exe Title: D:\WINNT5\System32\cmd.exe - tlist -s
1080 MAPISP32.EXE Title: WMS Idle
1264 rundll32.exe Title:
1000 mmc.exe Title: Device Manager
1144 tlist.exe
在這個例子中註冊表設置了兩個組。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost:
netsvcs: Reg_Multi_SZ: EventSystem Ias Iprip Irmon Netman Nwsapagent RasautoRa
sman Remoteaccess SENS Sharedaccess Tapisrv Ntmssvc
rpcss :Reg_Multi_SZ: RpcSs
smss.exe
csrss.exe
這個是用戶模式Win32子系統的一部分。csrss代表客戶/服務器運行子系統而且是一個基本的子系統必須一直運行。csrss 負責控制windows,創建或者刪除線程和一些16位的虛擬MS-DOS環境。

以上資訊希望對你有所幫助..^_^
TCG加註:看完這篇文章,也更瞭解Svchost,真是獲益匪淺,TCG加你10分鼓勵。       

[ Last edited by sodown on 2006-4-23 at 09:49 PM ]




2005-11-28 06:11 PM
查看資料  發短消息   編輯文章  引用回覆
  peetan01
  基本會員 
 



  積分 69
  發文 5
  註冊 2006-1-12
  狀態 離線
#2  

so good~THANK YOU VERY MUCH!1

2006-4-1 10:57 AM
查看資料  發短消息   編輯文章  引用回覆
  小楠
  VIP會員 
 


  積分 1897
  發文 25
  註冊 2005-9-5
  來自 天堂人間地獄
  狀態 離線
#3  

原來是這樣,真是太謝謝大大講解的這樣的詳細

2006-4-1 10:29 PM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  goin
  資深會員 
 


  積分 3272
  發文 276
  註冊 2005-12-14
  來自 高雄
  狀態 離線
#4  

3Q再3Q、感謝再感謝



【GOIN 勾引你】 http://goin.24cc.cc/
2006-4-3 10:04 AM
查看資料  訪問主頁  發短消息   編輯文章  引用回覆
  貓浮
  資深會員 
  寵愛貓的貓奴


 
  積分 5118
  發文 292
  註冊 2005-9-5
  來自 逐浪大學炭燒系
  狀態 離線
#5  

好文章值得推薦給大家看
謝謝您的分享
受用不盡




我的部落格
2006-4-3 03:37 PM
查看資料  發送郵件  訪問主頁  發短消息  QQ   編輯文章  引用回覆
  阿伯
  資深會員 
 


  積分 3487
  發文 445
  註冊 2005-9-5
  來自 DeepOcean
  狀態 離線
#6  

感謝大大的分享!

2006-4-3 06:16 PM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  yayalu
  一般會員 
 



  積分 496
  發文 20
  註冊 2006-4-7
  狀態 離線
#7  

原來是這樣,真是太謝謝大大講解的這樣的詳細

2006-4-9 09:05 PM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  WUWM
  進階會員 
 



  積分 1785
  發文 190
  註冊 2005-9-5
  來自 THAI
  狀態 離線
#8  

NICE SHARING

2006-4-27 09:28 AM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  771459
  一般會員 
 


  積分 436
  發文 33
  註冊 2005-9-7
  狀態 離線
#9  

感謝分享
還是頭暈暈^^


2006-4-30 10:09 PM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  zero0681
  一般會員 
 


  積分 514
  發文 61
  註冊 2006-1-31
  狀態 離線
#10  

so ga....

難怪在幫人家灌防毒軟體的時候怎麼老是看到這個檔案中毒.....

= =....原來是這樣呀。

感謝大大提供的知識分享......推


2006-5-10 12:04 AM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  bookwork2002
  一般會員 
 



  積分 524
  發文 22
  註冊 2006-3-15
  來自 台北縣
  狀態 離線
#11  

文章值得推薦給大家看
謝謝您的分享
受用不盡


2006-5-19 11:28 AM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  tsolmmm
  一般會員 
 



  積分 329
  發文 32
  註冊 2005-9-18
  狀態 離線
#12  

令我眼界大開...&curren;0&curren;

2006-5-19 12:25 PM
查看資料  發短消息   編輯文章  引用回覆
  lanpo123
  中級會員 
 



  積分 828
  發文 145
  註冊 2005-9-8
  來自 Taiwan
  狀態 離線
#13  

very useful information! Thank you for your sharing.

2006-6-1 08:19 PM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  gary694
  一般會員 
 



  積分 502
  發文 18
  註冊 2005-9-26
  狀態 離線
#14  

謝謝你的說明

2006-6-8 10:06 PM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  pearson362
  一般會員 
 



  積分 507
  發文 45
  註冊 2005-9-7
  狀態 離線
#15  

這個資訊蠻有用的...感謝

2006-6-12 09:47 PM
查看資料  發短消息   編輯文章  引用回覆
  hodgkinson
  基本會員 
 



  積分 94
  發文 6
  註冊 2006-5-7
  狀態 離線
#16  

學海無涯阿....謝謝分享

2006-6-20 07:52 PM
查看資料  發短消息   編輯文章  引用回覆
  fm06
  資深會員 
 


  積分 4493
  發文 536
  註冊 2005-10-20
  來自 蓬萊仙島
  狀態 離線
#17  

感謝大大的努力分享好友用的知識
謝謝你


2006-7-3 09:19 AM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  chuli
  進階會員 
 



  積分 2349
  發文 374
  註冊 2005-9-7
  狀態 離線
#18  

感謝大大的分享!!!!!!

2006-7-5 06:37 PM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
  森林小蜜蜂
  資深會員 
 



  積分 5759
  發文 311
  註冊 2005-9-9
  狀態 離線
#19  

感謝您的分享

2006-7-7 01:32 AM
查看資料  發短消息   編輯文章  引用回覆
  rhian
  VIP會員 
 


 
  積分 7363
  發文 198
  註冊 2006-5-10
  來自 台灣
  狀態 離線
#20  

謝謝大大的分享,講的很詳細,也進去這些目錄看了,實在是洋洋灑灑一大篇,很棒的知識

2006-7-8 08:54 PM
查看資料  發送郵件  發短消息   編輯文章  引用回覆
<<  [1] [2] [3] [4] [5] [6] [7]  >>

可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題

論壇跳轉選單: