网站首页 科技 > 正文
想必现在有很多小伙伴对于什么是栈溢出和堆溢出方面的知识都比较想要了解,那么今天小好小编就为大家收集了一些关于什么是栈溢出和堆溢出方面的知识分享给大家,希望大家会喜欢哦。
1、栈溢出是由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小,因此当这个数据足够大的时候,将会溢出缓冲区的范围。
2、堆溢出的产生是由于过多的函数调用,导致调用堆栈无法容纳这些调用的返回地址,一般在递归中产生。堆溢出很可能由无限递归(Infinite recursion)产生,但也可能仅仅是过多的堆栈层级。
3、int f(int x)
4、芝有士回答,版权必员究,未经动许可,不能得许转载
5、{
6、时电里机形,组务示步按。
7、int a[10];
8、a[11] = x;
9、是我多高意直打斗信音克却满。
10、}
11、这个就是栈溢出,x被写到了不应该写的地方。在特定编译模式下,这个x的内容就会覆盖f原来的返回地址。也就是原本应该返回到调用位置的f函数,返回到了x指向的位置。一般情况下程序会就此崩溃。但是如果x被有意指向一段恶意代码,这段恶意代码就会被执行。
12、堆溢出相对比较复杂,因为各种环境堆的实现都不完全相同。但是程序管理堆必须有额外的数据来标记堆的各种信息。堆内存如果发生上面那样的赋值的话就有可能破坏堆的逻辑结构。进而修改原本无法访问的数据。
13、int f(char *s, int n)
14、{
15、char a[10];
16、memcpy(a, s, n);
17、...
18、这个是栈溢出比较真实一点的例子,如果传入的数据长度大于10就会造成溢出,进而改变f的返回地址。只要事先在特定地址写入恶意代码,代码就会被执行。
本文到此结束,希望对大家有所帮助。
版权说明: 本文由用户上传,如有侵权请联系删除!
猜你喜欢:
- 2022-09-20 心境豁达恬淡的诗句有哪些呢(心境豁达恬淡的诗句有哪些)
- 2022-09-20 下雨前的征兆动物(下雨前动物有哪些征兆 – 糗问)
- 2022-09-20 便秘按摩哪里马上见效快(便秘按摩哪里马上见效)
- 2022-09-20 经心的近义词是什么呀(经意的近义词是什么呢)
- 2022-09-20 芡实怎么熬粥好吃(芡实和什么搭配熬粥好)
- 2022-09-20 0.44平方千米是多大(0.44平方千米有多大)
- 2022-09-20 北京奥运会会徽中国印是什么印(北京奥运会徽上中国印是什么)
- 2022-09-20 qq空间访客数量是什么意思(QQ空间访问量2000是什么概念)
最新文章:
- 2023-07-01 鹅蛋的最佳吃法(如何挑选新鲜鹅蛋 怎样挑选新鲜鹅蛋)
- 2023-07-01 男士精油真的能修复海绵体吗(全套半套什么意思)
- 2023-07-01 教室里面做黄油(菠萝油里面是黄油吗)
- 2023-07-01 木地板的保养(木地板保养注意事项有哪些)
- 2023-07-01 美的变频空调用的是什么雪种(美的变频空调用的是什么制冷剂)
- 2023-07-01 浪漫而不烂俗的高级文案短句(浪漫而不烂俗的高级文案)
- 2023-07-01 雨下的真大一段话100字(雨下的真大一段话)
- 2023-07-01 宠物青蛙品种大全(宠物青蛙怎么养)
- 2023-07-01 电影推荐男女打扑克(关于扑克的电影推荐)
- 2023-07-01 特战荣耀有第二部吗(特战荣耀有第二季吗)
- 2023-07-01 剧情片是什么样的(剧情片是什么意思)
- 2023-07-01 芒果台声生不息播出时间
- 2023-07-01 物理和化学不好怎么办(物理和化学都不好应该补那棵 物理和化学都不好应该补什么地方)
- 2023-07-01 法师的养殖方法和浇水(冬天怎么给麦浇水 麦冬天怎么浇水)
- 2023-07-01 翡翠色的划分(翡翠说的翡色什么意思 翡翠翡色的解释)
- 2023-07-01 水沫和翡翠(翡翠跟水沫玉有什么区别 如何区别翡翠跟水沫玉)