01 - DPL,CPL,RPL的权限检查整理

我们之前一直搞不懂这三者的权限检查以及关系,这篇文章我们来梳理一下三者的关系。

DPL - 段描述符表,用于访问该段的特权级别,是段描述符的一部分;

CPL - 当前段的描述级别,放在代码段寄存器的低两位中,表示当前CPU的处理级别;

RPL - 段选择子的一部分,用于指定请求访问段的特权级别。

区分DPL与RPL,一个是段描述符表,一个是段选择子。

比如我们要进入零环,此时ds的值要改为零环,有这个汇编代码 "mov ds, ax(零环的段选择子)",此时就要来进行相关权限检查,如果权限检查通过,就加载段描述符表。而ax中保存着RPL,段描述符中保存着DPL。

RPL相当于DPL的一个大门,来拦截非法访问,有公式 max(CPL, RPL) <= DPL,我们人为设计了一道大门,当mov ds,ax加载成功了,我们就可以访问零环代码段的数据,但是在这之前必须经过段选择子,如下,有下面四种情况。

① 是一个标准的零环代码段的情况,现在来分析,当CPL = 3时,其直接max = 3 > DPL = 0,直接禁止访问;当CPL = 0 时,都处于内核的情况,直接可以访问。

② 同理,访问三环的数据,哪怕零环也是可以做到的。

③ 这种情况是不可能发生的,三环的权限来请求零环的代码,这当然是不可能的。

④ 这种情况有些多余,这个是可以加载成功的,访问三环的代码段。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值