4.2 RtlAllcoateHeap的失误

“呵呵,对!”老师说道,“我们和Windows下的堆栈溢出相对比。我们先复习一下堆栈溢出利用的三大步骤。”

1.返回点的定位。利用报错精确定位溢出返回点。

2.ShellCode的编写。我们可以自己写,也可以拿现成的用;比较科学的方法是稍微修改一下外面的代码,完成我们想要的功能。

3.跳转到ShellCode。把函数返回点覆盖成JMP ESP的地址,或者把异常处理点覆盖成CALL EBX或者pop pop ret 的地址。

“其示意图如图4-3,也可以是图4-4的样子。”

“这三点大家都还记得吧?”老师问。

“嗯,当然!”

“好,我们就从这三点出发,看看堆溢出的原理和利用吧!”