PWN-栈系列总结
栈基础知识
栈基础概念
栈是程序运行时的一块区域,主要用于存储临时数据、管理函数调用和返回地址。他有很多的特点,他是一种后进先出的数据结构,操作主要有压栈与出栈两种,并且在程序的内存中他的数据是从高地址往低地址走的。简单说,就是程序运行时的“临时记事本”。
栈顶与栈底
对于栈有两个比较重要的寄存器,一个是栈顶一个是栈顶,在32位操作系统中,寄存器EBP表示栈底,ESP表示栈顶。栈底代表当前栈的最开始的位置,栈顶很好理解,就是栈的最顶部,在操作栈的时候主要分为压栈和出栈,具体是下面两个汇编指令
1
2
push ebx # 压栈,ebx的数据压入栈顶,并且ESP(栈顶) + size