一、什么是堆栈
1.堆栈就是一块内存,操作系统在程序启动的时候已经分配好的,供程序执行时使用; 2.和数据结构中的堆栈无关。
堆栈是一块4GB的内存:
二、在DTDebug中查看堆栈
- 将任意的exe文件拽入DTDebug中,
2.输入地址看堆栈
3.查看堆栈的内存
4.如何查看当前的程序使用到堆栈的哪个位置?
通用寄存器ESP,也叫栈指针寄存器,ESP中存储了当前的堆栈用到哪儿了。堆栈内存是从下往上使用的。
5.如何将程序的中间变量存放到堆栈中?
我么将 1 和 2 分别存放的堆栈中:
按F8执行:
6.如何记录栈内存所使用到的位置?
使用执行:SUB ESP,8
7.使用push指令
功能:
(1)向堆栈中压入数据; |
(2)修改栈顶指针ESP的值 |
执行指令:PUSH DWORD PTR DS:[39FCF0]
8.pop指令
可以看成由两部组成:
第一步: MOV ECX,DWORD PTR DS:[ESP],表示将ESP的值移动到 ECX中;
第二步:Add ESP,4 表示将ESP的地址加4
指令:pop esp 相当于前面两步