Chinaunix首页 | 论坛 | 博客
  • 博客访问: 972023
  • 博文数量: 58
  • 博客积分: 10192
  • 博客等级: 上将
  • 技术积分: 1845
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-22 21:24
文章分类

全部博文(58)

文章存档

2011年(11)

2010年(12)

2009年(20)

2008年(15)

分类: C/C++

2008-07-05 14:45:37

//出栈意思是STACK指针回覆, 而不是将那里的内存内容清除成为0

//出栈后内存中内容为59是没有清零的,所以找到59就可以修改其指针值

#include <stdio.h>

void func(int i)
{
      int a=0;
        while(1){
                if(*(&i+a)==59){
                        *(&i+a++)=43;
                        break;
                }
        }
        printf("i1 = %d\n",i);

}

void main()
{
        int i = 59;

        printf("i0 = %7d %7p\n",i,&i);
        func(i);
        printf("i2 = %d at %p\n",i,&i);

}

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

rainballdh2008-07-05 15:04:40

补充一下:GCC FUNC调用时候的STACK是有空闲的(不紧密). 如果有数值留在那里, 就会被查到.