首页
社区
课程
招聘
[求助]访问KTHREAD 很诡异的蓝屏。。
发表于: 2013-8-1 10:36 5409

[求助]访问KTHREAD 很诡异的蓝屏。。

2013-8-1 10:36
5409
最近写了个程序 要遍历系统中所有线程数据,一开始只通过ETHREAD获取线程ID、所关联的进程名等信息的时候是没有问题的,后来通过KTHREAD访问TrapFrame获取线程寄存器信息的时候的时候就会蓝屏。蓝屏代码为

PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced.  This cannot be protected by try-except,
it must be protected by a Probe.  Typically the address is just plain bad or it
is pointing at freed memory.

eax=b1c6dd64 ebx=894f8371 ecx=b1c6dd64 edx=b1c6dd64 esi=e1003108 edi=894d5020
eip=babe943d esp=b1a85d18 ebp=b1a85d38 iopl=0         nv up ei ng nz na po nc
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010282
Driver1!MyEnumHandleRoutine+0x8d:
babe943d 8b482c          mov     ecx,dword ptr [eax+2Ch] ds:0023:b1c6dd90=00000000

用windbg看了一下 所访问的内存不是空地址 是有值的,但是不知道为什么用程序访问就直接蓝屏,是不是KTHREAD的TrapFrame不能随便访问?有没有访问条件啥的? 我看wrk里NtGetContextThread是引用TrapFrame里的数据,不知道有啥注意事项?

kd> dd b1c6dd64+2c
b1c6dd90  00000000 00000000 00000023 022c0023
b1c6dda0  0021c000 7c80a085 7dd58d18 00000001
b1c6ddb0  ffffffff 0000003b 022cfdcc 00000000
b1c6ddc0  00000000 022cfdf4 00000000 7c92e4f4
b1c6ddd0  0000001b 00000206 022cfd9c 00000023
b1c6dde0  00000000 00000000 00000000 00000000
b1c6ddf0  0000027f e7ff0000 00000000 00000000
b1c6de00  00000000 00000000 00001f80 01f9ed3a

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
如果我没猜错的的话,mov     ecx,dword ptr [eax+2Ch]
上面是mov eax,fs:[0x124]
fs段,0x30?0x3b?
2013-8-1 11:37
0
雪    币: 53
活跃值: (734)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
上面是自己的代码 没有对FS进行操作 进了sysenter之后 就应该是30了
2013-8-1 13:29
0
雪    币: 115
活跃值: (46)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
wrk中的例程会检测是否为KernelMode,如果切换到目标线程再获取还会蓝吗
或提IRQL到DPC?
2013-8-1 16:13
0
雪    币: 233
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
!pte b1c6dd64 ?
2013-8-1 17:20
0
雪    币: 185
活跃值: (86)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
TrapFrame只有在thread suspended, swapped等情况下才有效。
2013-8-2 00:52
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
这很明显是一个页故障
目标PTE在当前进程里面没有描述
不切换过去,是无法访问的
另外,DPC不允许有页故障,也不会触发缺页中断,遇到页故障会直接蓝
2013-8-2 07:16
0
游客
登录 | 注册 方可回帖
返回
//