svchost.exe

 

 

작업관리자를 보면 svchost.exe프로세스가 다수 실행되어 있는 것을 볼 수 있습니다.

네이버나 기타 검색사이트에서 검색해보면

"svchost.exe가 여러개 떠 있다."
"svchost.exe가 cpu를 100% 잡아 먹는다"
라는 질문들을 많이 볼수 있습니다.

그럼 svchost.exe는 악성코드나 바이러스 같은 것일까요?
아닙니다. svchost.exe는 MS Windows의 시스템 프로세스중의 하나입니다.


전문적인 지식은 없지만, 위에 언급한 svchost.exe관련 문제는 svchost.exe자체의 문제라기 보다는 svchost.exe 이용(악용)한 바이이러스나 악성코드 때문이라고 볼 수 있을것 같습니다.


이 그럼 프로세스는 무슨 역할을 하는 것일까요?

svchost.exe의 속성을 한번 살펴보겠습니다.

 

"Host Process for Windows Services"라고 되어 있네요.

말그대로 Dll로 구현된 윈도우즈 서비스를 호스팅 하는 시스템 프로세스입니다.

프로그래밍 관점에서 보자면 svchost.exe "인자로 전달된 서비스에 대해, 관련 서비스가 구현된 Dll을 로드하여 해당 모듈의 ServiceMain()을 호출 해 준다"라고 생각하면 이해가 편할 듯 합니다.

 

그럼 실제로 어떤 식으로 구동되어 있는지 확인해 보겠습니다.

n  Process Explore를 이용해 svchost.exe가 호스팅 하고 있는 서비스들을 손쉽게 확인해 볼 수 있습니다.
아래의 이미지처럼 말이죠.
C:\Windows\system32\svchost.exe -k RPCSS

 

n  Services 탭에서 좀더 자세한 정보도 볼수 있습니다.(실제 서비스가 구현된 Dll정보도 볼수 있군요)
그리고 보시는 것처럼 한 개의 scvhost.exe에서 한 개 이상의 서비스를 호스팅 하고 있는 경우도 있습니다.
 


아래의 링크에 추가적인 정보가 있으니 참고하시기 바랍니다.


-------------------------------------------------------------------------------------------------------------------------------
 

http://support.microsoft.com/kb/314056


Svchost.exe 파일은 %SystemRoot%\System32 폴더에 있습니다. Svchost.exe는 시작할 때 레지스트리의 서비스 부분을 확인하여 로드해야 하는 서비스 목록을 구성합니다. 여러 개의 Svchost.exe 인스턴스가 동시에 실행될 수 있습니다. 각 Svchost.exe 세션마다 서비스 그룹을 포함할 수 있으므로 Svchost.exe가 시작되는 방법과 위치에 따라 각각 다른 서비스가 실행될 수 있습니다. 이러한 서비스 그룹을 통해 더 효과적으로 제어하고 더 쉽게 디버깅할 수 있습니다.

Svchost.exe 그룹은 다음 레지스트리 키에서 식별됩니다.
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost
이 키의 각 값은 별도의 Svchost 그룹을 나타내며 활성 프로세스를 볼 때 별도의 인스턴스로 표시됩니다. 각 값은 REG_MULTI_SZ 값에 해당하며 해당 Svchost 그룹 하에서 실행되는 서비스를 포함하고 있습니다. 각 Svchost 그룹은 Parameters 키에 ServiceDLL 값이 들어 있는 다음 레지스트리 키에서 추출되는 서비스 이름을 하나 이상 포함할 수 있습니다.
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Service
Svchost에서 실행 중인 서비스의 목록을 보려면 다음과 같이 하십시오.
  1. Windows 작업 표시줄의 시작을 누른 다음 실행을 누릅니다.
  2. 열기 상자에 CMD를 입력한 다음 Enter 키를 누릅니다.
  3. Tasklist /SVC를 입력한 다음 Enter 키를 누릅니다.
Tasklist는 활성 프로세스의 목록을 표시합니다. /SVC 스위치는 각 프로세스의 활성 서비스 목록을 표시합니다. 프로세스에 대한 자세한 내용을 보려면 다음 명령을 입력한 후 Enter 키를 누릅니다.
Tasklist /FI "PID eq processID"(따옴표 포함)
다음 Tasklist 예제 출력은 실행 중인 Svchost.exe의 두 인스턴스를 보여 줍니다.
   Image Name         PID      Services
   ======================================================================== 
   System Process        0     N/A
   System                8     N/A    
   Smss.exe            132     N/A
   Csrss.exe           160     N/A
   Winlogon.exe        180     N/A
   Services.exe        208     AppMgmt,Browser,Dhcp,Dmserver,Dnscache,
                               Eventlog,LanmanServer,LanmanWorkstation,
                               LmHosts,Messenger,PlugPlay,ProtectedStorage,
                               Seclogon,TrkWks,W32Time,Wmi
   Lsass.exe            220    Netlogon,PolicyAgent,SamSs 
   Svchost.exe          404    RpcSs 
   Spoolsv.exe          452    Spooler 
   Cisvc.exe            544    Cisvc 
   Svchost.exe          556    EventSystem,Netman,NtmsSvc,RasMan,
                               SENS,TapiSrv 
   Regsvc.exe           580    RemoteRegistry 
   Mstask.exe           596    Schedule 
   Snmp.exe             660    SNMP 
   Winmgmt.exe          728    WinMgmt 
   Explorer.exe         812    N/A
   Cmd.exe             1300    N/A
   Tasklist.exe        1144    N/A
				
이 예제의 두 그룹에 대한 레지스트리 설정은 다음과 같습니다.
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost:
Netsvcs: Reg_Multi_SZ: EventSystem Ias Iprip Irmon Netman Nwsapagent Rasauto Rasman Remoteaccess SENS Sharedaccess Tapisrv Ntmssvc
RApcss :Reg_Multi_SZ: RpcSs





+ Recent posts