首页
社区
课程
招聘
[求助]一种很奇怪的堆栈溢出方式,原理不明,请高人们指点
发表于: 2006-4-13 14:49 3866

[求助]一种很奇怪的堆栈溢出方式,原理不明,请高人们指点

2006-4-13 14:49
3866
代码如下:
rep movs dword ptr es:[edi]  dword ptr ds:[esi]
esi所指向地址的内容为:da 16 b0 00 00
ecx值为3fffffc1
问题:
     使用ollydbg 调试这条代码时候,反映堆栈溢出。
     但是这条语句是字符串的移动的呀,就是说虽然ecx值很大,但是移动的话应该只是会导致移动 da 16 00
  然后余下的内容因为遇上了00,就应该不被移动了,这样的话怎么会导致堆栈溢出异常的呢?
     大家指点一下吧,小弟想破了脑袋都没搞明白。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
A5 MOVS m32, m32 Move doubleword at address DS:(E)SI to address ES:(E)DI

移动一次后bytes at address DS:(E)SI是变没吗。
2006-4-13 15:25
0
雪    币: 200
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
移动一次后 确实esi 和edi显示都是已经发生了大量的移动,但是movs不是在移动过程中遇上0就终止了的吗?esi和edi又怎么会发生大量的移动的呢?
2006-4-13 16:40
0
雪    币: 124
活跃值: (70)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
最初由 ttmusic 发布
但是movs不是在移动过程中遇上0就终止了的吗?


不是
2006-4-13 17:12
0
雪    币: 224
活跃值: (75)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
楼上的说的对,他会不断的移的直到ecx 为0
2006-4-13 19:55
0
雪    币: 200
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
呵呵,多谢,明白了,我把 数串 和 字符串 给搞混了。这种是ecx是多少就拷贝多少,而不是向字符串一样遇上0就停止,晕了,再次感谢。
2006-4-13 20:57
0
雪    币: 238
活跃值: (326)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
7
注意rep前缀,如果单纯的rep只有ecx = 0 才能停下来。只有 scas和 cmps 才能加 repe 和 repne 前缀,在这种情况下当符合 e 和 ne 的条件出现,ecx != 0 也能退出。
2006-4-13 22:29
0
雪    币: 200
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
哦,也有当e 和 ne 的条件 退出的,感谢感谢,长知识了.
2006-4-14 08:32
0
游客
登录 | 注册 方可回帖
返回
//