首页
社区
课程
招聘
[求助]请求特权级RPL有关概念理解
发表于: 2017-12-22 10:26 3960

[求助]请求特权级RPL有关概念理解

2017-12-22 10:26
3960

请求特权级RPL有关概念理解


注:《x86汇编语言-从实模式到保护模式》(李忠等著),以下简称《从实模式到保护模式》


几个概念:

1、RPL:RPL的意思是请求特权级(Request Privilege Level)。不管是实施控制转移,还是访问数据段,这都可以看成是一个请求,请求者提供一个段选择子,请求访问指定的段。从这个意义上来说,RPL也就是指请求者的特权级别。【《从实模式到保护模式》P253】


2、引入RPL的原因是处理器在遇到一条将选择子传送到段寄存器的指令时,无法区分真正的请求者是谁。但是,引入RPL本身并不能完全解决这个问题,这只是处理器和操作系统之间的一种协议,处理器负责检查请求特权级RPL,判断它是否有权访问,但前提是提供了正确的RPL;内核或者操作系统负责鉴别请求者的身份,并有义务保证RPL的值和它的请求者身份相同[1],因为这是处理器无能为力的。【《从实模式到保护模式》P255】


上段中“……内核或者操作系统负责鉴别请求者的身份,并有义务保证RPL的值和它的请求者身份相同[1],……。”关于这句话的理解,我的理解如下,不知道是否正确,向各位请教:

当前指令发起的请求的请求特权级RPL必须与其当前特权级CPL相等(或者低于CPL,也就是在数值上,必须RPL≥CPL)。

例如,如果当前指令的CPL为3,那么,由它发起的,任何诸如控制转移或者访问数据段之类的请求的请求特权级RPL也必须是3?是否同时也意味着,当前指令中提供的选择子中的RPL肯定也必须是3?

如果当前指令的CPL为2呢?此时,指令提供的选择子中的RPL是必须为2?还是2或者3都可以呢?



[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 12
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
注册2年多,你就发了6个贴,水潜的很深啊。
你上面说的,我也不是很懂。
但你好像漏了一个DPL了。
打个比方:
CPL(0=皇上,1=宰相,2=巡抚,3=芝麻官),RPL(0=皇上,1=宰相,2=巡抚,3=芝麻官),DPL(0=皇宫,1=宰相府,2=巡抚府,3=XX县)
如果当前:CPL=0,RPL=2,DPL=3。你现在是皇上,我要去XX县,你可以用自己皇上的身份去,我也可以冒充宰相,巡抚的身份去。县官看见你了,就大人前,大人后的叫你了,去哪里都畅通无阻。
但是当你:CPL=3,RPL=0,DPL=0。你一个芝麻官,要冒充皇上,还要进皇宫...(还企图进后宫...^_^)...皇宫守卫(处理器)一眼就发现你不是皇上,
大喊:敢冒充皇上,来人啊,推出去,午门斩首。于是电脑就异常死机了。
上面的比喻也有很多不合理的地方,我的理解也不一定是正确的,发现错误的地方,还请指正。
某些时候RPL是被忽略的,比如一致性代码段的时候,还有调用门的时候是可以从R3跳到R0的。
2017-12-22 15:04
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3



Vxlan

注册2年多,你就发了6个贴,水潜的很深啊。
你上面说的,我也不是很懂。
但你好像漏了一个DPL了。
打个比方:
CPL(0=皇上,1=宰相,2=巡抚,3=芝麻官),RPL(0=皇上,1=宰相, ...
说句实话吧,来逛的多,但是因为接触逆向时间不长,加上只是兴趣爱好,不是本职工作,断断续续学习。所以没学习到什么东西,不敢发帖~
这次在看雪发帖还是因为已经卡在这个地方半个月了,同时在别的论坛也没得到较好的答案,才斗胆在这里发帖子
2017-12-22 16:22
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
Vxlan 注册2年多,你就发了6个贴,水潜的很深啊。 你上面说的,我也不是很懂。 但你好像漏了一个DPL了。 打个比方: CPL(0=皇上,1=宰相,2=巡抚,3=芝麻官),RPL(0=皇上,1=宰相, ...
我发了6个帖子?我以为除了今天这个,我只发了一个
2017-12-22 16:23
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Vxlan 注册2年多,你就发了6个贴,水潜的很深啊。 你上面说的,我也不是很懂。 但你好像漏了一个DPL了。 打个比方: CPL(0=皇上,1=宰相,2=巡抚,3=芝麻官),RPL(0=皇上,1=宰相, ...
你说的这个道理我是知道的,但是我是想问具体指令在执行的时候,处理器是如何处理的,如何检查的。
2017-12-22 16:24
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6



Vxlan

注册2年多,你就发了6个贴,水潜的很深啊。
你上面说的,我也不是很懂。
但你好像漏了一个DPL了。
打个比方:
CPL(0=皇上,1=宰相,2=巡抚,3=芝麻官),RPL(0=皇上,1=宰相, ...
.......并有义务保证RPL的值和它的请求者身份相同.......
我就是想知道,它具体是如何保证的?还有就是什么叫“和它的请求者身份相同”,必须等于CPL才叫相同?还是低于等于CPL才叫相同。
因为书中的例子里,内核也是作者写的,用户程序也是作者写的,
在内核中,作者把调用门描述符回填到用户程序头部的时候,是专门把选择子的RPL置“3”了的。真正的操作系统加载用户程序的时候,也是这样操作的吗?
2017-12-22 16:28
0
雪    币: 12
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
你好,我也是个小白,和你一样,不是专业计算机的。你说的书本上的代码我也没看过。我理解的是,CPL不是一定要和RPL相同。比如,在一致性代码段里面会忽略RPL的。你可以做个实验,在一致性代码段里面,CPL=3,DPL=3,分别把RPL设为0,1,2,3,看看访问是否能通过?
2017-12-24 12:08
0
雪    币: 78
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
pjunhanmu Vxlan 注册2年多,你就发了6个贴,水潜的很深啊。 你上面说的,我也不是很懂。 但你好像漏了一个DPL了。 打个比方: CPL(0=皇上,1=宰相 ...
我给你说现代操作系统不用RPL,所以不要设想比如Windows怎么用RPL的。
之前我也被绕蒙了,上网查还都是那些省长市长的狗屁例子,和废话一样。
2017-12-24 13:09
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
Vxlan 你好,我也是个小白,和你一样,不是专业计算机的。你说的书本上的代码我也没看过。我理解的是,CPL不是一定要和RPL相同。比如,在一致性代码段里面会忽略RPL的。你可以做个实验,在一致性代码段里面,CP ...
基本已经搞懂了,我看了以下IA-32软件开发手册里JMP和CALL的逻辑实现过程,已经弄懂。
2017-12-24 17:11
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
ZChameleon 我给你说现代操作系统不用RPL,所以不要设想比如Windows怎么用RPL的。 之前我也被绕蒙了,上网查还都是那些省长市长的狗屁例子,和废话一样。
我还没学习到windows下的编程,所以不知道windows环境下RPL不用呢。
2017-12-24 17:11
0
雪    币: 12
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
ZChameleon 我给你说现代操作系统不用RPL,所以不要设想比如Windows怎么用RPL的。 之前我也被绕蒙了,上网查还都是那些省长市长的狗屁例子,和废话一样。
他看的那本书好像所有代码都是在无操作系统下执行的,引导代码都是自己写的。
2017-12-24 17:31
0
雪    币: 12
活跃值: (35)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
pjunhanmu 基本已经搞懂了,我看了以下IA-32软件开发手册里JMP和CALL的逻辑实现过程,已经弄懂。
有时间指点指点我,我也还在学习汇编。
2017-12-24 17:34
0
雪    币: 405
活跃值: (2275)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
现代操作系统对保护模式下很多东西用的比较少,早期WIN9X系列还用LDT,也已被放弃了。R0也不复当年之勇,现在都喜欢用VMX了。
2017-12-25 11:30
0
游客
登录 | 注册 方可回帖
返回
//