当前位置: 首页 > 图文教程 > 操作系统 > Windows > Svchost.exe进程的功能以及相关知识大揭秘

Windows
轻松跨越Windows Server 2008远程管理障碍
一切为了效率 Windows Server 2008操作新招
Windows Server 2008搭建终端服务器
Windows Server 2008网络安全与终端服务
层层深入 拨开Windows Server 2008系统谜雾
清除Vista 系统休眠文件的方法
修改远程桌面端口提高Windows Vista系统安全性
XP安装IIS,找不到zClientm.exe的解决办法
操作系统更安全稳定的电脑使用方法
Vista 系统组策略的神秘世界
Vista SP2 更新和升级常见问题和解决方案
禁用Windows Vista的本地搜索历史记录
解决Windows Vista/7下安装程序冲突问题
Windows Live Messenger 2009 - 双开不再是难题
Windows XP/Vista/Windows 7常见蓝屏故障分析
自己动手解决微软ActiveX安全隐患
一条命令轻松解决中文Vista却出现英文启动项菜单
Windows Themes外观视觉样式故障汇总
让Vista中的Media Center 支持更多文件格式及文件夹
巧用命令一次关闭Vista下多个IE8进程

Windows 中的 Svchost.exe进程的功能以及相关知识大揭秘


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

  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服务组中。

  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服务组中。