svchost与服务进程共享
从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与服务进程共享相关推荐
- Svchost.exe病毒
Svchost.exe是病毒的两种情况 1.利用假冒Svchost.exe名称的病毒程序 这种方式运行的病毒并没有直接利用真正的Svchost.exe进程,而是启动了另外一个名称同样是Svchost. ...
- Svchost.exe是病毒的两种情况
1.利用假冒Svchost.exe名称的病毒程序 这种方式运行的病毒并没有直接利用真正的Svchost.exe进程,而是启动了另外一个名称同样是Svchost.exe的病毒进程,由于这个假冒的病毒进程 ...
- php有个schost.exe_这个“SVCHOST.EXE”是什么进程?
展开全部 耗尽CPU资源的Explored病毒清除法 出处:网易[ 2005-11-03 10:26:15 ] 作者:佚62616964757a686964616fe78988e69d83313332 ...
- php有个schost.exe_进程中有多个svchost.exe进程,这是怎么回事??
展开全部 svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称,属于系e5a48de588b632313133353236313431303231363533313334 ...
- 将oracle端口1521共享_防火墙上开放Oracle服务端口1521的方法
近来由于工作需要,在Windows XP平台上安装了Oracle9i数据库作为测试之用,一切正常.但当客户机连接服务器时却总是超时,我首先想到了防火墙,当我打开1521端口时,连接操作仍然失败.我又怀 ...
- windows系统各进程详解
系统各进程详解 下面列出的都是操作系统的进程,而不是程序的进程,记住这些进程并了解他们的工作原理,用途,能让我们对系统进程的理解提升一个级别. system Idle Process系统进程介绍 al ...
- window系统中的系统进程
在Windows2k/XP中,以下进程是必须加载的: smss.exe.csrss.exe.winlogon.exe.services.exe.lsass.exe.svchost.exe(可以同时存在 ...
- 系统进程相关知识(转载)
Windows操作系统进程详细介绍 关键词: 系统进程 (1)[system Idle Process] 进程文件: [system process] or [system process] 进程名称 ...
- 與网络故障专家的對話
IP与MAC绑定的难题 问:我的计算机原来采用公网固定IP地址.为了避免被他人盗用,使用"arp -s ip mac"命令对MAC地址和IP地址进行了绑定.后来,由于某种原因,又使 ...
最新文章
- 基于 Prometheus、InfluxDB 与 Grafana 打造监控平台
- Too many open files错误与解决方法
- 最轻快的人脸检测yoloface
- atmega8 Flash的使用
- jdk与cglib的动态代理
- C#-WinForm-无边框窗体的移动和阴影-API
- iOS 多线程基础之 NSThread
- mvc 404错误 php,ASP.NET MVC实现404跳转的代码实例
- Spring Boot 2.0 迁移指南
- python matplotlib画折线图出现连线混乱_python使用matplotlib模块绘制多条折线图、散点图...
- mysql主从复制的流程_MYSQL主从复制部署流程
- 案例全是电商零售,B2B的用户画像怎么做???
- MessageDigest(加密)
- android 截屏 简书,Android 内置应用截屏方法
- Adapter(适配器)模式总结
- 计算机网络拓扑应用于,基于复杂网络理论的计算机网络拓扑研究
- C++通过Read函数读取文件
- 关闭CSDN广告必备插件:adblock plus
- Jmeter之CSV文件相对路径、绝对路径
- Docker夺命连环15问,你能坚持第几问?