001:esp 指向当前栈帧的栈顶,当前栈帧是在系统栈帧的上边那个栈帧。
002:ebp 指向当前栈帧的栈底
对于栈的操作主要靠它来实现,当操作栈里边的元素的时候,将esp的值赋给ebp,这样ebp+i或者-i来找到对应的数据
003:
一般函数进去的时候是这样的:
004012F0 push ebp
004012F1 mov ebp,esp
004012F3 and esp,0FFFFFFF8h
004012F6 push esi
004012F7 push edi
其中,and那行不定,有时候会是:
sub esp,108h(相当于给当前函数分配0x108h的内存空间)等等
而第一行将基址寄存器入栈,ebp指向的是之前程序指向的地址单元,把它此时入栈,函数结束的时候返还数值给ebp,作为保护函数执行前的状态。