本站首页    管理页面    写新日志    退出


«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031


公告
暂无公告...

我的分类(专题)

日志更新

最新评论

留言板

链接


Blog信息
blog名称:路漫漫其修远兮,吾将上下而求索
日志总数:27
评论数量:76
留言数量:0
访问次数:170670
建立时间:2007年1月8日




【收藏】Svchost.exe=冲击波?,全面认识Svchost.exe进程 
网上资源,  电脑与网络

hongjunli 发表于 2007/11/15 0:19:00

Svchost.exe是病毒吗? 我们先看看微软是怎样描述Svchost.exe的。在微软知识库314056中对Svchost.exe有如下描述:Svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。   其实Svchost.exe是Windows XP系统的一个核心进程。Svchost.exe不单单只出现在Windows XP中,在使用NT内核的Windows系统中都会有Svchost.exe的存在。一般在Windows 2000中Svchost.exe进程的数目为2个,而在Windows XP中Svchost.exe进程的数目就上升到了4个及4个以上。所以看到系统的进程列表中有几个Svchost.exe不用那么担心。   Svchost.exe到底是做什么用的呢?   首先我们要了解一点那就是Windows系统的中的进程分为:独立进程和共享进程这两种。由于Windows系统中的服务越来越多,为了节约有限的系统资源微软把很多的系统服务做成了共享模式。那Svchost.exe在这中间是担任怎样一个角色呢?   Svchost.exe的工作就是作为这些服务的宿主,即由Svchost.exe来启动这些服务。Svchost.exe只是负责为这些服务提供启动的条件,其自身并不能实现任何服务的功能,也不能为用户提供任何服务。Svchost.exe通过为这些系统服务调用动态链接库(DLL)的方式来启动系统服务。   那Svchost.exe是病毒这种说法是任何产生的呢?   因为Svchost.exe可以作为服务的宿主来启动服务,所以病毒、木马的编写者也挖空心思的要利用Svchost.exe的这个特性来迷惑用户达到入侵、破坏计算机的目的。   如何才能辨别哪些是正常的Svchost.exe进程,而哪些是病毒进程呢?   Svchost.exe的键值是在“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Svchost”,如图1所示。图1中每个键值表示一个独立的Svchost.exe组。 500)this.width=500'> 图1 微软还为我们提供了一种察看系统正在运行在Svchost.exe列表中的服务的方法。以Windows XP为例:在“运行”中输入:cmd,然后在命令行模式中输入:tasklist /svc。系统列出如图2所示的服务列表。图2中红框包围起来的区域就是Svchost.exe启动的服务列表。如果使用的是Windows 2000系统则把前面的“tasklist /svc”命令替换为:“tlist -s”即可。 500)this.width=500'> 图2   如果你怀疑计算机有可能被病毒感染,Svchost.exe的服务出现异常的话通过搜索Svchost.exe文件就可以发现异常情况。一般只会找到一个在:“C:\Windows\System32”目录下的Svchost.exe程序。如果你在其他目录下发现Svchost.exe程序的话,那很可能就是中毒了。   还有一种确认Svchost.exe是否中毒的方法是在任务管理器中察看进程的执行路径。但是由于在Windows系统自带的任务管理器不能察看进程路径,所以要使用第三方的进程察看工具。  上面简单的介绍了Svchost.exe进程的相关情况。总而言之,Svchost.exe是一个系统的核心进程,并不是病毒进程。但由于Svchost.exe进程的特殊性,所以病毒也会千方百计的入侵Svchost.exe。通过察看Svchost.exe进程的执行路径可以确认是否中毒。 深入解析:高手 全面认识Svchost.exe进程 http://www.enet.com.cn/article/2006/0126/A20060126497173.shtml 正常情况下,windows中可以有多个Svchost.exe进程同时运行,例如Windows 2000至少有2个Svchost进程,Windows XP中有4个以上,Windows 2003中则有更多,所以当你看到多个Svchost进程时,未必就是病毒!  Svchost.exe进程是干什么的?   Svchost.exe文件存在于“%system root%\system32”(例如C:\Windows\system32)目录下,它是Windows NT核心的重要进程(Windows 9X没有该进程),专门为系统启动各种服务的。例如Svchost.exe调用rpcss.dll文件,就会启动rpcss服务(remote procedure call)。   Svchost.exe实际上是一个服务宿主,它本身并不能给用户提供任何服务,但是可以用来运行动态链接库DLL文件,从而启动对应的服务。Svchost.exe进程可以同时启动多个服务。 Svchost是如何启动系统服务的?   由于系统服务都是以动态链接库(DLL)形式实现的,它们把可执行程序指向Svchost,因此Svchost只要调用某个动态链接库,即可启动对应的服务。那么Svchost启动某服务时,又是如何知道应该调用哪个动态链接库?这是由于系统服务在注册表中都设置了相关参数,因此Svchost通过读取某服务在注册表中的信息,即可知道应该调用哪个动态链接库,从而启动该服务。   下面我们以Svchost启动helpsvc(Help and Support)服务为例,介绍其启动服务的方法。在Windows XP中点击“开始” “运行”,输入“services.msc”命令,弹出服务对话框,然后双击打开“Help and Support”服务属性对话框,可以看到helpsvc服务的可执行文件的路径为“C:\WINDOWS\System32\svchost.exe -k netsvcs” (如图2),说明helpsvc服务是依靠SVCHOST调用“netsvcs”参数来实现的,而参数的内容则是存放在系统注册表中的。 500)this.width=500'>     在运行对话框中输入“regedit.exe”后回车,打开注册表编辑器,找到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\helpsvc]项,找到类型为“REG_EXPAND_SZ”的键“magePath”,其键值为“%SystemRoot%\System32\svchost.exe -k netsvcs”(这就是在服务窗口中看到的服务启动命令),另外在“Parameters”子项中有个名为“ServiceDll”的键,其值为“%WINDIR%\PCHealth\HelpCtr\Binaries\pchsvc.dll”,其中“pchsvc.dll”就是helpsvc服务要使用的动态链接库文件。这样SVCHOST进程通过读取“helpsvc”服务注册表信息,就能启动该服务了。     Svchost到底启动了哪些服务?   如果你想了解每个SVCHOST进程当前到底提供了哪些系统服务,可以在命令提示符下输入命令来查看。例如在Windows XP中,打开“命令提示符”,键入tasklist /svc命令查看;在Windows 2000中,则输入“Tlist -S”命令来查看。   如果你在Windows XP中,想得到所有进程的详细信息,可以打开“命令提示符”,键入  tasklist /svc>abc.txt 命令,于是在当前目录中,将会生成一个abc.txt文件,其内容就是当前正在运行的所有进程情况,例如进程名、PID号、该进程启动了哪些服务。 如何发现Svchost进程有问题?   由于Svchost进程可以启动各种服务,因此病毒、木马也经常伪装成系统的DLL文件,使Svchost调用它,从而进入内存中运行、感染和控制电脑。   建议你使用“Windows优化大师”进程管理器(可以到《个人电脑》的下载频道http://download.pcpro.com.cn的“系统工具”中去下载),查看所有Svchost进程的执行文件路径(如图3),正常的Svchost文件应该存在于“c:\Windows\system32”目录下,如果你发现其执行路径在其他目录下,就有可能染上了病毒或木马了,应该马上进行检测和处理。    500)this.width=500'>      Svchost进程杀不掉怎么办?   如果有些Svchost进程,你在任务管理器中无法关闭之,可以使用ntsd命令来杀掉它,方法如下:   首先需要了解欲杀的Svchost进程,其PID是多少?在Windows XP下,按Ctrl+Alt+Del打开任务管理器,点击“进程选项卡” “查看” “选择列”,在弹出的窗口中(图4),勾选“PID(进程标识符)”,然后回到任务管理器中,即可看见PID了(例如要杀的Svchost进程,其PID是844)。    500)this.width=500'>      接下来关闭该进程。点击“开始” “程序” “附件” “命令提示符”,在命令提示符下,输入命令ntsd -c q -p 844即可杀掉Svchost进程(PID是844)。   小提示:除了System、SMSS.EXE和CSRSS.EXE这三个进程,ntsd命令可以杀掉任何一个系统进程。从Windows 2000开始,微软就提供了ntsd工具,该命令执行后,可让你获得系统的debug权,因此能够用来关闭大部分的系统进程,如果你遇到无法关闭的进程,就可以使用该命令,其杀进程的命令格式为:ntsd -c q –p XXX   以上XXX为欲杀进程的PID;   ntsd –p XXX 表示在调试器中打开某进程(PID为XXX);   而-c q参数则表示退出调试器。由于调试器关闭之后,它打开的进程会随调试器一起退出,因此ntsd命令能够关闭进程。


阅读全文(2867) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.383 second(s), page refreshed 144803286 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号