首页
社区
课程
招聘
未解决 [悬赏]驱动层遍历vad二叉树时而成功时而失败。。 2.00雪花
发表于: 2017-7-9 16:02 3873

未解决 [悬赏]驱动层遍历vad二叉树时而成功时而失败。。 2.00雪花

2017-7-9 16:02
3873

在驱动层,通过遍历二叉树来遍历进程模块,可为什么有时候会枚举失败、、、明明算法什么的都正确。。。不理解,求大神解答!!!



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
2

第一先排除你的代码有问题,你代码都不发,我也不知道是不是你代码问题。

第二就是访问锁的问题,因为你遍历的时候,系统修改了某个指针,你就失败了。

和系统一样加锁操作,或者直接IRQL HIGH去遍历

2017-7-9 20:31
0
雪    币: 4
活跃值: (189)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不是代码的问题,,因为可以成功遍历出来,,就是有失败的几率。。我试试加锁访问试试
2017-7-9 21:49
0
雪    币: 4
活跃值: (189)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

        KeAttachProcess(TrageProcess);
        PULONG64 pAddrLock = (PULONG64)((ULONG64)TrageProcess + offset);//AddressCreationLock
        ExfAcquirePushLockShared((PEX_PUSH_LOCK)pAddrLock);
        PULONG64 pVadRoot = (PULONG64)((ULONG64)TrageProcess + pvadoffset);// 这里要根据版本号不同更改vadroot偏移

        __try
        {
            if (MmIsAddressValid((PVOID)*pVadRoot))
            {
                recursionVAD_s(*pVadRoot, Name);

            }

        }
        __except (TRUE)
        {
  ................................................
        }
        ExfReleasePushLock((PEX_PUSH_LOCK)pAddrLock);
        //解除挂接
        KeDetachProcess();
      


还是会遍历失败求大神解答!!!急死!!

2017-7-13 18:14
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
5
槽点太多,KeAttachProcess和try  catch是什么鬼
2017-7-13 19:42
0
雪    币: 4
活跃值: (189)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
怎么了...我菜鸟  求指点,,,,
2017-7-13 20:42
0
游客
登录 | 注册 方可回帖
返回
//