利用CreateEvent函数不让微点启动

来源:互联网 发布:钢材交易软件 编辑:程序博客网 时间:2024/04/28 06:05
 

玩玩微点之一:利用CreateEvent函数不让微点启动

今天看书,买了好久的好书——《Windows核心编程》。看到内核对象,3.3.4 节讲“终端服务器的名字空间”,内容是说:如果存在一个可供内核对象使用的全局名字空间,就意味着它可以供所有的客户程序会话访问。Windows中就有这样的全局名字空间:"Global/" ,将"Global/"置于对象名前面,就可以使命名对象进入全局名字空间。——你是否想到什么呢?

为了跨域进程边界来共享内核对象,微点无非就是那么几种办法,开始我以为用的是:可继承句柄或命名对象的方法。后来反了一下微点的主程序:MPStart.exe,发现貌似不是这样,当我看到下面的东西,我很坚定的相信微点用的是上面提到的全局名字空间的方法。哈哈!
Copy code
.data:00408060 ; char Name[]
.data:00408060 Name            db 'Global/MPMon_6934D571-115B-4830-AC5C-02A0D08179C5',0


sub_401170 proc near
push    esi
push    edi
xor    edi, edi
push    offset Name    ; "Global//MPMon_6934D571-115B-4830-AC5C-02"...
push    edi            ; bInitialState
push    edi            ; bManualReset
push    edi            ; lpEventAttributes
call    ds:CreateEventA
mov    esi, eax
call    ds:GetLastError
cmp    eax, 0B7h
jnz    short loc_401196
--------------------------------------------------------------------------------------------

.data:004080A4 ; char aGlobalRebootev[]
.data:004080A4 aGlobalRebootev db 'Global/REBOOTEVENT_6934D571-115B-4830-AC5C-02A0D08179C5',0


loc_401875:
push    esi
push    edi
xor    edi, edi
push    offset aGlobalRebootev ; "Global//REBOOTEVENT_6934D571-115B-4830-A"...
push    1              ; bInitialState
lea    edx, [esp+20h+EventAttributes]
push    edi            ; bManualReset
push    edx            ; lpEventAttributes
call    ds:CreateEventA
mov    esi, eax
test    esi, esi
jz      short loc_4018AB


看到上面的东西,我的坏心眼出来啦!我们是不是可以在微点启动之前,或者微点没有启动的状态下,利用CreateEvent函数先微点一步,创建这个'Global/MPMon_6934D571-115B-4830-AC5C-02A0D08179C5'标识的内核对象,这样我估计微点八成是起不来了。

我写了一个小Demo,测试了一下,发现果然不出我所料,我先把微点关掉,然后运行我的demo:




这时候,你再去启动微点,微点是绝对启动不起来的,除非把我的程序先退出掉,或者释放掉上面创建的那个内核对象。哈哈!

当然了,大家会说,你这是一泡屎,人家微点就不退出,你根本没机会!——不一定吧,我要是写一个程序一直监视微点活着没,如果发现微点没在,我就赶紧创建上面那个内核对象,我看微点怎么办,要知道微点总会自动升级的,而且有时候自动升级完成后,会重启,这中间有大概3秒左右时间吧,够我创建一个内核对象了吧!哈哈!顺便说一下,我个人认为今后这样的智能木马才是大势所趋,那些野蛮的木马就是一泡屎!

好了就写到这里,声明下:本Demo没有恶意,只是学习、测试而已!

希望微点重视一下,我个人不推荐使用全局名字空间,而推荐使用可继承句柄的方法来在进程间共享内核对象。

Demo及源码下载:
利用CreateEvent函数不让微点启动.rar
利用CreateEvent函数不让微点启动.rar
原创粉丝点击