IDA栈帧相关理解

本文深入探讨了IDA中两种栈帧类型——基于ESP和基于EBP的栈帧。通过分析函数进入前的状态,阐述了栈帧在调试和逆向工程中的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源码:

void bar(int j, int k);   // a function to call  
void demo_stackframe(int a, int b, int c) {  
   int x;  
   char buffer[64];  
   int y;  
   int z;  
   // body of function not terribly relevant other than  
   bar(z, y);  
}

在这里插入图片描述

**基于ESP 的栈帧**

在这里插入图片描述

** 基于EBP 的栈帧**
CALL 函数调用指令
	格式: CALL OPRD 
	功能: 过程调用指令
	
	1. 其中OPRD为过程的目的地址.
	2. 过程调用可分为段内调用和段间调用两种.寻址方式也
		可以分为直接寻址和间接寻址两种.
	3. 本指令不影响标志位.
			近调用 - 调用当前代码段(CS 寄存器当前指向的段)中的过程,有时称为段内调用。	
			执行近调用时,处理器将 EIP 寄存器的值(包含 CALL 指令后面的指令的偏移量)压入堆栈(稍后用作
返回指令指针)。然后,处理器分支到当前代码段中由目标操作数指定的地址。目标操作数指定代码段中的绝对偏移量
(即相对于代码段基址的偏移量)或相对偏移量(相对于 EIP 寄存器中指令指针的当前值的有符号位移量,此指针指向
 CALL 指令后面的指令)。执行近调用时,CS 寄存器保持不变。
 			对于近调用,绝对偏移量在通用寄存器或内存位置(r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值