Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1132820
  • 博文数量: 254
  • 博客积分: 1242
  • 博客等级: 少尉
  • 技术积分: 1581
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-03 21:49
文章分类

全部博文(254)

文章存档

2017年(16)

2016年(4)

2013年(94)

2012年(140)

分类: LINUX

2012-05-31 21:50:37

汇编中保存32个通用寄存器的数值后,将首地址传递给c函数。
现象:首地址的前4B数值被修改。
原因:编译时使用o0选项,看c函数汇编中,保留入参的地址偏移至调用函数的栈中。而调用函数并未分配栈空间给入参,如此而来栈被踩踏。
编译使用o2选项,保留入参的地址在本函数的栈内部,不会发生栈踩踏。

这种踩踏发生在特定的情形:调用函数用汇编实现,自己分配栈。




阅读(1289) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~