鱼C论坛

 找回密码
 立即注册
查看: 1780|回复: 3

栈要不要先设置才能使用

[复制链接]
发表于 2013-5-17 13:52:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请教,如果一开始不对栈进行设置,那么在程序中可以直接对这样的栈进行入栈出栈操作吗?我个人觉得不可以,但是在做题目的时候发现王爽教材中的数字转字符程序中是可以的,为什么这样可以?
以下是我的问题
1。一开始不对栈进行设置,那么默认的栈段 是ss=cs ,sp=0 我这样说对吗?第一次入栈后,sp 是不是等于FFFEH?
2.如果说我上面的说法对的话,那么栈空间是不是ss:0 到ss:ffffh,直接使用这个空间会不会有什么内存使用问题,在学习的时候,王爽教材里的栈都是先定义好的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-17 16:23:51 | 显示全部楼层
本帖最后由 小丑Delta 于 2013-5-17 16:28 编辑

如果你不设置栈段,那么当入栈的时候就会覆盖代码段的内容从而造成,指令的错误
1,如果你是这样入栈的话,那么第一次入栈后,sp=fffeh
2,里面有着代码段,或者系统文件,很容易造成数据的覆盖,从而造成严重的后果,黑客常用手法就是使用栈溢出,使其覆盖栈段之外的数据,达到攻击的目的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-17 18:45:41 | 显示全部楼层
本帖最后由 nios 于 2013-5-17 18:48 编辑

一开始不对栈进行设置,那么默认的栈段 是ss=cs ,sp=0 ,是这样的吗?我一直没有注意过。
实验了一下:
捕获.JPG

确实,ss=cs,但SP不是指向0,这时候你往里面推数据的话看图
捕获2.JPG
因为默认ss=cs,所以往里面推是可以的。但是推进去字节多了之后代码段就会被覆盖了。
看到吗?当第二次push的时候05 B0被00 06覆盖了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 18:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表