首页
社区
课程
招聘
[求助]频繁调用KeAttachProcess蓝屏
发表于: 2015-8-14 14:55 5567

[求助]频繁调用KeAttachProcess蓝屏

2015-8-14 14:55
5567
PEPROCESS oldEprocess = PsGetCurrentProcess();

                                if(Eprocess!=SystemEProcess)
                                {
                                        KSPIN_LOCK WriteMemLock;
                                        KIRQL      OldIrql;

                                        KeInitializeSpinLock(&WriteMemLock);
                                        KeAcquireSpinLock(&WriteMemLock,&OldIrql);

                                        KeAttachProcess(Eprocess);

                                        uRet = (UNICODE_STRING*)((ULONG_PTR)Eprocess + CHKernelHelp::EpGetEprocessOffset(PROCESS_OFFSET_SeAuditProcessCreationInfo));
                                        CHLOG(" %X \r\n",uRet->Buffer);
                                       
                                        KeAttachProcess(oldEprocess);

                                        KeReleaseSpinLock(&WriteMemLock,OldIrql);
                                }

代码如上
外层是循环 KeAttachProcess(oldEprocess); 这句话蓝屏
调用一次没问题 但是多调用几次就蓝了
本人新学请路过大牛指点

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
ADDITIONAL_DEBUG_TEXT:  
Use '!findthebuild' command to search for the target build information.
If the build information is available, run '!findthebuild -s ; .reload' to set symbol path and load symbols.

FAULTING_MODULE: 804d8000 nt

DEBUG_FLR_IMAGE_TIMESTAMP:  55cd8ff5

DEFAULT_BUCKET_ID:  DRIVER_FAULT

BUGCHECK_STR:  0x5

LAST_CONTROL_TRANSFER:  from 804fa9f4 to 8052c5ec

STACK_TEXT:  
WARNING: Stack unwind information not available. Following frames may be wrong.
ee273754 804fa9f4 00000003 8606a020 85fd1020 nt!DbgBreakPointWithStatus+0x4
ee273b34 804faf43 00000005 8606a020 86234020 nt!KeRegisterBugCheckReasonCallback+0x77c
ee273b54 804f9b98 00000005 8606a020 86234020 nt!KeBugCheckEx+0x1b
ee273b78 f79abaad 8606a020 85d7ce40 85deea50 nt!KeAttachProcess+0x66

堆栈信息
2015-8-14 15:07
0
雪    币: 67
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
把KeAttachProcess换成KeStackAttchProcess,
另外最后记得要KeUnstackDetachProcess!
2015-8-14 15:18
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
多谢hnllhuihui大牛

这些知识我可以再哪里学到 现在不知道看什么书好 能不能指点一下
2015-8-14 15:50
0
雪    币: 2161
活跃值: (750)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
KeStackAttchProcess可以多重Attach
另外你为什么要加一个局部锁,为了提升IRQL?没有必要吧?
2015-8-14 17:24
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
哦 那个是要做别的事情
取文件路径什么的 需要加锁
2015-8-14 18:40
0
雪    币: 67
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
KSPIN_LOCK WriteMemLock;
不论你要做什么,自旋锁必须要声明为全局变量,不然就不起作用!
2015-8-14 18:53
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
哦哦  原来这样 挺多书上都不让弄全局 ...
2015-8-15 07:50
0
游客
登录 | 注册 方可回帖
返回
//