(9)跨段跳转,短调用和长调用堆栈图
一、回顾
上一节,我们学习了 JMP FAR 实现段间跳转,该指令修改了 CS 和 EIP。本节我们学习长调用 CALL FAR,该指令除了修改 CS和EIP,还会修改堆栈。
二、CALL 堆栈图
学习长调用之前,不妨先回顾一下短调用CALL的堆栈图:
三、CALL FAR 堆栈图
CALL FAR 和 RETF 一般是成对的,RETF 的执行流程(权限控制)和 CALL FAR 是一样的,所以下面的堆栈图我就不画 RETF 了。
CALL FAR 不提权
3环跳转到另一个3环代码段,不会切换堆栈。
CALL FAR 提权
从3环跳转到0环,此过程发生堆栈替换。
长调用的指令格式是这样的:
CALL CS:EIP(EIP是废弃的)
EIP是废弃的,所有信息都根据CS获取,这个CS是段选择子,指向GDT表中的一个特殊的“段”,这个特殊的“段”叫调用门。在提权长调用中,0环堆栈除了返回地址,调用者CS以外,还压入了调用者的SS和ESP,这部分数据是从TSS段中获取的。关于调用门和TSS段的知识,请看后续博客。
四、小结
本节我们需要记住长调用的堆栈图,为后续学习调用门和TSS打下基础。
下面是本节的总结:
跨段调用时,一旦有权限切换,就会切换堆栈.
CS的权限一旦改变,SS的权限也要随着改变,CS与SS的等级必须一样.
JMP FAR 只能跳转到同级非一致代码段,但CALL FAR可以通过调用门
提权,提升CPL的权限.
(9)跨段跳转,短调用和长调用堆栈图相关推荐
- [转](9)跨段跳转,短调用和长调用堆栈图
一.回顾 上一节,我们学习了 JMP FAR 实现段间跳转,该指令修改了 CS 和 EIP.本节我们学习长调用 CALL FAR,该指令除了修改 CS和EIP,还会修改堆栈. 二.CALL 堆栈图 学 ...
- 7.跨段跳转,短调用和长调用堆栈图
一.回顾 上一节,我们学习了 JMP FAR 实现段间跳转,该指令修改了 CS 和 EIP.本节我们学习长调用 CALL FAR,该指令除了修改 CS和EIP,还会修改堆栈. 二.CALL 堆栈图 学 ...
- [保护模式]段间跳转和跨段跳转
文章目录 段间跳转 段寄存器 段间跳转 段间跳转的执行流程 1.段选择子拆分 2.查表得到段描述符 3.权限检查 4.加载段描述符 5.代码执行 总结 跨段跳转 短调用 长调用 跨段不提权 跨段提权 ...
- Windows保护模式学习笔记(二)—— 代码跨段跳转
Windows保护模式学习笔记(二)-- 代码跨段跳转 要点回顾 代码跨段跳转 执行流程 1)段选择子拆分 2)查表得到段描述符 3)权限检查 4)加载段描述符 5)代码执行 6)总结 一致代码段(共 ...
- 段、GDT、调用门学习笔记
保护模式 什么是保护模式 x86 CPU的3个模式:实模式.保护模式.虚拟8086模式. AMD64与Intel64 AMD在1999年的时候拓展了这套指令集,成为x86-64后改名叫AMD64,AM ...
- 段间转移、长调用、短调用
段间转移不同于段内转移,段间转移同时修改CS:EIP,而段内转移只修改EIP 如JMP FAR 与JMP之间的区别 段间转移 JMP 0x20:0x004183D7 流程 1. ...
- Windows保护模式学习笔记(三)—— 长调用/短调用/调用门
Windows保护模式学习笔记(三)-- 长调用/短调用/调用门 要点回顾 长调用与短调用 一.短调用 二.长调用(跨段不提权) 三.长调用(跨段并提权) 长调用执行时: 执行返回(RETF)时: 总 ...
- 09-长调用与短调用
要点回顾: 我们通过JMP FAR可以实现段间的跳转,如果要实现跨段的调用就必须要 学习CALL FAR,也就是长调用. CALL FAR 比JMP FAR要复杂,JMP并不影响堆栈,但CALL指令会 ...
- 【2021.03.19】长调用与短调用
要点回顾 通过前文知道JMP FAR可以实现段间跳转,如果要实现跨段的调用就必须要学习CALL FAR,也就是长调用. CALL FAR 比 JMP FAR 要复杂,JMP并不影响堆栈,而CALL指令 ...
最新文章
- mysql or的效率_Mysql比较exists与in以及or的效率分析
- 皮一皮:别人家的老公...
- Linux打开txt文件乱码的解决方法
- Java1.7之后Arrays.sort对数组排序DualPivotQuicksort.sort
- java序列化(六) - protostuff序列化
- win7_FTP服务器配置教程_IIS
- 《.NET WEB服务》 (二)
- 客户机容易随机出现自动重启、游戏卡问题?不妨优化下BIOS中节能技术!
- C#_delegate EndInvoke
- 缠论108课_缠论108课学习顺序
- SEM和SEO有什么区别,哪种更好一些
- 理解标准差、标准化、协方差、正态分布
- 常见排序算法02之插入排序与希尔排序
- 恢复微信撤回的图片(不容root,极其简单)
- Codeforces Round #552 (Div. 3) E stl模拟 F dp G gcd
- Junit、Json和kv结构的相互转化
- atlas mysql怎么用,MySQL —— Atlas 使用
- 获奖感言和C语言的学习心得
- 新手村 - 第四站,认识成交量
- win8 java不是内部或外部命令_win8系统运行java提示“ava不是内部或外部命令两种解决方法...
热门文章
- 再次携号转网_“携号转网”日期再次确定!这三个开头的号码,可以优先办理转网...
- 成功解决Ignoring invalid distribution -yqt5
- 成功解决Both binary classification-only and multiclassification-only loss function or metrics specified
- Python编程语言学习:python的列表的特殊应用之一行命令实现if判断中的两类判断
- 成功解决ModuleNotFoundError: No module named 'torch.utils.tensorboard'
- ML之Xgboost:利用Xgboost模型(7f-CrVa+网格搜索调参)对数据集(比马印第安人糖尿病)进行二分类预测
- HighNewTech—AI界消息:2019年3月,贾扬清(Caffe框架作者)被曝从Facebook离职,入职Alibaba硅谷研究院
- Paper:论文解读《Adaptive Gradient Methods With Dynamic Bound Of Learning Rate》中国本科生提出AdaBound的神经网络优化算法
- 5.5 function
- 对象化下的编程——字段