x86/x64汇编基础08.汇编基础4:栈结构-汇编语言社区论坛-技术社区-学技术网

x86/x64汇编基础08.汇编基础4:栈结构

笔记

学习最新前沿软件逆向安全技术、游戏安全辅助脚本技术,B 站 小迪 xiaodi 老师

微信 i-xiaodi

1. 栈结构

图片[1]-x86/x64汇编基础08.汇编基础4:栈结构-汇编语言社区论坛-技术社区-学技术网

  • 栈是一种有序的数据结构,只有一个出口
  • 数据只能在栈的顶端插入(入栈)或删除(出栈)
  • 最后进入的数据最先被取出:先进后出
  • 子弹先压上去(入栈)。
  • 开枪时从最上面弹出(出栈)。

2. 栈的基本操作

  1. Push(入栈):
    • 将数据压入栈顶
  1. Pop(出栈):
    • 栈顶数据移除并返回。
    • 图片[2]-x86/x64汇编基础08.汇编基础4:栈结构-汇编语言社区论坛-技术社区-学技术网

放入数据后,都是 ESP 在变化,EBP 就是地基

3.栈地址变化须知

如果不断的 push 数据,

我们发现栈地址是不断的变小的,

不断的向上堆积,并且变小

图片[3]-x86/x64汇编基础08.汇编基础4:栈结构-汇编语言社区论坛-技术社区-学技术网

所以 POP 数据,栈地址会变大,堆积的部分会依次 下沉

作业

大家请提交在评论区或者群聊

已知格式

push 3

push eax

的过程解析为:

先 ESP = ESP – 4

再修改 [ESP] 为 3

堆栈图为:

图片[4]-x86/x64汇编基础08.汇编基础4:栈结构-汇编语言社区论坛-技术社区-学技术网

对如下题目作答:

1.

push eax

push ebx

push 0x00401000

解析上述栈的情况(可只画图解释说明)

2.pop 的原理是从栈中拿出数据,并存到指定的寄存器中,如

push eax
push 1
pop ebx  ; 弹出 1 到 ebx
pop ecx  ; 弹出 eax 的值到 ecx

图片[5]-x86/x64汇编基础08.汇编基础4:栈结构-汇编语言社区论坛-技术社区-学技术网

依据此知识,描述一下如何弹出第一题中的栈数据,注意先后顺序,并画出堆栈图

3.随便拖入数据,单步执行,观察 push 数据,堆栈窗口的变化

请登录后发表评论

    没有回复内容