从我现在的理解,由于函数的参数传递给调用堆栈,如果参数“溢出”它给出的缓冲区,它可以覆盖内存。如果足够,它可以覆盖给指令指针(eip)的返回地址。因此,通过控制eip,我们可以将执行发送到已在其他地方溢出的shell代码。但是,shell代码中的错误字符不会被执行。为什么这样,为什么我们需要跳转到esp然后转到shell代码而不是直接?如果我错了,请纠正我。感谢。
答案 0 :(得分:0)
正如我所说,这是跳到esp的正常程序。 esp是下一个操作的指针;这个名字不是说xD全部吗? 该体系结构实现了您使用该寄存器的默认设置。
随意纠正我; D