当进行函数调用时,会首先将call指令的下一条指令地址压栈 Call指令向EIP中填写被调用函数的地址 当被调用函数返回时,从栈上弹出返回地址,装入EIP,使程序指令流重新返回调用者。 通过缓冲区溢出可以覆盖栈上的返回地址,在函数调用返回时,将错误的返回地址装入EIP,从而改变指令流,达到改变程序执行的目的。