Page 1

Qu'est-ce que Svchost.exe '

C'est un nom de processus hôte générique pour les services exécutés à partir de DLL. Vous n'avez pas compris ' :-) En français, ça donne ceci :

Explication simple

C'est un processus Windows, au même titre que les autres processus visibles dans le gestionnaire de tâches tels que "explorer.exe", "services.exe" ou "winlogon.exe" mais avec la particularité d'être générique, en effet, il fonctionne en tant qu'hôte pour tous les services exécutés à partir de DLL. Son nom est d'ailleurs assez parlant : svchost que l'on pourrait couper en deux, svc pour services et host pour hôte.


Explication détaillée

Le fichier svchost.exe se trouve dans le répertoire %SystemRoot%\System32. A chaque démarrage de Windows, le processus svchost.exe analyse la section "services" de la base de registre afin d'y construire une liste des services à charger. Plusieurs instances de svchost.exe peuvent être démarrées et ainsi cohabiter ensemble, chacune des ces instances peut contenir un service unique ou un groupe de services.

Si vous êtes currieux, vous pouvez consulter ces groupes de services via la base de registre dans la branche :

HKEY_LOCAL_MACHINE

\Software\Microsoft\WindowsNT\CurrentVersion\Svchost

Image


Chaques valeurs de la clé Svchost représente un groupe de services et par conséquent une instance de svchost.exe, ces groupes apparaissent sous la forme d'instances distinctes lorsque vous affichez les processus actifs, voir la capture d'écran ci-dessous :

Image


Comme vous le constatez, ces instances ne donnent pas le détail précis sur les services en cours d'éxecution, c'est plutôt frustrant. Heureusement qu'il y a un moyen simple de lister l'ensemble des services éxecutés sous le processus svchost.exe, nous allons voir ça un peu plus loin.


Pour identifier les DLL utilisées par ces services, puisque ce sont des services éxecutés à partir de DLL dont il s'agit, il suffit d'aller dans la branche :

HKEY_LOCAL_MACHINE
\System\CurrentControlSet\Services\[nom du service en question]\Parameters


Image


Dans l'exemple ci-dessus, pour le service "Nla" vous verrez la DLL utilisée dans la valeur ServiceDll, en l'occurence ici il s'agit de la DLL mswsock.dll.

Voilà en gros ce qu'il y a à savoir sur svchost.exe. Bon, assez de blabla, passons à la suite...

../..

Page 2

Voici comment faire pour lister les services en cours d'éxecution sous svchost :


Cliquer sur "Démarrer", "Exécuter..." puis taper "cmd" et cliquer sur "OK" pour accéder à l'Invite de commandes. Entrer la commande suivante :

  • tasklist /svc /fi "imagename eq svchost.exe"
    (pour Windows XP et Windows 2003 Serveur uniquement)

  • tlist -s
    (pour Windows 2000, ressource kit nécessaire pour accéder à cette commande)

Image


Ici nous avons 3 colonnes :
  • Nom de l'image : correspond au nom du processus.

  • PID : correspond à l'identifiant du processus (Process IDentifier).

  • Services : correspond aux noms précis des services éxecutés.

Comme vous le voyez, plusieurs services éxecutés sont répertoriés par chaque instance de svchost.exe. Si vous souhaitez avoir l'explication exacte de chacun des services il vous suffit d'aller dans le gestionnaire de services en tapant la commande "services.msc" à partir du menu Démarrer > Executer... et de cliquer sur chaque service un par un pour avoir le descriptif de celui-ci.

Image


Voilà, vous êtes maintenant en mesure d'identifier les groupes de services éxecutés par le processus svchost.exe ainsi que les DLL auxquels ils font appel pour s'éxecuter. Si vous avez le moindre soupçon d'une présence anormale d'une instance svchost.exe, il vous est facile de remonter jusqu'à la DLL pour lever le doute!

Pour un complément d'information, je vous recommande de lire cet article Microsoft (en anglais)
http://support.microsoft.com/'kbid=314056