什么是堆栈
- 程序执行过程中要使用的一块内存
- 是程序的心脏,所有的关键数据都会在这里边出现
- 与数据结构的堆栈无关
查看程序的堆栈
把程序拖到OD里,在命令行输入dd (FS对应的地址)即可。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/954009d8cb378264be9b7272098b5868.png)
- 程序在使用堆栈的时候,是从顶部往底部存储,空间也就会越存越小,直到存不下的时候,它就崩溃了,这或许就是堆栈溢出吧。
- 寄存器ESP反应的是当前程序在堆栈中的使用情况,也就是告诉你程序运行到这一步它在堆栈中用到了哪里
使用程序的堆栈
当前程序执行到了19C6EC,我们就可以接着往下使用,一直到上图中的程序底部为止。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7a28a5ad7d4329033bdc0148ce1ea1e6.png)
使用剩下的堆栈可以使用如下指令:
mov DWORD ptr ds:[19C6E4]