首页
社区
课程
招聘
[求助]遇到了1个内核I/O定时器例程的问题
发表于: 2011-7-20 15:29 4769

[求助]遇到了1个内核I/O定时器例程的问题

2011-7-20 15:29
4769
关于_EPROCESS 摘链隐藏进程 我自写了一个函数 放在DriverEntry中执行 可以顺利的隐藏掉进程

但是 放在 I/O定时器 的例程中 就会蓝屏  想求教下高手的经验 出了什么问题

书上谈到 I/O定时器的例程 是运行在DISPATCH_LEVEL 等级上的 无法使用分页内存

我已在 I/O定时器例程前 加了 #pragma code_seg()  目前情况就是如此

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
0: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

DRIVER_IRQL_NOT_LESS_OR_EQUAL (d1)
An attempt was made to access a pageable (or completely invalid) address at an
interrupt request level (IRQL) that is too high.  This is usually
caused by drivers using improper addresses.
If kernel debugger is available get stack backtrace.
Arguments:
Arg1: fffffffc, memory referenced
Arg2: 00000002, IRQL
Arg3: 00000000, value 0 = read operation, 1 = write operation
Arg4: f79270a7, address which referenced memory

Debugging Details:
------------------


READ_ADDRESS:  fffffffc 

CURRENT_IRQL:  2

FAULTING_IP: 
event+10a7
f79270a7 83b98400000004  cmp     dword ptr [ecx+84h],4

CUSTOMER_CRASH_COUNT:  9

DEFAULT_BUCKET_ID:  COMMON_SYSTEM_FAULT

BUGCHECK_STR:  0xD1

PROCESS_NAME:  Idle

LAST_CONTROL_TRANSFER:  from f792703b to f79270a7

STACK_TEXT:  
WARNING: Stack unwind information not available. Following frames may be wrong.
805522ac f792703b 00000000 85695d88 805522e0 event+0x10a7
805522bc 804f578e 85695cd0 00000000 804f5740 event+0x103b
805522e0 8050320f 8055bdc0 00000000 5f6862b6 nt!IopTimerDispatch+0x4e
805523fc 8050332b 8055d0c0 ffdff9c0 ffdff000 nt!KiTimerListExpire+0x14b
80552428 80546e7f 8055d4c0 00000000 00016653 nt!KiTimerExpiration+0xb1
80552450 80546d64 00000000 0000000e 00000000 nt!KiRetireDpcList+0x61
80552454 00000000 0000000e 00000000 00000000 nt!KiIdleLoop+0x28


STACK_COMMAND:  kb

FOLLOWUP_IP: 
event+10a7
f79270a7 83b98400000004  cmp     dword ptr [ecx+84h],4

SYMBOL_STACK_INDEX:  0

SYMBOL_NAME:  event+10a7

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: event

IMAGE_NAME:  event.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  4e26756f

FAILURE_BUCKET_ID:  0xD1_event+10a7

BUCKET_ID:  0xD1_event+10a7

Followup: MachineOwner
---------


dump 信息如上
2011-7-20 15:31
0
雪    币: 2314
活跃值: (2205)
能力值: (RANK:400 )
在线值:
发帖
回帖
粉丝
3
本来就运行在DISPATCH_LEVEL 级别的例程你加#pragma code_seg()还是在DISPATCH_LEVEL 级别运行啊。
2011-7-20 15:48
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
加#pragma code_seg() 防止使用分页内存 导致蓝屏  目前蓝屏原因尚未找到 尝试降低IRQL等级不知道可行不
2011-7-20 15:56
0
雪    币: 2314
活跃值: (2205)
能力值: (RANK:400 )
在线值:
发帖
回帖
粉丝
5
运行在DISPATCH_LEVEL 级别的代码本来就不能分页啊
2011-7-20 15:59
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好像是 遍历EPROCESS链表的时候 会访问到 分页内存导致了蓝屏

我的猜想不知道是否正确

我想在EPROCESS的链表中遍历进程  是不是就不可以在 内核定时器中进行了

哪位高手写过 给点意见
2011-7-20 17:39
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不知道是不是I/O例程切换进程 引起的 (如果是 引起原因是什么 不清楚) 是不是要上自旋锁呢  高人给点意见吧
2011-7-21 01:09
0
游客
登录 | 注册 方可回帖
返回
//