首页
社区
课程
招聘
[求助]一个小问题,不知道是哪里的问题,求助。
发表于: 2018-5-9 17:13 3154

[求助]一个小问题,不知道是哪里的问题,求助。

2018-5-9 17:13
3154
第一步,我用PsLookupProcessByProcessId得到进程的EPROCESS
第二步,我向这个进程内所有的线程都插入的APC,在APC内获得Cr3并且与EPROCESS中的Cr3进行比对

第三步,循环结束,我根据获取到的多个Cr3进行判断,如没有TrueCr3,赋值EPROCESS中的Cr3给TrueCr3

理论上,如果在APC通过判断得到的TrueCr3是已经被赋值了,那循环过后的判断应该就无法成功才对(也就是不会使用默认Cr3),但是结果出人意料

TrueCr3在APC内的确被赋值了,但是循环结束后,他就匪夷所思的变成0了,然后就使用了默认的EPROCESS中的Cr3,APC内赋值后,到了外面就变成0了,他是怎么变的?求解!

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 1641
活跃值: (3601)
能力值: (RANK:15 )
在线值:
发帖
回帖
粉丝
2
两小时惨案
2018-5-9 19:15
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
3
tesvbox很久以前(大概去年还是前年)被人疯狂还原true  cr3之后就加了个无限设置EPROCESS->DirTableBase=false  cr3了
2018-5-10 08:22
0
雪    币: 1641
活跃值: (3601)
能力值: (RANK:15 )
在线值:
发帖
回帖
粉丝
4
那为啥循环结束后会还原我全局变量里的值啊
2018-5-10 09:14
0
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
5
刘铠文 那为啥循环结束后会还原我全局变量里的值啊
因为APC所在线程里对TrueCR3变量的修改,并没有及时同步到后面打印所在的线程上,毕竟你没有给TrueCR3加锁不是吗,而且这个时间差在0.00x秒数量级上,确实可能出现多线程同步问题。所以你在最后打印的地方看到的TrueCR3是0
最后于 2018-5-11 14:06 被hzqst编辑 ,原因:
2018-5-11 14:05
0
雪    币: 1641
活跃值: (3601)
能力值: (RANK:15 )
在线值:
发帖
回帖
粉丝
6
好的,学到了
2018-5-11 14:32
0
游客
登录 | 注册 方可回帖
返回
//