教程主题:0Day安全技能之完全学习2.4——修改邻接变量的原理
内容:
【1】通过上一节,我们已经知道了函数调用的细节和栈中数据的分布情况。【图1<函数调用的实现>】 函数的局部变量在栈中一个挨着一个排列。如果这些局部变量中有数组之类的缓冲区,并且程序中存在数组越界的缺陷,那么越界的数组元素就有可能破坏栈中的相邻变量的值,甚至破坏栈帧中所保存的EBP值、返回地址等重要数据。
注:大多数情况下,局部变量在栈中的分布是相邻的,但也有可能出于编译优化等需要而有所例外。具体情况我们需要在动态调试中具体对待,这里出于讲述基本原理的目的,可以暂时认为局部变量在栈中是紧挨在一起的。
|