堆栈溢出 【简单栈溢出】

C语言中,每一个函数调用都会有自己的栈空间,WIN32下用2个寄存器来标识位于栈顶的工作单元:

EBP:指向当前工作栈区的底部ESP:指向当前工作栈区的顶部函数调用步骤为:(1) 参数从右至左依次入栈(2)
返回地址入栈(3) 代码区跳转(4) 更改EBP,ESP寄存器,开辟新的栈工作区一个函数调用时的指令大致为! push
arg2;push arg1;push arg0;push 返回地址;push ebp; //保存旧的栈区底部mov
ebp,esp; //栈区单元切换sub esp,xxx; //抬高栈顶,开辟新栈区

堆栈溢出 【简单栈溢出】

注:栈在内存中是从高地址向低地址延伸的,即栈顶位于低地址单元。一个函数开始时,ebp指向返回地址.

实例:一个C函数如下:int verify(char*
key){int right;char buf[8];right = strcmp(“12345”,
key);strcpy(buf, key);return right;}则工作栈区如图,此时,若构造key为
“1234123412341234xxxx”总共20字节,后面xxxx为4字节的16进制地址,则strcpy函数后xxxx将覆盖原来的返回地址,即可将程序流程定位到任何位置。

  

爱华网本文地址 » http://www.aihuau.com/a/8104120103/183848.html

更多阅读

秋葵怎么做好吃又简单 时令菜简单做【烤秋葵】

离开三个月的我,今天终于回来了...在这期间虽然忙碌着这爱美食的心却不曾离开过虽然,美天有了变化却还是暖暖的尤其看到我的粉丝有增无减真的好幸福爱你们!对于为什么离开这么长时间不多作解释言而总之,总而言之我回来了..

菠菜鸡蛋汤 【快手汤羹】菠菜鸡蛋汤

我喜欢喝汤,很多的时候忙没有时间也不愿意麻烦,就做快手蔬菜汤喝,虽然简单,但是有点汤吃饭总是舒服一些。今日就把这个做了许久的【菠菜鸡蛋汤】分享给大家,希望大家喜欢!主料:;菠菜(120克);鸡蛋(一枚)辅料:厨具:无1、菠菜鸡蛋汤食

薏米冬瓜汤 【养生汤煲】薏米冬瓜汤

美容养颜、利水去湿的美容好汤!每到夏天这款制作简单、健脾去湿、养血益颜、清热解毒、消除水肿的作用的【薏米冬瓜汤】都是我经常喝的汤,今天分享给大家,供朋友们参考!薏米冬瓜汤特点:营养丰富、美容养颜、利水去湿、清淡爽口薏米

声明:《堆栈溢出 【简单栈溢出】》为网友久伴还是酒伴分享!如侵犯到您的合法权益请联系我们删除