摘要: 1.调用门执行流程 指令格式:CALL CS:EIP(EIP是废弃的) 执行步骤: 2.门描述符 S位一定是0; 只有为0 才是系统段描述符 TYPE位为1100的时候则是门描述符; 代码真正要执行的地址是:Segment Selecotor段选择子的BASE + 由Offset in Segmen 阅读全文
posted @ 2019-07-17 22:21 瀚瀚大人 阅读(338) 评论(0) 推荐(0) 编辑
摘要: CALL FAR 长调用最终需要执行的代码由CS段选择子找到的调用门决定的 提权的时候堆栈发生了切换,保留原CS,ESP,SS 返回也是RETF 总结: 1.跨段调用时,一旦有权限切换,就会切换堆栈; 2.CS的权限如果没有变更,那么只换CS;’CS的权限一旦发生改变,SS的权限也要随之改变,CS与 阅读全文
posted @ 2019-07-17 16:33 瀚瀚大人 阅读(361) 评论(0) 推荐(0) 编辑
摘要: IRETD 图上错了 段描述符如果是数据段是不允许跳转的! 4.权限检查: 如果非一致代码段,要求CPL == DPL 并且 RPL<=DPL (应用层不能直接访问的) 如果是一致代码段,要求 :CPL >=DPL;(电脑内核提供可以直接有3环访问的(共享段)) 5.加载段描述符 通过上面的检查权限 阅读全文
posted @ 2019-07-17 15:18 瀚瀚大人 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 1.CPU的分级 2.如何查看程序处于几环? CPL:当前特权级 CS和SS中存储的段选择子后两位 3.DPL:描述符的特权级别: 举例说明:MOV DS,AX 第一步:先判断CS代码段是否有权限执行代码 第二步:如果有权限执行,那么把AX的值复制给DS (ds=ax),如果ds 原本就等于ax,那 阅读全文
posted @ 2019-07-17 14:43 瀚瀚大人 阅读(413) 评论(0) 推荐(0) 编辑
摘要: B = 0 64K 65535字节 B = 1 4G(指定的虚拟4GB空间) 如果需要去16位的加个前缀67: 1.DB位位于第22位 对以下三种情况都有影响: 只要是代码段都为B, 只要是数据段都为D 情况一: 对CS段的影响 D =1 采用32位寻址方式 D =0 采用16位寻址方式 前缀67 阅读全文
posted @ 2019-07-17 11:52 瀚瀚大人 阅读(415) 评论(0) 推荐(1) 编辑