首页
社区
课程
招聘
[旧帖] [讨论]大家看看: 如果把堆栈分为代码堆栈和数据堆栈, 是不是就能解决"缓冲区溢出"问题? 0.00雪花
发表于: 2012-3-16 21:08 1414

[旧帖] [讨论]大家看看: 如果把堆栈分为代码堆栈和数据堆栈, 是不是就能解决"缓冲区溢出"问题? 0.00雪花

2012-3-16 21:08
1414
目前是: 调用call指令时, 把call指令的下一个指令放入堆栈, 然后, ret时, 用堆栈保存的地址返回.
但如果有人通过"缓冲区溢出"的手法, 把堆栈中的地址覆盖掉, 就可以执行一些恶意代码了.
如果intel把call,ret之类的指令实现改一下:
把堆栈分为代码堆栈和数据堆栈, call,ret在代码堆栈保存和读取地址, 这样"缓冲区溢出"的方法不就失效了?

大家看看这个方法的可行性.

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 623
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
N年前的技术了,page entry 的 DX(disable execute)位就是为了这个目的
2012-3-16 21:27
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
那为什么现在还会听到"缓冲区溢出"?

我现在看到的反汇编, 地址仍然是会放在数据堆栈中的.

是不是要什么编译开关?
2012-3-16 21:32
0
雪    币: 623
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
那你认为什么是”代码栈“,什么是”数据栈” ?

好好思考一下,如果这个问题你能想通了,你就飞越了。
2012-3-16 21:49
0
雪    币: 215
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
x86是不可能的。dsp一直是这种分开的构架。
2012-3-16 21:52
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我这里说的代码栈,数据栈,
是我在看"缓冲区溢出"原理时想的解决方案, 恐怕不完善.

有这种说法吗?
我google"代码栈", 好像出来的东西对不上.
2012-3-16 22:01
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我按照page entry disable execute找到了这个:
http://en.wikipedia.org/wiki/NX_bit
不过好像是用另一种方法来解决"缓冲区溢出".
2012-3-16 22:12
0
游客
登录 | 注册 方可回帖
返回
//