摘要:
上一节中,我们浏览了一次因越界访问而造成映射失败从而引起进程流产的过程,不过有时候,越界访问时正常的。现在我们就来看看当用户堆栈过小,但是因越界访问而“因祸得福”得以伸展的情景. 假设在进程运行的过程中,已经用尽了为本进程分配的堆栈空间,此时CPU 中的堆栈指针%esp已经指向堆栈区间的起始地址,如下图 假设现在需要调用某个子程序,因此CPU 需将返回地址压入堆栈,也就是要将返回地址写入虚存空间中地址为(%esp-4)的地方,可以在我们这个情景中地址(%esp-4)落入了空洞中,这是尚未映射的地址,必然会引起一次页面异常,让我们顺着上一节情景中已经走过的路线到达文件arch/i386... 阅读全文