최근 수정 시각 : 2024-09-14 20:27:46

svchost.exe

1. 개요2. 상세3. 문제점4. 여담5. 관련 문서

1. 개요

Windows NT에서 백그라운드 서비스들을 처리하기 위한 포괄적인 호스트 프로세스이다. 따라서 Windows 9x 계열에서는 존재하지 않는다.

Windows NT는 백그라운드에서 실행되는 각종 서비스가 존재한다.[1] 이들 중 별도의 실행파일로 분리되어 있지 않은 서비스[2]의 실행을 svchost.exe가 맡는다. 때문에 실행되는 svchost.exe 프로세스의 수가 상당히 많다.

중요한 시스템 서비스를 실행하고 있는 경우가 대부분이므로 강제 종료는 권장되지 않는다.

2. 상세

svchost.exe는 독립적인 프로세스로 실행하는 다른 서비스와 달리 인자로 전달된 서비스의 구현된 DLL 파일을 로드하여 해당 DLL의 ServiceMain 함수를 호출한다.

따라서 독립적인 프로세스로 실행되지 않는 서비스들은 기능이 구현되어 있는 DLL 파일을 가지고 있으며 svchost.exe가 이러한 파일을 로드하여 동작한다.

svchost.exe 그룹은 레지스트리 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost에서 구분되어 있다.

3. 문제점

실행되는 svchost.exe 프로세스 수가 많아서[3] 일부 악성코드는 시스템 프로세스로 위장하기 위해 파일 이름을 svchost.exe으로 하는 경우 있으며 몇몇은 파일 이름을 svchoost.exe나 svshost.exe같은 유사한 것로 해서 시스템 폴더에 넣어버린다. 즉 시스템 프로세스로 위장하는 데 svchost.exe가 적합하다는 것.

다만 진짜 svchost.exe는 서비스 컨트롤 프로그램인 services.exe 으로부터 실행된다. 따라서 위장 프로그램은 services.exe 의해 실행될 리가 없기에 확인할 수 있다.

또한 진짜 svchost.exe는 System32 폴더와 SysWOW64 폴더에만 존재하므로, 이 외의 폴더에 존재하는 svchost.exe는 전부 가짜다. 예를 들어 컴퓨터 바이러스 중 하나인 Win32/Jeefo 의 경우 C:\\Windows에 바이러스 코드가 담긴 가짜 svchost.exe를 만들어서 실행시킨다.

그것 외에는 일부 svchost.exe의 CPU 사용률이 100%가 되는 문제가 있기도 한다. Windows 업데이트의 경우 서비스로 동작하는데. 업데이트 설치 중에 메모리와 CPU 사용률이 높아진다.

4. 여담

Windows 10 14942 빌드부터 서비스 비그룹화 기능이 추가되었는데. 실제 컴퓨터 메모리 용량이 3.5GB 이상일 경우 서비스 비그룹화가 된다. 서비스 비그룹화가 된 경우 svchost.exe 프로세스의 수가 상당히 많아진다. 비그룹화하는 이유에는 안정성 향상, 향상된 투명성, 서비스 비용 절감, 보안 강화 등이 있다. 3.5GB 이상이어도 그룹화 상태를 유지하고 싶다면 레지스트리를 조작해야 한다. 방법

svchost.exe 프로세스 중 몇몇은 크리티컬 프로세스로 지정되어 있어 강제로 종료시키면 블루스크린이 발생한다.

5. 관련 문서


[1] 이 중에서 프로그램이 아닌 드라이버 서비스도 존재하는데 services.msc에서 확인할 수 없고 서드파티 프로그램에서만 드라이버 서비스를 볼 수 있다. [2] 주로 운영체제의 핵심 기능을 담당하는 서비스이다. [3] 파일:svchost.png 빨간색 네모 안에 있는 프로그램들이 전부 다 svchost 이다. 그리고 이게 다가 아니고 밑에 더 많다!