我的堆栈模拟器,(7月8日,星期三) 笔记

我的堆栈模拟器,(7月8日,星期三)

栈是程序存储临时数据的内存区域——例如局部变量和返回地址。可以将栈想象成厨房里的盘子堆:你只能将新盘子放到最上面,也只能从最上面取走一个盘子。程序利用同样的“后进先出”(LIFO)原则来跟踪自身状态。每次调用函数时,程序会将包含局部变量及函数执行完毕后应返回的地址等信息的新盘子压入栈顶;当函数执行完毕,该盘子从栈顶弹出,程序便精确地回到之前中断的位置继续执行。正是这种简单的机制使得程序能够层层嵌套调用函数并总能找到返回路径;但这也正是为何栈若增长过大或被意外数据覆盖,便会成为攻击者试图劫持程序执行流的理想目标。
CdXz5zHNQW_vz6S9CI9sK.png