首页
社区
课程
招聘
[求助]Shadow Walker 是不是无法隐藏 非分页内存(Non paged)?
发表于: 2009-6-1 22:32 6214

[求助]Shadow Walker 是不是无法隐藏 非分页内存(Non paged)?

2009-6-1 22:32
6214
这几天一直在研究Shadow Walker , 原本想利用Shadow Walker 的原理,做个程序,直接隐藏指定的EPROCESS,然后当是系统在调用的时候,就返回正确的EPROCESS,如果是其他模块的调用就返回假的,思路大概就是这样。

然后写代码测试的时候发现,
如果将 ERPOCESS 所在的页的PDE(因为是大页面,所以不用PTE)设为不存在后,下一步调用 Invlpg pEprocess 就直接蓝了,这种情况在之前我想 hook NT模块所在页的时候也出现过。

或者是设置了页不存在,调用 invlpg 也没蓝,但是就是不进入我的 NewInt0E,看上去就像Shadow Walker 没有起作用一样。

后面看到EPROCESS一般是放在 80000000-9FFFFFFF这段虚拟地址的,这段地址一般是驻留的系统空间的数据和代码,由此想到EPROCESS 可能是属于非分页内存(NonPaged)数据。

然后怀疑这条路走不通,所以上来这里问一下,两个问题
(1)请问我这个思路可行么?
(2)我的实验是否表明Shadow walker 存在这样一个问题。。。
那就是只能隐藏分页内存(PAGED),一旦某块内存是非分页的(NONPAGED)那么试图用shadow Walker 的方式去隐藏,就会造成系统崩溃?

还请牛牛们指点一下。。。

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
2
非分页的,你不会标志位分页的啊
2009-6-1 23:29
0
雪    币: 241
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
哦,还可以把非分页的设置为分页的么??

MJ大大,如何设置啊?

是改页表标志位的 9~11 位么??可查的资料似乎没有说怎么将非分页设置为分页的

来来,MJ大大,送佛送到西,说清楚点吧~~~
2009-6-2 01:28
0
雪    币: 241
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
上来看一下。。。
2009-6-2 13:35
0
雪    币: 241
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
等牛人。。。。
2009-6-2 20:13
0
雪    币: 1270
活跃值: (230)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
Invlpg pEprocess 好像有点问题(Shadow Walker本来就有),看看这个

By the way, Shadow Walker's HookMemoryPage() routine has a bug.

//Go ahead and flush the TLBs. We want to guarantee that all
//subsequent accesses to this hooked page are filtered
//through our new page fault handler.
__asm invlpg pExecutePage


This will not flush the needed TLB if the compiler has not moved pExecutePage value to the register: it will flush the TLB entry for the page where pExecutePage variable resides - one of the stack pages. Use mov reg32, Address/invlpg [reg32] instead or call KiFlushSingleTb(), which is the same.


改成这样试试
mov eax,pEprocess
Invlpg [eax]
2009-6-4 09:38
0
游客
登录 | 注册 方可回帖
返回
//