[PwnCourse:从0开始的PWN教程] 0-1-3 Stack & Calling convention

2026-04-11 14:310阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

佬友们别来无恙,今天是栈相关知识的讲解。本小节结束之后我们就要正式进入栈利用的学习啦。真是,绕了好大一圈呢

Stack

在0-1-2中,我们简单了解了用户虚拟内存空间的各个区段,其中也提到了。我们摘取Wiki上的描述的话,是这样的

堆栈(stack)又称为栈或堆叠,是计算机科学中的一种抽象资料类型,只允许在有序的线性资料集合的一端(称为堆栈顶端,top)进行加入数据(push)和移除数据(pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运作,堆栈常用一维数组或链接串列来实现。常与另一种有序的线性资料集合队列相提并论。

实际上,广义上的栈就是一种数据结构。这里我们所研究的栈是x86的计算机系统内存空间中用来储存函数的参数,返回值,返回地址,局部变量等数据的一个区段,这个区段整体是由广义上的栈所结构。

所以,狭义上的栈,同样是一种后进先出LIFO(Last in First out)的数据结构。这种形式也正好满足我们一般函数调用的方式,父函数调用子函数,子函数执行完毕后返回父函数,返回时,子函数在前,父函数在后。

image3840×2761 247 KB

栈只能从一端进行数据的增删,这一端称为栈顶;而栈尾部则称为栈底。需要注意的是,栈底一般是作为一个固定的地址,是不变的。而栈顶是随时变化的。栈支持两种数据操作,压栈push弹栈pop

阅读全文
问题描述:

佬友们别来无恙,今天是栈相关知识的讲解。本小节结束之后我们就要正式进入栈利用的学习啦。真是,绕了好大一圈呢

Stack

在0-1-2中,我们简单了解了用户虚拟内存空间的各个区段,其中也提到了。我们摘取Wiki上的描述的话,是这样的

堆栈(stack)又称为栈或堆叠,是计算机科学中的一种抽象资料类型,只允许在有序的线性资料集合的一端(称为堆栈顶端,top)进行加入数据(push)和移除数据(pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运作,堆栈常用一维数组或链接串列来实现。常与另一种有序的线性资料集合队列相提并论。

实际上,广义上的栈就是一种数据结构。这里我们所研究的栈是x86的计算机系统内存空间中用来储存函数的参数,返回值,返回地址,局部变量等数据的一个区段,这个区段整体是由广义上的栈所结构。

所以,狭义上的栈,同样是一种后进先出LIFO(Last in First out)的数据结构。这种形式也正好满足我们一般函数调用的方式,父函数调用子函数,子函数执行完毕后返回父函数,返回时,子函数在前,父函数在后。

image3840×2761 247 KB

栈只能从一端进行数据的增删,这一端称为栈顶;而栈尾部则称为栈底。需要注意的是,栈底一般是作为一个固定的地址,是不变的。而栈顶是随时变化的。栈支持两种数据操作,压栈push弹栈pop

阅读全文