从Windows NT操作系统开始,svchost.exe进程就作为一个能够承载多个Windows服务的系统进程存在(svchost在Windows 2000就出现了,但是在NT 3.1中才支持进程共享),svchost是服务进程共享的重要组成部分。

(服务进程共享(Shared Service Processes):

如果每个服务都使用自己的进程来承载服务,那么会造成大量的系统资源浪费,使用共享的进程来承载多个服务,可以有效的减少资源浪费,当然弊端就是如果一个服务导致进程崩溃,那么进程上承载的其他服务也就跟着崩溃退出了。

Windows系统自带的服务中,有些使用自己的进程,还有一些共享进程,例如LSASS进程,承载了安全相关的服务,比如Security AccountsManager Service,Net Logon Service等等。)

一个svchost(Service Host)进程承载了多个服务,系统中有多个svchost的实例同时运行,在svchost中承载的服务都被编译为DLL,服务的注册表数据中,在“Parameters”子项下一定包含一个名叫ServiceDll的键,其值为对应的DLL文件的路径,例如Browser进程的注册表数据路径为”HKLM\SYSTEM\CurrentControlSet\Services\Browser”,在Parameters子项中找到ServiceDll键值为”%SystemRoot%\System32\browser.dll”:

DLL文件的ImagePath格式为”%SystemRoot%\System32\svchost.exe -k [service group name]”,service group name在注册表”HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost”项下面可以找到,该项中包含了很多不同的组,每组的值中包含一组共享进程的服务名:

当一个共享服务要启动的时候,使用相同的参数(服务组名),在SCM(Service Control Manager,服务控制管理器)的数据库中又相同的入口,当第一次启动时,为SvcHost进程传入一个参数(服务名),在注册表”HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost”项中查找一个包含这个名字的键,接着,进程通知SCM其所承载的所有服务,当其中某个服务再次启动时,SCM不会再去发起另一个SvcHost进程了,而是会向已经启动了的负责承载这个服务的SvcHost进程发送一个“start”命令,SvcHost进程会根据注册表中的信息去加载对应服务的DLL文件。

根据微软03年的统计,共享进程的服务最小的内存占用量约为150KB,而独享进程的服务约为800KB。

可以通过下面的方式来查看进程中承载了哪些服务:

1.     用命令提示符(Cmd工具),在Cmd中输入tasklist/svc,在输出结果中左边的“图像名”列出了系统中正在执行的进程的名字,右侧的“服务”列出了对应进程承载的服务。

2.     对于WindowsVista和Windows7,在任务管理器中包含了服务标签,在其中可以查看服务对应的进程ID。

3.     在Windows8中,任务管理器的界面进一步改进了,可以直接展开svchost进程来查看其承载的服务。

安全问题

由于svchost作为公共的系统进程来使用,因此一些恶意软件会伪装成svchost.exe这个名字来隐藏自己,系统正常的svchost.exe的路径在”C:\Windows\System32”下,如果在任务管理其中我们查看到某个svchost进程的可执行文件的路径不是这个路径,那么一定是恶意软件了。另外还有一些恶意软件会将服务挂在到真正的svchost服务中去执行,这类恶意软件就需要通过杀毒软件来防御了(肯定需要修改注册表的,有了前面的知识,我们就能对于杀毒软件弹出的注册表被修改的提示有更好的判断了)。

参考资料:

http://en.wikipedia.org/wiki/Svchost

http://book.51cto.com/art/201103/248375.htm

svchost与服务进程共享相关推荐

  1. Svchost.exe病毒

    Svchost.exe是病毒的两种情况 1.利用假冒Svchost.exe名称的病毒程序 这种方式运行的病毒并没有直接利用真正的Svchost.exe进程,而是启动了另外一个名称同样是Svchost. ...

  2. Svchost.exe是病毒的两种情况

    1.利用假冒Svchost.exe名称的病毒程序 这种方式运行的病毒并没有直接利用真正的Svchost.exe进程,而是启动了另外一个名称同样是Svchost.exe的病毒进程,由于这个假冒的病毒进程 ...

  3. php有个schost.exe_这个“SVCHOST.EXE”是什么进程?

    展开全部 耗尽CPU资源的Explored病毒清除法 出处:网易[ 2005-11-03 10:26:15 ] 作者:佚62616964757a686964616fe78988e69d83313332 ...

  4. php有个schost.exe_进程中有多个svchost.exe进程,这是怎么回事??

    展开全部 svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称,属于系e5a48de588b632313133353236313431303231363533313334 ...

  5. 将oracle端口1521共享_防火墙上开放Oracle服务端口1521的方法

    近来由于工作需要,在Windows XP平台上安装了Oracle9i数据库作为测试之用,一切正常.但当客户机连接服务器时却总是超时,我首先想到了防火墙,当我打开1521端口时,连接操作仍然失败.我又怀 ...

  6. windows系统各进程详解

    系统各进程详解 下面列出的都是操作系统的进程,而不是程序的进程,记住这些进程并了解他们的工作原理,用途,能让我们对系统进程的理解提升一个级别. system Idle Process系统进程介绍 al ...

  7. window系统中的系统进程

    在Windows2k/XP中,以下进程是必须加载的: smss.exe.csrss.exe.winlogon.exe.services.exe.lsass.exe.svchost.exe(可以同时存在 ...

  8. 系统进程相关知识(转载)

    Windows操作系统进程详细介绍 关键词: 系统进程 (1)[system Idle Process] 进程文件: [system process] or [system process] 进程名称 ...

  9. 與网络故障专家的對話

    IP与MAC绑定的难题 问:我的计算机原来采用公网固定IP地址.为了避免被他人盗用,使用"arp -s ip mac"命令对MAC地址和IP地址进行了绑定.后来,由于某种原因,又使 ...

最新文章

  1. 基于 Prometheus、InfluxDB 与 Grafana 打造监控平台
  2. Too many open files错误与解决方法
  3. 最轻快的人脸检测yoloface
  4. atmega8 Flash的使用
  5. jdk与cglib的动态代理
  6. C#-WinForm-无边框窗体的移动和阴影-API
  7. iOS 多线程基础之 NSThread
  8. mvc 404错误 php,ASP.NET MVC实现404跳转的代码实例
  9. Spring Boot 2.0 迁移指南
  10. python matplotlib画折线图出现连线混乱_python使用matplotlib模块绘制多条折线图、散点图...
  11. mysql主从复制的流程_MYSQL主从复制部署流程
  12. 案例全是电商零售,B2B的用户画像怎么做???
  13. MessageDigest(加密)
  14. android 截屏 简书,Android 内置应用截屏方法
  15. Adapter(适配器)模式总结
  16. 计算机网络拓扑应用于,基于复杂网络理论的计算机网络拓扑研究
  17. C++通过Read函数读取文件
  18. 关闭CSDN广告必备插件:adblock plus
  19. Jmeter之CSV文件相对路径、绝对路径
  20. Docker夺命连环15问,你能坚持第几问?

热门文章

  1. Zynq7000芯片内部介绍
  2. KeyShot 9 安装教程
  3. OC 英语转换成汉语
  4. 东北大学计算机考研资料汇总
  5. C++中使用MySQL数据库
  6. Spring面试题汇总3:SpringBoot面试题及答案整理
  7. 数控编程是数控加工的重要步骤
  8. git合并分支出现refusing to merge unrelated histories
  9. 【杂记】从孩子口算题开始逐渐离谱
  10. 标记蛋白抗体多肽1267539-32-1,Cyanine5 azide,花青素CY5叠氮,知识点梳理