首页
社区
课程
招聘
未解决 [求助] 读取PEB中数据蓝屏问题
发表于: 2019-10-28 18:47 3547

未解决 [求助] 读取PEB中数据蓝屏问题

2019-10-28 18:47
3547
 首先声明,此问题目前仅在win10的1809跟1903上发现了,其他系统并未出现,而且即便在1809与1903上也非必现而是偶尔出现。
从dump来看的话,似乎都指向了代码中尝试从PEB中读取SessionId信息的时候,内存不可读导致了蓝屏。在读取信息前也做了KeStackAttachProcess以及ProbeForRead。
出问题的机器不方便进行调试只能反馈Dump。有没有老哥有一些想法的,提供一下可以怀疑或者排查的点,十分感谢。

补充一些信息:
!process 0 0命令去看的话发现有不少进程的handlecount是0,ObjectTable也是0的,触发的问题的csrss进程也是这样。
是否是因为这个进程实际已经结束了,但是由于某些原因仍然残留了信息,导致peb中的数据无法读取进而蓝屏。

在论坛上看到有人提到PsAcquireProcessExitSynchronization/PsReleaseProcessExitSynchronization这一组接口,看说明应该是为了防止访问时进程退出的。
但是首先在attach中我仅做了读取sessionid,并无其他操作,应该是很快速的。而且dump中显示不止一个进程是这样的状态,感觉不像是恰好在attach后恰好遇到了进程退出,更像是进程已经是这种状态一段时间了。

因此加上这一组函数是否有效,如果进程是上面提到的特殊状态,此时acquire是会返回失败吗?到底是什么原因导致了进程的这种特殊状态的出现?有没有有经验的老哥说明一下

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

最后于 2019-11-7 16:44 被MSGG05编辑 ,原因: 补充一些信息
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 12502
活跃值: (3053)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
em……这应该是驱动吧,不妨试试,读这个sessionid之前,再读点peb的其他字段,看看是就session这个字段有问题还是别的字段也有问题。
感觉会不会是有其他驱动改了?比如你的驱动probeforread了是可读的,之后很快的瞬间正好我的驱动某个操作设置为不可读了,然后你的又读就炸?
2019-10-28 19:04
1
雪    币: 13
活跃值: (402)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没有了
最后于 2019-10-31 13:03 被成啊水编辑 ,原因:
2019-10-31 13:03
0
雪    币: 6874
活跃值: (3449)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
白菜大哥 em……这应该是驱动吧,不妨试试,读这个sessionid之前,再读点peb的其他字段,看看是就session这个字段有问题还是别的字段也有问题。 感觉会不会是有其他驱动改了?比如你的驱动probe ...
调用probeforread传递的长度本身也就是peb头部到sessionid信息的长度,在dump中查看peb的信息的话,基本上所有信息都是无法读取的。
2019-11-7 17:24
0
雪    币: 12502
活跃值: (3053)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
MSGG05 调用probeforread传递的长度本身也就是peb头部到sessionid信息的长度,在dump中查看peb的信息的话,基本上所有信息都是无法读取的。
minidump文件查看不了peb的话……em,要不试试这样吧,你查看一下有哪些模块,看看用户安装了一些啥软件,也包括开放了哪些端口(尤其是打印机共享之类的),然后你虚拟机装1809,并且安装上用户同样的那些软件。这样挂调试器调试吧。然后自己写个按键精灵脚本,疯狂的打开关闭虚拟机里面的程序。
最后于 2019-11-7 19:20 被白菜大哥编辑 ,原因:
2019-11-7 19:19
0
雪    币: 9626
活跃值: (1838)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
6
虽然不清楚你这个是什么原因,但是我有个朋友的系统有个奇怪的现象,可能和你的问题有关。
在他的系统上,有进程崩溃后,进程不会完全关闭,而是处于暂停状态。
在任务管理器的“详细信息”中看不到崩溃的进程,但是可以在“性能”的“打开资源监视器”中看到崩溃的进程,且状态为“已暂停”,无法直接结束。
通过代码仍然可以遍历到这个进程,但OpenProcess、读取PEB之类的操作都会出错。
解决方法也很简单,判断一下这个进程状态是否是已暂停即可。。
希望能帮到你。
最后于 2019-11-7 20:05 被Sprite雪碧编辑 ,原因:
2019-11-7 20:04
0
雪    币: 6874
活跃值: (3449)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢指导,感觉确实跟我遇到的这个情况有些类似。我又查看这个进程的EPROCESS结构信息,其中的ProcessExit与ProcessDelete值也都是1,暂时改变了获取SessionId的方式,用未公开的PsGetProcessSessionId来获取EPROCESS里的了,起码从dump看EPROCESS里的还是正常的,目前等反馈结果中。
2019-11-9 08:52
1
雪    币: 21
活跃值: (198)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
出问题的机器不方便调试, 你搞得什么外卦 ??
2019-12-5 18:11
0
雪    币: 6874
活跃值: (3449)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
karennel 出问题的机器不方便调试, 你搞得什么外卦 ??
很简单啊,出现问题的是客户现场机器也不是我自己的机器。
2019-12-6 09:58
0
游客
登录 | 注册 方可回帖
返回
//