首页
社区
课程
招聘
[讨论]关于V大POOL驱动的梗疑问~
发表于: 2014-5-14 08:15 5541

[讨论]关于V大POOL驱动的梗疑问~

2014-5-14 08:15
5541
看了V大的那个老文章帖子
也看了虾总原来的帖子
V大原帖:http://bbs.pediy.com/showthread.php?t=187402

但是我自己产生了疑问

测试环境 WIN7 x86 SP1
PELoader重载NT内核
然后NtOpenProcess(0x55555555,,,)
故意触发SEH

理论上这时候应该蓝了。。。但是SEH正常执行。。这是为什么。。。

按照V大和虾总的文章意思 应该必蓝。。。

我尝试了3次结果一样。。所以很无解。。。

WINDBG跟过去 确实无法读写。。但是SEH却正常处理了。。。求解 Why?

==================================2014.5.14 8:56笔记
写了个Demo又WINDBG仔细跟了下  应该是我重定位完全用旧内核的地址原因  上面的问题就解决了
83cb2cdf 8b4304          mov     eax,dword ptr [ebx+4]
83cb2ce2 e8a9a5ffff      call    nt!RtlIsValidHandler (83cad290)
RtlIsValidHandler的ControlPC是原内核的。。。传参居然用的EAX。。。
kd> bl
0 e 95b2e40f     0001 (0001)
1 e 83cc1f95     0001 (0001) nt!RtlLookupFunctionTable
2 e 83cc2051     0001 (0001) nt!RtlLookupFunctionTable+0xbc
3 e 83cad290     0001 (0001) nt!RtlIsValidHandler
这样的话RtlLookupFunctionTable肯定能正确返回。。。

这里产生个新问题:这样的话异常不就没问题么 那为什么V大说 很多人内核重载蓝屏因为POOL驱动
但是如此看来 如果我重定位的时候全部使用旧内核的地址 不就不存在这个问题了么(导致流程走原旧内核,但是影响不大啊)
那么 完全把地址重定位到旧内核 到底还会不会导致出现V大说的这个问题呢?

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

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
这是一个值得确认的问题,
因为,n多人用重载内核,
内核中无时无刻都在触发异常然后解决异常,
但是,怎么就没人发现这种太阳从东边起的bug?
2014-5-14 09:02
0
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
晕,灵光一闪,难道是x86没这个问题,x64系统才有的问题,囧~

啊~~谁去测试一下吧~~~
2014-5-14 09:04
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
pool驱动,内核重载,还有复制game.dll运行副本,这样操作会出现一些意想不到的问题的。如果被重载的可执行模块是规范编译出来的可执行代码,还有其数据复制以后不影响运行,那么就可以重载,这是要经过完整的逐条汇编代码论证过后才能得出这个模块是否可重载的结论。如果某些模块不能重载,那么使用中可能暂时没问题,但一旦出现意想不到的问题那就很麻烦了。
2014-5-14 09:53
0
雪    币: 468
活跃值: (52)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
当然,如果你能把一个模块所有代码都分析透彻,你重载一份来使用,不如说是你自己编写实现该模块的所有功能,那样有什么不可以,谁也拦不住你啊。你的目标模块该实现的功能,我都自己手写一遍,不用你的模块用我自己的模块来实现。呵呵,所以分析其他模块所有代码全部分析一遍是不现实的。
2014-5-14 10:15
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
6
有些奇葩的情况会蓝的飞起。SEH落点在新内核情况。
2014-5-14 10:30
0
雪    币: 229
活跃值: (508)
能力值: ( LV10,RANK:170 )
在线值:
发帖
回帖
粉丝
7
表示pool驱动产品中用了很多年了 也一直没出现过任何问题 x86 and x64
2014-5-14 10:47
0
雪    币: 267
活跃值: (438)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
8
我个人看法是:你重载内核后,物理内存使用比例还远远没有到换页程度,基本的分页内存数据还没有被换页写到页文件,所以你没有碰到蓝屏,你是否可以在你重载后想办法让非分页内存使用率紧张起来,也许就能见到你想要的蓝屏。
2014-5-14 11:36
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
9
100W用户,还是1000W用户?,还是1亿用户,还是10亿用户?

表示见过100W用户的POOL驱动的各种蓝屏了~
其他级别没见过。
2014-5-14 12:08
0
雪    币: 2161
活跃值: (750)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
10
如果处理重定位的时候全部指向原模块,异常处理函数指向原模块,所以不会蓝。
我以前做的时候就是区分了重定位代码和变量,除变量外的所有重定位指向新模块,就需要添加LDR来解决异常问题了
2014-5-14 12:45
0
雪    币: 371
活跃值: (72)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
11
原来如此.这个有道理
2014-5-14 13:03
0
游客
登录 | 注册 方可回帖
返回
//