首页
社区
课程
招聘
windows内核空间页表问题
发表于: 2016-11-30 14:49 4996

windows内核空间页表问题

2016-11-30 14:49
4996
老师们,问一个问题,就是windows进程共享系统地址空间,但是在一个内核进程获得控制权的时候,其实怎么使用页表的?虽然共享系统地址空间,但是所有进程的页表对应的系统地址空间不一定一致 啊,比如说我们后来加载一个驱动,驱动运行使用的页表也是从CR3获取的吗?

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 12848
活跃值: (9147)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
从cr3里取,每个进程的cr3都不一样

所有进程的内核地址空间的映射结果(VA to PA)都是一样的,除了Session地址空间,同一个session的进程的映射结果是一样的(所谓的session隔离),System进程和smss进程没有对session地址空间的映射

驱动加载是在System进程中的

你应该看一看这个

2016-11-30 15:12
0
雪    币: 2291
活跃值: (938)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
你这段话跟当初带我出道的老司机说的简直一模一样!
2016-11-30 15:55
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢老师,意思是驱动其实是运行在system进程空间中的,不考虑session情况下,在内核线程从用户线程手中获得控制权,那么必然要把CR3切换到system进程的页表?是这样吗?还有一个问题,就是驱动申请的内存应该就是记录在system进程的页表中了,而在以后的用户进程发生系统调用要用到那块内存时,虽然那块内存已经分配并记录到system进程的页表,但是用户进程的页表的对应项并没有被填充,所以这个时候发生pagefault,但是仅仅是同步一下PTE,是这样的吗老师??谢谢
2016-11-30 18:20
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
一看就知道您也已经是老司机了!!还请不吝赐教!!
2016-11-30 18:21
0
雪    币: 2291
活跃值: (938)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
完全不是这样。
不能简单说驱动运行在system进程空间中,内核模式的代码随着情况不同可能运行在任何进程空间中。比如你挂的钩子,添加的回调,注册的过滤器,等等
2016-12-1 13:46
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
恩恩,不好意思老师,没表达清楚,我意思是驱动加载的时候是system进程加载的,其申请的空间首次是映射在system进程的页表中,之后当在其他进程空间访问的时候,在同步页表!这么理解对么?
2016-12-1 14:24
0
雪    币: 2291
活跃值: (938)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
8
申请的空间?是指什么
2016-12-1 15:06
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
比如说我在换页内存区申请一个页面,写入某些数据,,该页面在写入之前没有对应的物理页面,且也没有建立页表,在写入的时候就会自动分配物理页面并建立页表项,这个时候,建立的页表是属于哪个进程的?system进程?
2016-12-1 15:33
0
雪    币: 2291
活跃值: (938)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
10
内核空间除了session部分外,其他进程看到的都是同一份,不存在属于哪个进程空间的说法。
2016-12-1 16:07
0
游客
登录 | 注册 方可回帖
返回
//