stack frame栈帧简介(逆向工程角度)

0x01 栈帧是什么

“IA32 programs make use of the program stack to support procedure calls”.
“IA32程序使用程序栈帧来支持子程序调用”(出自CSAPP,即《深入理解计算机系统》)

个人理解,栈帧就是内存的一段数据,在内存栈区域,对子程序的数据进行一个临时保存。

什么是栈?

栈和堆类似,都是操作系统中分配给用户程序使用的一段内存区域,根据CSAPP中的图:

virtual memory

附中文解释:

  1. Kernel virtual memory:内核虚拟内存,内核是操作系统常驻于内存中的一部分,而这一段空间就是为内存所保留的。应用程序开发者对这一段空间没有权限读写,也不能直接调用内核代码中的函数。

  2. User stack(created at run time):用户栈区域(执行时创建),在用户虚拟地址空间的最顶部是用户栈,编译器用它来实现函数调用,用户栈在程序执行时自动扩展,尤其是在我们每一次调用函数时。

  3. Run-time heap(created at run time by malloc):执行时堆(在执行时通过malloc函数创建),代码和数据区域之后紧跟着就是执行时堆,与代码和数据区域不同的是,代码和数据区域在程序执行时已经固定了大小,而它和栈一样是动态扩展的,在C库函数m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值