能力值:
( 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是会返回的
这么说吧……典型的多个生产者一个消费者的情形,给你个例子参考,几乎可以复制了
a0fK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0D9L8$3N6Q4x3X3g2U0M7$3c8F1i4K6u0W2L8X3g2@1i4K6u0r3P5X3c8D9x3e0l9I4y4W2)9J5c8X3q4J5N6r3W2U0L8r3g2Q4x3V1k6V1k6i4c8S2K9h3I4K6i4K6u0r3y4e0p5#2y4U0t1^5x3l9`.`.
|
能力值:
( 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依然可以打开
6b4K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0D9L8$3N6Q4x3X3g2U0M7$3c8F1i4K6u0W2L8X3g2@1i4K6u0r3L8h3!0J5k6i4N6A6L8X3c8G2N6%4y4Q4x3V1k6S2M7Y4c8A6j5$3I4W2i4K6u0r3k6r3g2@1j5h3W2D9M7#2)9J5c8U0M7^5x3U0x3#2y4K6t1`.
遗弃问题,请问大婶们能解决不呢?
|
能力值:
( 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)
...
|
|
|