滴水逆向保护模式(段)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

段寄存器结构

在这里插入图片描述
在这里插入图片描述
段寄存器共有96位,可见的只有16位,读取时也只能读取16位
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

003段寄存器属性探测

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

004段描述符与段选择子

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

005段描述符属性

在这里插入图片描述
在这里插入图片描述
段寄存器的attribute对应段描述符的8-23位,Base由高四字节24-31,0-7和低四字节16-31位构成;Limit由高四字节16-19和低四字节的0-15位构成
Limit一共20位,转换为16进制为FFFFF,看G位,如果G位为0,单位为字节, 最大值为000FFFFF;当G位为1,单位为4KB,从0开始算,0到4095,转化为十六进制为FFF,最大值为FFFFFFFF
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
段描述符的第五位为9或者f才是代码段或者数据段,其他的一定不是代码段或数据段
TYPE域的第11位为0是数据段,为1是代码段
段描述符的第六位大于8一定是代码段,反之小于8一定为数据段
数据段中的A为是否访问过,W为是否可写,E为拓展位,0为向上拓展,1为向下拓展
在这里插入图片描述
Base+Limit为有效地址,下图左面红色部分为向上拓展地址有效,向下拓展为相反方向
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
***DB位 ***
在这里插入图片描述
在这里插入图片描述

008段权限检查

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

009代码跨段跳转流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
操作系统提供通用的功能代码,并不会对系统内核数据造成破坏,可以让应用层直接访问,可以用一致代码段来修饰
不希望应用层直接访问的数据用非一致代码段描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

010代码跨段跳转实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
跳转到ntdll.dll,异常
在这里插入图片描述
成功,一致代码段允许低权限访问高权限代码段
在这里插入图片描述
在这里插入图片描述

011长调用与短调用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
长调用的段选择符一定是调用门
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

012调用门

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
门描述符中的段选择子指向的才是要跳转的存在哪个段
在这里插入图片描述
段选择子0008为0环的代码段
在这里插入图片描述
在这里插入图片描述
通过调用门提权已经是0环权限
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

014中断门

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

015陷阱门

在这里插入图片描述
IF位为eflag的第九位,如果为0不在接收可屏蔽中断
程序在运行中按键盘会响应,硬件向CPU发送命令,可屏蔽中断,受IF位影响
断电为不可屏蔽中断
在这里插入图片描述

016任务段

在这里插入图片描述
在这里插入图片描述
intel设计初衷是使用TSS实现任务切换,但操作系统不是这么做的
在这里插入图片描述
TR寄存器的值从GDT中TSS段描述符中加载得到,TR寄存器中存在TSS的信息
系统描述符TYPE为9或B时是TSS段描述符
TYPE为9时没有加载到TR寄存器中,为B时已经加载到TR寄存器中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

link为之前104个字节的段选择子,当切换时硬件自动填充
Cr3和eip还有esp必须要填
在这里插入图片描述
TSS段描述符的G位为0,因为TSS以字节为单位
在这里插入图片描述
在这里插入图片描述

018 任务门

在这里插入图片描述
在这里插入图片描述
任务门 跨表,任务门在idt表中,TSS段描述符在GDT表中
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值