逆向工程核心原理——第五章

栈的作用:

1.暂时保存函数内的局部变量。

2.调用函数时传递参数。

3.保存函数返回后的地址。

栈储存数据的原则:FILO(first in last out).

简单的来说,栈类似于一个桶,数据进入后,会一层一层往上堆叠,所以最先进去的数据,要上面的数据都拿走之后,才能出来。

如图所示,数据按照a1,a2,a3的顺序入栈,所以出栈的顺序就为a3,a2,a1。

更加抽象一些就是这样:最开始的栈顶指针(ESP)指向的栈底,随着PUSH指令将数据压入栈,ESP也会往上指;而随着POP指令将数据拿出栈,ESP就会往下指。

原文地址:https://www.cnblogs.com/lex-shoukaku/p/13255878.html