替换服务但原服务不失效的方法
[11-11 12:19:17] 来源:http://www.duoxue8.com 组网技巧 阅读:110次
替换服务但原服务不失效的方法,标签:家庭组网,网方案,电脑基础知识,http://www.duoxue8.com
替换服务但原服务不失效的方法 结束。
替换系统服务是做的一个好办法,ring3实现,稳定可靠,也具有一定的隐蔽性。这里简单说说怎么样使用自己的服务替换系统服务,并且保证原来真实的系统服务不失效。
替换服务,主要有两种常见的办法,第一是修改注册表中对应服务的可执行文件路径,第二个是直接替换服务文件。第一个办法的缺陷是修改注册表,第二个是需要关闭SFC。而他们共有的缺点是替换了服务之后原来的老服务就失效了,以至没法替换系统关键服务。服务的执行是从ServiceMain函数开始的(当然也可以自己定义一个别的名字), 因此如果在我们的服务执行的时候,在我们的ServiceMain里面,顺便执行一下真实服务的ServiceMain函数,老服务就不会失效了。最方便 这么做的,莫过于老服务是依附于svchost启动的dll了。LoadLibrary一下,再GetProcAddress一下,再执行一下就好了。
具体的代码实现很简单,我就不贴了。需要注意的是RegisterServiceCtrlHandler函数的调用,一个服务只能调用 一次,原服务的ServiceMain里面一定会调用的,因此我们自己的ServiceMain里面就不用写了,反而代码变得更少,更干净。另外一个注意 点,服务一般都是要做成死循环的,所以要在调用老服务的ServiceMain之前,创建线程来执行自己的服务主功能。
有意思的是,这样替换了依附svchost的服务之后,如果线程里面拒绝退出,服务还是可以停掉,但是即使停掉了,我们自己的dll却还是在svchost的空间中执行。
替换服务但原服务不失效的方法 结束。
Tag: 组网技巧,家庭组网,网方案,电脑基础知识,电脑学习 - 组网通信 - 组网技巧
替换服务但原服务不失效的方法相关文章
- ·上一篇:家用宽带ADSL共享上网设置详解
- ·下一篇:常见驱动程序安装须注意问题
- › 替换服务但原服务不失效的方法
- › 替换服务但原服务不失效的方法 -[组网技巧]
- 在百度中搜索相关文章:替换服务但原服务不失效的方法