在Rings之间跳转时的处理器行为

fan*_*nte 1 x86 cpu-architecture osdev kernel-mode

当某些内核代码(Ring 0)对用户代码(Ring 3)例程进行"调用"时,我找不到任何关于标准CPU(即:x86)的真正含义的具体信息.

1)执行该例程时,CPU模式状态是否变为用户模式?

2)在用户级例程执行最后的'ret'指令后,由于尝试返回内核空间代码而引发异常?

Mar*_*oom 5

calls只能提升权限,而rets只能降低权限.
英特尔手册3A的第5章将提供完整的详细信息.


如果内核对用户模式段执行远程调用,则会引发#GP,并且可能会出现恐慌/错误检查系统.
如果电话接近特权,则保持不变; 假设平面模型和映射目标,这是特权升级的常见攻击媒介.

如果应用程序尝试执行ret更高权限的段,则会引发#GP.