2011年4月23日
摘要: 本文讲解如何在调试器中显示函数调用栈,如下图所示:原理首先我们来看一下显示调用栈所依据的原理。每个线程都有一个栈结构,用来记录函数的调用过程,这个栈是由高地址向低地址增长的,即栈底的地址比栈顶的地址大。ESP寄存器的值是栈顶的地址,通过增加或减小ESP的值可以缩减或扩大栈的大小。上一篇文章已经简略地介绍过在调用函数时线程栈上会发生什么事情,现在我们再来详细地看看这个过程:①在栈上压入参数。②执行CALL指令,在栈上压入函数的返回地址。③压入EBP寄存器的值。④将ESP寄存器的值赋给EBP寄存器。⑤减小ESP寄存器的值,为局部变量分配空间。⑥执行函数代码。⑦将EBP寄存器的值赋给ESP寄存器,等 阅读全文
posted @ 2011-04-23 11:19 Zplutor 阅读(9722) 评论(13) 推荐(7) 编辑