免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: GoldenSoldier

Linux堆栈溢出的经典问题,欢迎围观!大牛前进 [复制链接]

论坛徽章:
0
发表于 2009-12-04 19:25 |显示全部楼层
mark一下

论坛徽章:
0
发表于 2009-12-12 13:15 |显示全部楼层
yaya执行了哦

论坛徽章:
0
发表于 2009-12-16 23:31 |显示全部楼层
看了MIK得方法,我也尝试了一下:
#include<stdio.h>

void attack()
{
    int attack=1;
    printf("hi,attacked!\n");
}
void yaya()
{
    int yaya=1;
    printf("hi,yaya is my wife\n");
}
void foo()
{
    int c_foo=1;
    int addr = *(&c_foo+2);
    *(& c_foo +2)=(int)attack;
    *(&c_foo + 3)=addr;
}

void main(){
    int a_main=1;
    int addr = *(&a_main+2);
    *(& a_main+2)=(int)yaya;
    *(& a_main+3)=addr;
    foo();
}

论坛徽章:
0
发表于 2010-02-10 15:50 |显示全部楼层
void foo()

{

int c_foo=1;

  *(& c_foo +2)=(int)attack;

}
修改了foo入栈前保存的环境,当然会跳到attack那里,你把它改成main,它还会跳到main那里

论坛徽章:
0
发表于 2010-02-10 15:51 |显示全部楼层
不过你能写这么清楚,牛人
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP