汇编中retn 4的含义详析
来源:互联网 发布:淘宝打不开怎么办 编辑:程序博客网 时间:2024/04/18 08:18
retn 4
是个函数返回指令。
以前一直纠结这个retn的寄存器操作顺序,手头正好在调试,详细跟了一下,豁然开朗,特分享。
先假设个环境:
retn 4未执行时,ESP=0013feb8;EIP=5d1d8b97;而[0013feb8]=7c974a19
执行retn 4之后:
首先
EIP=[0013feb8]
:即此时cpu先指挥EIP获取到栈中0013feb8起4个字节的值7c974a19,作为retn跳转的目标,然后cpu跳过去等着执行7c974a19地址下的命令。
此时,EIP=7c974a19
然后
因为retn 4里面有个4,此时cpu才让ESP栈+4+4,使得ESP=0013fec0。
为啥出现两个+4?另一个+4的原因在于:如果命令是retn,而不是retn 4,那ESP将当前值(0013feb8)给了EIP之后,自动会来一个+4,即ESP会为0013febc。
总结下来:
retn操作:先eip=esp,然后esp=esp+4
retn N操作:先eip=esp,然后esp=esp+4+N
阅读全文
0 0
- 汇编中retn 4的含义详析
- 反汇编的call和retn
- 反汇编的call和retn
- 反汇编RETN 0x0c的理解
- 汇编中一些标志位的含义
- retn
- 汇编中bss text rodata heap stack 的含义
- retn之后的EIP欺骗的Ollydbg!
- push 0x******* retn 的应用
- C#中IL反汇编工具的使用 其具体含义如下文
- 通过反汇编分析C语言中volatile关键字的含义
- 对call、retn的深入分析和认识
- OD加载程序在retn停下的问题
- java 中>>>的含义
- C++ 中 \ 的含义
- 汇编指令助记符含义
- 汇编中的PTR含义
- 计算机网络中“端口”的含义
- ?:pattern ?=pattern ?!pattern 的理解
- 三大查询
- 利用array判断列表有图片调图片,没图片留空
- java swing实现喜羊羊与灰太狼推箱子游戏
- WebSocketHandler.ashx代码
- 汇编中retn 4的含义详析
- 生产环境drbd+heartbeat+mysql(mysql一主多从)部署安装
- KNN python code
- python Web 之基石
- python中str函数isdigit、isdecimal、isnumeric的区别
- SQL Server2008 学习之(十五) :存储过程的创建与修改
- SpringWeb项目和SpringBoot微服务项目如何进行junit调试
- 内部排序之 快速排序
- python 控制台输出中文乱码问题