本文主要以《深入理解计算机》3.38题为例,详细地介绍了该题目的解题过程,主要目的是利用程序缓冲区溢出以达到改变程序的输出(攻击程序)。 要解决这类题目,需要对过程调用的栈帧变化、指令的作用有较深入的了解。同时在使用GDB调试程序时,命令的使用也能对尽快找出问题提供帮助,本文只简单地使用了p、x等命令,其他的注入display、layout命令更能帮助我们发现问题、解决问题。 另外,也需要对该类问题举一反三,从中可以观察到每个汇编指令的格式、功能及其使用方法。