公司名称:上海旭强信息科技有限公司

公司电话:(021)-51872701
      (021)-51302668
      (021)-51302669

公司传真:(021)-51302669-21

公司网址:http://www.51site.net.cn

通讯地址:上海市浦东大道1097号14-19E

邮政编码:200135

公司周边公交线路:

619路、774路、570路、610路、779路、639路、573路、787路、陆川专线、申高专线、沪合专线、 新川专线、旅游三线路

到 源深路站 或 桃林路 或 五牛城站 下车

首页 | 关于我们 | 网站建设 | 网站推广 | 电子商务 
 

深入挖掘Windows脚本技术(7)

2008-2-28 13:49:23
【来做个后门】
在讨论脚本后门前,先要介绍一类很有用的WMI对象。事实上,这才是本节的关键。脚本后门不过是它的一个应用而已。
前面已经说过,WMI是事件驱动的。整个事件处理机制分为四个部分:
1,事件生产者(provider):负责产生事件。WMI包含大量的事件生产者。有性能计数器之类的具体的事件生产者,也有类、实例的创建、修改、删除等通用的事件生产者。
2,事件过滤器(filter):系统每时每刻都在产生大量的事件,通过自定义过滤器,脚本可以捕获感兴趣的事件进行处理。
3,事件消费者(consumer):负责处理事件。它可以是可执行程序、动态链接库(dll,由WMI服务加载)或者脚本。
4,事件绑定(binding):通过将过滤器和消费者绑定,明确什么事件由什么消费者负责处理。
事件消费者可以分为临时的和永久的两类。临时的事件消费者只在其运行期间关心特定事件并处理。永久消费者作为类的实例注册在WMI名字空间中,一直有效直到它被注销。显然,永久事件消费者更具实用性。还是来看个例子:
nslink="winmgmts:\\.\root\cimv2:"         '只需要本地连接,所以用这种语法,不用swbemlocator对象'
set asec=getobject(nslink&"ActiveScriptEventConsumer").spawninstance_   '创建“活动脚本事件消费者”'
asec.name="stopped_spooler_restart_consumer"                  '定义消费者的名字'
asec.scriptingengine="vbscript"                               '定义脚本语言(只能是vbscript)'
asec.scripttext="getobject(""winmgmts:win32_service='spooler'"").startservice"  '脚本代码'
set asecpath=asec.put_                                        '注册消费者,返回其链接'
set evtflt=getobject(nslink&"__EventFilter").spawninstance_   '创建事件过滤器'
evtflt.name="stopped_spooler_filter"                          '定义过滤器的名字'
qstr="select * from __instancemodificationevent within 5 "    '每5秒查询一次“实例修改事件”'
qstr=qstr&"where targetinstance isa ""win32_service"" and "   '目标实例的类是win32_service'
qstr=qstr&"targetinstance.name=""spooler"" "                  '实例名是spooler'
qstr=qstr&"and targetinstance.state=""stopped"""              '实例的state属性是stopped'
evtflt.query=qstr                                             '定义查询语句'
evtflt.querylanguage="wql"                                    '定义查询语言(只能是wql)'
set fltpath=evtflt.put_                                       '注册过滤器,返回其链接'
set fcbnd=getobject(nslink&"__FilterToConsumerBinding").spawninstance_  '创建过滤器和消费者的绑定'
fcbnd.consumer=asecpath.path                                            '指定消费者'
fcbnd.filter=fltpath.path                                               '指定过滤器'
fcbnd.put_                                                              '执行绑定'
wscript.echo "安装完成"
本文转摘自『IT学习者』http://www.itlearner.com/article/2008/4024_4.shtml
责任编辑:
相关文章
 
  Copyright © 2007 上海旭强信息科技有限公司版权所有