创建SvcHost.exe 调用的服务原理与实践
svchost.exe是什么进程?

svchost.exe是什么进程?首先要明确一点svchost.exe这个东西本身并不是病毒程序,它只是系统里边一个不可缺少的进程,不管是什么操作系统(2000,xp,2003,win7)都会存在这个进程。
当然有时候病毒、木马也会利用svchost.exe这个进程。
看完本文介绍后你就会明白,为什么你的系统里会有很多这样的进程了,而且数量多少还会不一样。
任务管理器中的svchost.exe进程什么是svchost.exe进程?简单的说:svchost.exe是一个属于微软Windows操作系统的系统程序,微软官方对它的解释是:Svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。
这个程序对系统的正常运行是非常重要,而且是不能被结束的。
windows系统进程分为独立进程和共享进程两种,“svchost.exe”文件存在“%systemroot%system32”目录下,它属于共享进程。
随着windows系统服务不断增多,为了节省系统资源,微软把很多服务做成共享方式,交由svchost.exe进程来启动。
但svchost进程只作为服务宿主,并不能实现任何服务功能,即它只能提供条件让其他服务在这里被启动,而它自己却不能给用户提供任何服务。
Service Host Process是一个标准的动态连接库主机处理服务。
Svchost.exe文件对那些从动态连接库(DLL)中运行的服务来说是一个普通的主机进程名。
在启动的时候,Svchost.exe检查注册表中的位置来构建需要加载的服务列表。
这就会使多个Svchost.exe在同一时间运行。
Windows 2000一般有2个Svchost进程,一个是RPCSS(Remote Procedure Call)服务进程,另外一个则是由很多服务共享的一个Svchost.exe;而在windows XP中,则一般有4个以上的Svchost.exe服务进程;Windows 2003 server中则更多。
2020煤矿信息网络安全技术比武试卷(1)

A. 100.2.3.4B. 192.10.20.30C. 138.6.7.8D.10.100.21.612、因特网域名的总长度不得超过个字符。
A. 55B. 155C. 255D. 3553、网关使应用不同协议的网络可以通过网关相连,网关使用了OSI协议的全部。
A. 四层B. 五层C. 六层D. 七层4、网络安全中的访问控制规则是处理主体对客体访问的的合法性问题,一个主体只能访问经过授权使用的给定客体。
A.权限设置B. 机制C. 方法D. 对象5、下列哪一项恰当地描述了OSI模型中传输层的功能?A. 它通过流量控制来发送数据B. 它提供传输的最佳路径C. 它决定网络寻址D. 它允许网络分段6、下列哪一个功能是路由器用来在网络中转发数据分组的?A. 应用程序和介质B. 路径选择和交换C. 广播和冲突检测D. 上述答案都不对7、下列哪两项是动态路由选择的基本类型?A. 静态及缺省B. TCP和UDP交换C. 距离矢量和链路状态D. 上述答案都不对8、局域网交换机可以被看作下列的哪一项?A. 工作在第l层的多端口中继器B. 工作在第2层的多端口集线器C. 工作在第3层的多端口路由器D. 工作在第2层的多端口网桥9、哪种网络设备可以用于对局域网进行逻辑分段?A. 路由器 B.网桥 C. 交换机D.集线器。
密。
封。
线10、交换机作为VLAN 的核心元素,提供了哪些智能化的功能?A. 基于用户、端口或逻辑地址来分组形成VLAN B .对帧进行过滤和转发C. 与其他交换机和路由器进行通信 D .以上都是三、判断题(共10分,每题1分)。
1、 TCP/IP 是指传输控制协测网际协议,因两个主要TCP 协议和IP 协议而得名是国际互联网标准连接协议。
( )2、广域网与局域网的区别不仅在距离长短,而且从层次上看,局域网使用的协议主要在数据链路层上,而广域网使用的协议主要在网络层上。
( )3、 ADSL 技术中,信噪比值越小连接性能越好。
Svchost.exe进程

全面认识Svchost.exe进程很多朋友对svchost.exe进程都不太了解,有时在任务管理器中一旦看到有多个该进程(图1中有6个),就以为自己的电脑中了病毒或木马,其实并非如此!正常情况下,windows中可以有多个svchost.exe进程同时运行,例如Windows2000至少有2个Svchost进程,WindowsXP中有4个以上,Windows2003中则有更多,所以当你看到多个svchost进程时,未必就是病毒!svchost.exe进程是干什么的?svchost.exe文件存在于“%systemroot%\system32”(例如C:\Windows\system32)目录下,它是WindowsNT核心的重要进程(Windows9X 没有该进程),专门为系统启动各种服务的。
例如Svchost.exe调用rpcss.dll文件,就会启动rpcss服务(remoteprocedurecall)。
svchost.exe实际上是一个服务宿主,它本身并不能给用户提供任何服务,但是可以用来运行动态链接库DLL文件,从而启动对应的服务。
Svchost.exe进程可以同时启动多个服务。
svchost是如何启动系统服务的?由于系统服务都是以动态链接库(DLL)形式实现的,它们把可执行程序指向svchost,因此svchost只要调用某个动态链接库,即可启动对应的服务。
那么svchost启动某服务时,又是如何知道应该调用哪个动态链接库?这是由于系统服务在注册表中都设置了相关参数,因此svchost通过读取某服务在注册表中的信息,即可知道应该调用哪个动态链接库,从而启动该服务。
下面我们以svchost启动helpsvc(HelpandSupport)服务为例,介绍其启动服务的方法。
在WindowsXP中点击“开始”“运行”,输入“services.msc”命令,弹出服务对话框,然后双击打开“HelpandSupport”服务属性对话框,可以看到helpsvc 服务的可执行文件的路径为“C:\WINDOWS\System32\svchost.exe-knetsvcs”(如图2),说明helpsvc服务是依靠SVCHOST调用“netsvcs”参数来实现的,而参数的内容则是存放在系统注册表中的。
Svchost.exe进程介绍Svchost病毒清除方法

Svchost.exe进程介绍Svchost病毒清除方法Svchost.exe在windows进程中占据很大一部分的资源,而且这个进程非常容易被病毒所利用。
Svchost.exe被病毒利用之后,系统常会弹出Svchost.exe错误,当然Svchost病毒也有专杀工具。
那么Svchost.exe是什么进程呢?Svchost病毒又该怎么去清除呢?接下来就让我们一起来了解下吧。
很多朋友对Svchost进程都不太了解,有时在工作管理员中一旦看到有多个该进程,就以为自己的电脑中了病毒或木马,其实并非如此!正常情况下,windows中可以有多个Svchost.exe进程同时运行,例如Windows 2000至少有2个Svchost进程,Windows XP中有4个以上,Windows 2003中则有更多,所以当你看到多个Svchost进程时,未必就是病毒!Svchost.exe是什么?Svchost.exe文件存在于“%system root%system32”(例如C:Windowssystem32)目录下,它是Windows NT核心的重要进程(Windows 9X没有该进程),专门为系统启动各种服务的。
例如Svchost.exe调用rpcss.dll档,就会启动rpcss服务(remote procedure call).Svchost.exe实际上是一个服务宿主,它本身并不能给使用者提供任何服务,但是可以用来运行动态连结程式库DLL档,从而启动对应的服务。
Svchost.exe进程可以同时启动多个服务。
Svchost.exe是一个系统的核心进程,并不是病毒进程。
但由于Svchost.exe进程的特殊性,所以病毒也会千方百计的入侵Svchost.exe。
通过查看Svchost.exe进程的执行路径可以确认是否中毒如果你怀疑电脑有可能被病毒感染,Svchost.exe的服务出现异常的话通过搜索Svchost.exe档就可以发现异常情况。
闹鬼灵异电脑里的那些怪事

闹鬼灵异电脑里的那些怪事当你回忆这段时间发生的事的时候,你是否觉得近来电脑有一点怪?其实你并不是唯一的一个。
近来,一些人碰到了更为奇怪的事情:“正在上网,突然处于关闭状态的摄像头自动开启了;安装软件过程中突然装起了另一软件,鼠标、键盘一起动都阻止不了;凌晨,电脑自动开机,传来张震讲故事的声音……”这些近似“灵异”的事情都在不断发生,它们的背后到底隐藏着怎样的故事呢?自动“睁眼”的摄像头场景回放:一天,小琳在玩网页游戏,杀毒软件无报警,360防火墙也无危险提示的情况下,自己玩游戏用的摄像头忽然自动开启了。
启动杀毒软件,全盘扫描后,发现并没有木马程序,小琳愈发感到奇怪和紧张。
技术揭秘:要说这个事情,还要从小琳的动作说起,当小琳点击一个按钮的时候,本来点击的是“1”,但是在后台,这个数据被修改成“2”后再传给电脑,这也就是大家现在在网站上常看到的Clickjacking(点击劫持)。
这是浏览器工作原理中的一个缺陷,一个恶意FLASH就能让小琳在毫不知情的情况下点击任意链接、任意按钮或网站上的任意东西。
小琳所做的任何点击都可以被引导到恶意链接上。
黑客利用Clickjacking 漏洞构造一个恶意网页,例如Flash小游戏,当用户不慎访问该网页时,正常鼠标点击操作就会触发这一漏洞。
黑客可以在用户毫不知情的情况下,强制启动并完全控制摄像头和麦克风。
实例分析:这种劫持的发生,一般经历了以下的步骤。
第一步:黑客在第三方站点的网页先在可控制的页面A 内设置一个iFrame(见图1),iFrame的src链接指向另一个域的页面B。
设置这个iFrame的CSS样式的透明度为0,并设置其CSS样式的z-index比页面A的其他元素的z-index大(z-index属性指定元素的堆叠顺序,拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面)。
(1)第二步:将这个iFrame的Width(宽)与Height(高)值被设置为足以保证用户点击到其中内容(页面B的内容)的大小,然后在页面A上放置一些按钮、链接用于欺骗用户点击的元素,这些元素在iFrame之下,并恰好与iFrame的页面B内的关键元素在同一个位置。
svchost用法

svchost用法
是一个Windows系统的核心进程,它是从动态链接库(DLL)中运行的服务
的通用主机进程名称。
它本身并不实现任何服务功能,而是作为服务宿主,提供条件让其他服务在这里被启动。
需要启动的服务以动态链接库形式实现,在安装这些服务时,把服务的可执行程序指向,启动这些服务时由调用相应服务的动态链接库来启动服务。
在Windows系统中,可以在多个实例中运行,每个实例托管一个或多个服务。
此类服务的注册表项必须在“Parameters”子项下有一个名为“ServiceDll”的值,指向相关服务的DLL文件。
他们的“ImagePath”定义形式为%Systemroot%\System32\ -k (服务组;netsvcs)。
共享同一个SvcHost进程的服务指定相同的参数,在配置管理的数据库中只有一个单一条目。
以上内容仅供参考,如需更多信息,建议访问微软官网或咨询专业计算机技术人员。
服务实战篇

实战篇:服务详解及推荐上面我们已经了解了服务的管理配置,下面就来了解每个服务的具体含义。
如果你的系统中没有下文中提到的某些服务也不用担心,因为某些服务只有在特定状态下或安装了某些软硬件之后才会出现。
01.●显示名称:Alerter◎进程名称:svchost.exe -k LocalService◎微软描述:通知所选用户和计算机有关系统管理级警报。
如果服务停止,使用管理警报的程序将不会受到它们。
如果此服务被禁用,任何直接依赖它的服务都将不能启动。
◎补充描述:警报器。
该服务进程名为Services.exe,一般家用计算机根本不需要传送或接收计算机系统管理来的警示(AdministrativeAlerts),除非你的计算机用在局域网络上。
◎默认:禁用☞建议:禁用02.●显示名称:Application Layer Gateway Service◎进程名称:alg.exe◎微软描述:为 Internet 连接共享和 Windows 防火墙提供第三方协议插件的支持。
◎补充描述:XP SP2自带的防火墙,如果不用可以关掉。
◎默认:手动(已启动)☞建议:禁用03.●显示名称:Application Management◎进程名称:svchost.exe -k netsvcs◎微软描述:提供软件安装服务,诸如分派,发行以及删除。
◎ 补充描述:应用程序管理。
从Windows2000开始引入的一种基于msi文件格式的全新有效软件管理方案:程序管理组件服务。
该服务不仅可以管理软件的安装、删除,还可以使用此服务修改、修复现有应用程序,监视文件复原并通过复原排除基本故障等,软件安装变更的服务。
◎默认:手动☞建议:手动04.●显示名称:Automatic Updates◎进程名称:svchost.exe -k netsvcs◎微软描述:允许下载并安装 Windows 更新。
如果此服务被禁用,计算机将不能使用Windows Update 网站的自动更新功能。
揭开系统SVCHOST进程的神秘“面纱”

“ l s — ”命 令来 查 看 , tit s 而在 w np系统 中则 可使 用 “ a k i t ix t s ls /v ”命 令 来查 看 。 se w n o s系 统进 程 分 可 以分 为独 立进 程和 共 享进 程 两种 ,而 i dw “ v h s . x ” 文 件 存 在 于 “ s s e r 0 % s s e 3 ” 目录 s co t ee % ytm o t y tm 2 下 ,它是 属 于共 享进 程 。随 着 wn o s系统 服 务不 断增 多 ,为 了 idw 节 省 系统 资源 ,许 多系统 服 务被 做 成共 享方 式 ,交 由 s co t进 vhs 程来 启动 。但是 sco t进程 只 作 为服 务宿 主 ,并 不 能实 现任 何 vh s 服务 功能 ,即它 只 能提 供条 件 让其 他 服务 在这 里 被 启动 , 而它 自 己却 不能 给 用户 提供 任何 服 务 。 那 么 这 些服 务是 如何 实 现 的呢 ? 原来 这 些系 统服 务 是 以动态 链 接库 ( L ) 的形式 来 实现 的 , DL 它们 把可 执 行程 序指 向 sc o t 由 sc o t 用 相应 服 务 的动 vhs, vh s 调 态链 接库 来 启动 服 务 。那 么 s c o t又 怎 么知道 某 个系 统服 务 该 vhs 调用 哪个 动 态链 接库 呢 ? 原来 这 是通 过系 统 服务 在注 册 表 中设 置 的参 数来 实 现 。 下面 我们 以 r c s 务 为例 ,进 说明这 个 问题 。 ps 服 以 w n p 为 例 , 点 击 “开 始 ” 一 “运 行 ” , 输 入 ix “ e v csm c 命 令 , 这 时 会 弹 出 服 务 对 话 框 , 然 后 打 开 sr i e .s ”
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创建SvcHost.exe 调用的服务原理与实践1. 多个服务共享一个Svchost.exe进程利与弊windows 系统服务分为独立进程和共享进程两种,在windows NT时只有服务器管理器SCM(Services.exe)有多个共享服务,随着系统内置服务的增加,在windows 2000中ms又把很多服务做成共享方式,由svchost.exe启动。
windows 2000一般有2个svchost进程,一个是RPCSS(Remote Procedure Call)服务进程,另外一个则是由很多服务共享的一个svchost.exe。
而在windows XP中,则一般有4个以上的svchost.exe 服务进程,windows 2003 server中则更多,可以看出把更多的系统内置服务以共享进程方式由svchost启动是ms的一个趋势。
这样做在一定程度上减少了系统资源的消耗,不过也带来一定的不稳定因素,因为任何一个共享进程的服务因为错误退出进程就会导致整个进程中的所有服务都退出。
另外就是有一点安全隐患,首先要介绍一下svchost.exe的实现机制。
2. Svchost原理Svchost本身只是作为服务宿主,并不实现任何服务功能,需要Svchost启动的服务以动态链接库形式实现,在安装这些服务时,把服务的可执行程序指向svchost,启动这些服务时由svchost调用相应服务的动态链接库来启动服务。
那么svchost如何知道某一服务是由哪个动态链接库负责呢?这不是由服务的可执行程序路径中的参数部分提供的,而是服务在注册表中的参数设置的,注册表中服务下边有一个Parameters子键其中的ServiceDll 表明该服务由哪个动态链接库负责。
并且所有这些服务动态链接库都必须要导出一个ServiceMain()函数,用来处理服务任务。
例如rpcss(Remote Procedure Call)在注册表中的位置是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs,它的参数子键Parameters里有这样一项:"ServiceDll"=REG_EXPAND_SZ:"%SystemRoot%\system32\rpcss.dll"当启动rpcss服务时,svchost就会调用rpcss.dll,并且执行其ServiceMain()函数执行具体服务。
既然这些服务是使用共享进程方式由svchost启动的,为什么系统中会有多个svchost进程呢?ms把这些服务分为几组,同组服务共享一个svchost进程,不同组服务使用多个svchost进程,组的区别是由服务的可执行程序后边的参数决定的。
例如rpcss在注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RpcSs 有这样一项:"ImagePath"=REG_EXPAND_SZ:"%SystemRoot%\system32\svchost -k rpcss"因此rpcss就属于rpcss组,这在服务管理控制台也可以看到。
svchost的所有组和组内的所有服务都在注册表的如下位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost,例如windows 2000共有4组rpcss、netsvcs、wugroup、BITSgroup,其中最多的就是netsvcs=REG_MULTI_SZ:man.Nwsapagent.Rasauto.Rasman.Remoteaccess. SENS.Sharedaccess.Tapisrv.Ntmssvc.wzcsvc..在启动一个svchost.exe负责的服务时,服务管理器如果遇到可执行程序内容ImagePath已经存在于服务管理器的映象库中,就不在启动第2个进程svchost,而是直接启动服务。
这样就实现了多个服务共享一个svchost进程。
3. Svchost代码现在我们基本清楚svchost的原理了,但是要自己写一个DLL形式的服务,由svchost来启动,仅有上边的信息还有些问题不是很清楚。
比如我们在导出的ServiceMain()函数中接收的参数是ANSI还是Unicode?我们是否需要调用RegisterServiceCtrlHandler和StartServiceCtrlDispatcher来注册服务控制及调度函数?这些问题要通过查看svchost代码获得。
下边的代码是windows 2000+ service pack 4 的svchost反汇编片段,可以看出svchost程序还是很简单的。
主函数首先调用ProcCommandLine()对命令行进行分析,获得要启动的服务组,然后调用SvcHostOptions()查询该服务组的选项和服务组的所有服务,并使用一个数据结构svcTable 来保存这些服务及其服务的DLL,然后调用PrepareSvcTable() 函数创建SERVICE_TABLE_ENTRY 结构,把所有处理函数SERVICE_MAIN_FUNCTION 指向自己的一个函数FuncServiceMain(),最后调用API StartServiceCtrlDispatcher() 注册这些服务的调度函数。
; =============================== Main Funcion ===========================================.text:010010B8 public start.text:010010B8 start proc near.text:010010B8 push esi.text:010010B9 push edi.text:010010BA push offset sub_1001EBA ; lpTopLevelExceptionFilter.text:010010BF xor edi, edi.text:010010C1 call ds:SetUnhandledExceptionFilter.text:010010C7 push 1 ; uMode.text:010010C9 call ds:SetErrorMode.text:010010CF call ds:GetProcessHeap.text:010010D5 push eax.text:010010D6 call sub_1001142.text:010010DB mov eax, offset dword_1003018set unk_1003000 ; lpCriticalSection.text:010010E0 push off.text:010010E5 mov dword_100301C, eax.text:010010EA mov dword_1003018, eax.text:010010EF call ds:InitializeCriticalSection.text:010010F5 call ds:GetCommandLineW.text:010010FB push eax ; lpString.text:010010FC call ProcCommandLine.text:01001101 mov esi, eax.text:01001103 test esi, esi.text:01001105 jz short lab_doservice.text:01001107 push esi.text:01001108 call SvcHostOptions.text:0100110D call PrepareSvcTable.text:01001112 mov edi, eax ; SERVICE_TABLE_ENTRY returned.text:01001114 test edi, edi.text:01001116 jz short loc_1001128.text:01001118 mov eax, [esi+10h].text:0100111B test eax, eax.text:0100111D jz short loc_1001128.text:0100111F push dword ptr [esi+14h] ; dwCapabilities.text:01001122 push eax ; intInitializeSecurity.text:01001123 call.text:01001128.text:01001128 loc_1001128: ; CODE XREF: start+5Ej.text:01001128 ; start+65j.text:01001128 push esi ; lpMem.text:01001129 call HeapFreeMem.text:0100112E.text:0100112E lab_doservice: ; CODE XREF: start+4Dj.text:0100112E test edi, edi.text:01001130 jz ExitProgram.text:01001136 push edi ; lpServiceStartTableispatcherW.text:01001137 call ds:StartServiceCtrlD.text:0100113D jmp ExitProgram.text:0100113D start endp; =============================== Main Funcion end ===========================================由于svchost为该组的所有服务都注册了svchost中的一个处理函数,因此每次启动任何一个服务时,服务管理器SCM都会调用FuncServiceMain() 这个函数。
这个函数使用svcTable 查询要启动的服务使用的DLL,调用DLL导出的ServiceMain()函数来启动服务,然后返回。
; ============================== FuncServiceMain() ===========================================o.text:01001504 FuncServiceMain proc near ; DATA XREF: PrepareSvcTable+44.text:01001504.text:01001504 arg_0 = dword ptr 8.text:01001504 arg_4 = dword ptr 0Ch.text:01001504.text:01001504 push ecx.text:01001505 mov eax, [esp+arg_4].text:01001509 push ebxpush ebp.text:0100150A.text:0100150B push esi.text:0100150C mov ebx, offset unk_1003000.text:01001511 push edi.text:01001512 mov edi, [eax].text:01001514 push ebx.text:01001515 xor ebp, ebp.text:01001517 call ds:EnterCriticalSection.text:0100151D xor esi, esi.text:0100151F cmp dwGroupSize, esi.text:01001525 jbe short loc_1001566.text:01001527 and [esp+10h], esi.text:0100152B.text:0100152B loc_100152B: ; CODE XREF: FuncServiceMain+4Aj .text:0100152B mov eax, svcTable.text:01001530 mov ecx, [esp+10h].text:01001534 push dword ptr [eax+ecx].text:01001537 push ediall ds:lstrcmpiW.text:01001538 c.text:0100153E test eax, eax.text:01001540 jz short StartThis.text:01001542 add dword ptr [esp+10h], 0Ch.text:01001547 inc esi.text:01001548 cmp esi, dwGroupSize.text:0100154E jb short loc_100152B.text:01001550 jmp short loc_1001566.text:01001552 ; =================================================.text:01001552.text:01001552 StartThis: ; CODE XREF: FuncServiceMain+3Cjmov ecx, svcTable.text:01001552.text:01001558 lea eax, [esi+esi*2].text:0100155B lea eax, [ecx+eax*4].text:0100155E push eax.text:0100155F call GetDLLServiceMainin Function address.text:01001564 mov ebp, eax ; dll ServiceMa.text:01001566.text:01001566 loc_1001566: ; CODE XREF: FuncServiceMain+21j .text:01001566 ; FuncServiceMain+4Cj.text:01001566 push ebx.text:01001567 call ds:LeaveCriticalSection.text:0100156D test ebp, ebp.text:0100156F jz short loc_100157B.text:01001571 push [esp+10h+arg_4].text:01001575 push [esp+14h+arg_0].text:01001579 call ebp.text:0100157B.text:0100157B loc_100157B: ; CODE XREF: FuncServiceMain+6Bj.text:0100157B pop edi.text:0100157C pop esi.text:0100157D pop ebp.text:0100157E pop ebx.text:0100157F pop ecx.text:01001580 retn 8.text:01001580 FuncServiceMain endp ; sp = -8; ============================== FuncServiceMain() end ========================================。