能力值:
( LV2,RANK:10 )
|
-
-
26 楼
能留个你q不呢?我发图给你看看嘛!
|
能力值:
( LV2,RANK:10 )
|
-
-
27 楼
不会啊。WriteProcessMemory是内核态的函数,要是阻塞了,那还 了得?直接系统挂了,只会返回成功与否,把图发这里就行了。--!说不准有更明白人的,还帮你解答呢
|
能力值:
( LV2,RANK:10 )
|
-
-
28 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
29 楼
Hook ZwTerminateProcess 后,主进程判断后决定放行还是拦截的通信模式!
|
能力值:
( LV2,RANK:10 )
|
-
-
30 楼
挂ntdll里啦?那你的Hook程序也要到Ntdll 里找空间塞进去。然后把TerminateProcess的相关参数发到共享内存中,Hook的程序负责共享内存部份。然后主进程轮询,共享内存标志位
|
能力值:
( LV2,RANK:10 )
|
-
-
31 楼
能具体点流程不?
|
能力值:
( LV2,RANK:10 )
|
-
-
32 楼
你还是到内核里做吧,Xuetr也是内核中检测出来 的。
到内核中给NtTerminateProcess挂个内连,如果有人要结束进程,你就在内核中过滤他的参数,如果不合格就进接返回失败,这个办法即简单又安全,进程间,如果想搞这种检测,就必须attach到对方进程。然后读写相应内存,把Hook留在对方内存里。然后共享内存,两连通信,你能理解我的意思不?
|
能力值:
( LV2,RANK:10 )
|
-
-
33 楼
就是比较小菜啊,内核搞不动啊
|
能力值:
( LV2,RANK:10 )
|
-
-
34 楼
你去看两块内容:
一、内核驱动开发的相关资料
二、商业软件保护的资料。
在内核里搞远比你在进程间搞容易的多,而且想在进程间搞,需要把内核玩透了才行
|
能力值:
( LV2,RANK:10 )
|
-
-
35 楼
好的,感谢你的建议哈
|
能力值:
( LV2,RANK:10 )
|
-
-
36 楼
不客气。切记莫心急,基础很重要
|
能力值:
( LV2,RANK:10 )
|
-
-
37 楼
主线程结束了,WaitForSingleObject是会返回的
这么说吧……典型的多个生产者一个消费者的情形,给你个例子参考,几乎可以复制了
http://blog.csdn.net/zdl1016/article/details/5156280
|
能力值:
( LV2,RANK:10 )
|
-
-
38 楼
我测试的时候,WaitForSingleObject 在等待OPenMutex句柄的时候,对方如果在没有setevent之前就被结束了,WaitForSingleObject 会卡死
|
能力值:
( LV2,RANK:10 )
|
-
-
39 楼
你可以WaitForMultipleObjectsEx,一个Event,一个主线程句柄
|
能力值:
( LV2,RANK:10 )
|
-
-
40 楼
主进程 CreateEvent( nil, FALSE, FALSE, 'Global\test' ); 是这样的。MyZwCreateProcessEx 里面是这样的
zxc:=OpenEvent(EVENT_ALL_ACCESS, FALSE, 'Global\test');
WaitForSingleObject(zxc,20000);
这样创建一个进程就会开始等待,但是这个时候我的主进程在没有SetEvent结束后,还是在等待状态。就一直要等到20秒
|
能力值:
( LV2,RANK:10 )
|
-
-
41 楼
主进程被结束后,OpenEvent依然可以打开
http://blog.csdn.net/morewindows/article/details/7823572
遗弃问题,请问大婶们能解决不呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
42 楼
WaitForMultipleObjectsEx……等待event句柄和主进程句柄,在进程结束或者setevent,WaitForMultipleObjectsEx都可以返回,通过返回值可以知道是进程结束还是setevent
|
能力值:
( LV2,RANK:10 )
|
-
-
43 楼
能不能示范一个列子呢,大婶,感谢你的思路啊!
|
能力值:
( LV2,RANK:10 )
|
-
-
44 楼
进程通讯?用mailslot就行了,简单直接
|
能力值:
( LV2,RANK:10 )
|
-
-
45 楼
可以倒是可以,就是效率上没的,事件+内存映射那么好,感谢yuchengton的思路!
|
能力值:
( LV2,RANK:10 )
|
-
-
46 楼
进程通信所有的我都测试过,管道和邮件都有一个问题,可能大家没怎么遇到过,但是我遇到过,主进程退出后,wait邮件曹的函数,和 wait管道 的函数,依然不会立即返回的,会卡主!
|
能力值:
( LV2,RANK:10 )
|
-
-
47 楼
我不记得pascal里数组怎么写了……就用C代码好了
HANDLE h[2]={hEvnet, hProcess};
DWORD ret = WaitForMultipleObjectsEx(2,h,FALSE,20*1000,FALSE);
switch (ret)
...
|
|
|