当前位置: 首页 > 图文教程 > 操作系统 > Windows > Svchost进程揭秘

Windows
Windows操作系统31招快速修复技巧(下)
Windows XP桌面故障的解决方案
Windows几个常见故障的解决方法
Windows系统故障快速解决技巧
Windows XP故障解决常用套路
Windows XP常见故障诊断思路
系统资源不足时该怎么办?
EFS加密技巧让数据更安全
改装Windows XP操作系统的外观
详细介绍Windows的登录类型
Windows使用记录自动清除
不用重装XP系统就可以解决全部故障
任务管理器删除无法删除的文件
XP启动失败后的十个补救措施
关闭Windows系统更新提醒
Vista时代即将开始,XP退出舞台
无线网络连接故障的处理方法
制作百毒不侵的Windows系统
Windows XP中如何能做工到瘦身和加速
为什么XP SP3不支持Windows XP?

Windows 中的 Svchost进程揭秘


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 32 ::
收藏到网摘: n/a

 

  在基于NT内核的Windows操作系统家族中,Svchost.exe是一个非常重要的进程。很多病毒、木马驻留系统与这个进程密切相关,因此深入了解该进程是非常有必要的。本文主要介绍Svchost进程的功能,以及与该进程相关的知识。

  Svchost进程概述

  微软对“Svchost进程”的定义是:Svchost.exe是从动态链接库(DLL)中运行的服务的通用主机进程名称。Svchost.exe文件位于“%SystemRoot%\System32”文件夹中。当系统启动时,Svchost将检查注册表中的服务部分,以构建需要加载的服务列表。Svchost的多个实例可以同时运行。每个Svchost会话可以包含一组服务,以便根据Svchost的启动方式和位置的不同运行不同的服务,这样可以更好地进行控制且更加便于调试。

  Svchost组是由注册表[HKEY_LOCAL_MACHINE\ Software\Microsoft\Windows NT\CurrentVersion\Svchost]项来识别的。在这个注册表项下的每个值都代表单独的Svchost组,并在我们查看活动进程时作为单独的实例显示。这里的键值均为REG_MULTI_SZ类型的值,并且包含该Svchost组里运行的服务名称(如图1)。

 


  图1 注册表中的Svchost


  实际上,Svchost只是作为服务的宿主,本身并不实现什么功能。如果需要使用Svchost来启动某个DLL形式实现的服务,该DLL的载体Loader指向Svchost,在启动服务的时候由Svchost调用该服务的DLL来实现启动的目的。使用Svchost启动某个服务的DLL文件是由注册表中的参数来决定的,在需要启动服务的注册表项下都有一个“Parameters”子项,其中的“ServiceDll”键值表明该服务由哪个DLL文件负责,并且这个DLL文件必须导出一个ServiceMain()函数,为处理服务任务提供支持。

  提示:不同版本的Windows系统,存在不同数量的Svchost进程。一般来说,Windows 2000有两个Svchost进程,而Windows XP则有四个或四个以上的Svchost进程。

  Svchost进程实例讲解

  要想查看在Svchost中运行服务的列表,可以在Windows XP命令提示符窗口中输入“Tasklist /svc”命令后,回车执行(如果使用的是Windows 2000,可用Support Tools提供的Tlist工具查看,命令为“Tlist -s”)。Tasklist命令显示活动进程的列表,/svc命令开关指定显示每个进程中活动服务的列表。从图中可以看到,Svchost进程启动很多系统服务,如:RpcSs(Remote Procedure Call)、Dhcp(DHCP Client)、Netman(Network Connections)服务等等(如图2)。

 


  图2 Svchost的服务列表


  这里我们以RpcSs服务为例,来具体了解一下Svchost进程与服务的关系。运行Regedit,打开注册表编辑器,依次展开[HKEY_LOCAL_MACHINE\SYSTEM\

  CurrentControlSet\Services\RpcSs ]分支,在“Parameters”子项中有个名为“ServiceDll”的键,其值为“%SystemRoot%\system32\rpcss.dll”。这表示系统启动RpcSs服务时,调用“%SystemRoot%\system32”目录下的Rpcss.dll动态链接库文件。



  接下来,从控制面板中依次双击“管理工具→服务”,打开服务控制台。在右侧窗格中双击“Remote Procedure Call(RPC)”服务项,打开其属性对话框,可以看到RpcSs服务的可执行文件的路径为“C:\Windows\system32\svchost -k rpcss”,这说明RpcSs服务是依靠Svchost启动的,“-k rpcss”表示此服务包含在Svchost的Rpcss服务组中。

 


  图3 Svchost进程中的模块信息



  Svchost进程木马浅析

  从前面的介绍我们已经知道,在注册表[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current- Version\Svchost]分支中,存放着Svchost启动的组和组内的各项服务,很多木马和病毒正是利用这一点来实现自动加载的。它们通常的方法有:

  · 添加一个新的组,在组里添加服务名;

  · 在现有的组里添加服务名或者利用现有组一个未安装的服务;

  · 修改现有组里的服务,将它的ServiceDll指向自己的DLL文件。

  例如PortLess BackDoor就是一款典型的利用Svchost进程加载的后门工具。那么对于像PortLess BackDoor这样的木马、病毒,该如何检测并清除呢?以Windows XP为例,首先我们可以利用“进程间谍”这样的进程工具查看Svchost进程中的模块信息(如图3),并与之前的模块信息比较,可以发现Svchost进程中有一个可疑的DLL文件“SvchostDLL.dll”。同时,在“管理工具→服务”列表中会看到一项新的服务“Intranet Services”(显示名称),此服务名称为:Iprip,由Svchost启动,“-k netsvcs”表示此服务包含在Netsvcs服务组中。

  提示: