能力值:
( LV2,RANK:10 )
|
-
-
2 楼
PML4E PDPTE PDE PTE 全都看看
|
能力值:
( LV9,RANK:280 )
|
-
-
3 楼
0x8003f048超过GDT.limit限制了。顺便,你说你的分页是2 9 9 12 那不是不是PDPTE也要改
最后于 2020-7-19 10:57
被hzqst编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
好的我去找找资料 limit 是0xFFFFFFFF啊 0x8003f048没超出限制啊, PDPTE我去查查,我那个教程的老师提都没题。。。,因为才刚开始保护模式刚学段,页还没有学,大佬们,10 10 12直接改 PDE和PDT就可以了吧
|
能力值:
( LV9,RANK:280 )
|
-
-
5 楼
taolaoda
好的我去找找资料 limit 是0xFFFFFFFF啊 0x8003f048没超出限制啊, PDPTE我去查查,我那个教程的老师提都没题。。。,因为才刚开始保护模式刚学段,页还没有学,大佬们,10 ... 用户模式GDT我没记错是0x80000000,cs段寄存器在用户模式时指向的GDT表项不会允许让你读取超过80000000的,你说的FFFFFFFF应该是内核模式的GDT
最后于 2020-7-19 11:25
被hzqst编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
好像不对吧,保护模式也段和页对内存的保护,Ring3默认段选择子的话Base=0 Linmit=0xFFFFFFFF,我也构造过 Limit=0x1fff ,这样的说随便访问一个数据直接挂 ,至于Ring3为什么不能访问内核的数据,是因为,在段权限检查过了,还有一个页的保护,在页RIng3不能访问Ring0是因为在PTE PDE对物理页的属性做了限制,我的对段页的理解就是就像if(A&&B) 需要A成立B成立if里面的的代码才能执行,当然我说的指数据段(不知道我的理解有没有问题) 因为我们读写数据检查的数据段而不是cs段(当然每一行指令执行也有一个代码段的检查),我不理解,cs段寄存器在用户模式时指向的GDT表项不会允许让你读取超过80000000的??这句话含义好像和cs没有关系吧,数据段的检查关代码段什么事
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
很不巧,你就是记错了,r3模式的代码段选择子0x1b对应的描述符limit 是0xFFFFFFFF
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
很不巧,你就是记错了,r3模式的代码段选择子0x1b对应的描述符limit 是0xFFFFFFFF
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
很不巧,你就是记错了,r3模式的代码段选择子0x1b对应的描述符limit 是0xFFFFFFFF
|
|
|