- 1
- 0
- 约4.96千字
- 约 9页
- 2023-11-13 发布于浙江
- 举报
栈溢出原理讲解
栈溢出原理讲解
主要针对堆栈溢出的攻击实现
一:基础知识
计算机内存运行分配的区域分为3个
程序段区域:不允许写的
数据段区域:静态全局变量是位于数据段并且在程序开始运行的时候被加载
堆栈区域:放置程序的动态的用于计算的局部和临时变量则分配在堆栈里面和在过程调用中压入的返回地址数据。堆栈是一个先入后出的队列。一般计算机系统堆栈的方向与内存的方向相反。压栈的操作push,ESP,4,出栈的操作是pop=ESP+4.
在一次函数调用中,堆栈中将被依次压入:参数,返回地址,EBP。如果函数有局部变量,接下来,就在堆栈中开辟相应的空间以构造变量。函数执行结束,这些局部变量的内容将被丢失。但是不被清除。在函数返回的时候,弹出EBP,恢复堆栈到函数调用的地址,弹出返回地址到EIP以继续执行程序。
在C语言程序中,参数的压栈顺序是反向的。比如func(a,b,c)。在参数入栈的时候,是:先压c,再压b,最后a.在取参数的时候,
指令执行的图例:
指令区域
执行程序区
0 1 2 3
0
4
8 调用100处的函数,参数1(3位),2(10位)
C
10
0 1 2 3
100 执行处理
104
108
10C
110 返回调用
堆栈区域
0 1 2 3
如果EBP分配的空间不够操作就是产生溢出的地方
200 保存以前的EBP4
您可能关注的文档
最近下载
- 09SMS202-1 埋地矩形雨水管道及附属构筑物(混凝土模块砌体)建筑工程 图集.pdf VIP
- 智慧果园示范基地解决方案.pptx
- 大烟道余热锅炉...docx VIP
- 智慧果园示范基地整体解决方案.pptx VIP
- 19世纪歌剧课件.pptx VIP
- (热门!)《ISO 55001-2024资产管理—资产管理体系—要求》之11:“6策划-6.3变更的策划”解读和应用指导材料(-2024)(可编辑).docx VIP
- 《JTY-GXF-GST1D2D吸气式感烟火灾探测器安装使用说明书 (Ver.1.13, 2021.04)》-海湾.pdf VIP
- 《论文写作指导》课件.ppt VIP
- 肯德基门安装施工方案.docx VIP
- 辽河油田抚顺市顺城区20万千瓦风电项目环境影响报告书.pdf VIP
原创力文档

文档评论(0)