毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> linux >> 正文

报错 segmentation fault

更新时间:2012-12-12:  来源:毕业论文

#include<stdlib.h>
#include<stdio.h>

void why_here(void) /*这个函数没有任何地方调用过 */
{
        printf("why u here ?!\n");
        exit(0);
}

int main(int argc,char * argv[])
{
        long long buff[1];
        //buff[1]=(long long)why_here;
        //buff[2]=(long long)why_here;
        buff[3]=(long long)why_here;
        return 0;
}

执行后,的确会打印 "why u here?"。而且,如果注释掉 why_here() 中的 exit(0),打印后会出现 segmentation fault。不明白其中的原理。
而且,现在对 shellcode 开始感兴趣,顺便请问应该如何学习?

说你程序几点问题
1、buff[3] 访问越界,
2、buff[0] 存放的是why_here地址
3、不要随便用exit(),这个是退出进程。

这不是exploit吗,内存溢出漏洞啊
main函数的返回地址被覆盖成why_here的地址了,所以main里面return 0以后执行why_here函数去了
why_here里调exit做正常的清理工作所以没问题,这个清理工作本来是main正常返回后的代码做

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。