全部博文(104)
分类: C/C++
2008-08-19 17:02:02
freearth2008-08-28 19:36:06
你仔细分析一下栈帧每一时刻的状态,以及函数的入口代码。
下面的代码在打印Hello, world后可以正确的执行结束。
[\code]
#include
chinaunix网友2008-08-27 20:15:45
写了一个缓冲区溢出,不过有问题,能指点一下吗,谢谢 #include "stdio.h" int shellcode() { int value = 0,i; unsigned int *s = &value; printf("address of value: %x\n", &value); printf("Overflow Successful!\n"); __asm__( "movl $0x80484e1,4( %ebp )" //0x80484e1是call test 后的代码地址,此处修改后就可以跳转到test() 后的语句执行 /* "movl $0x8f4390,44( %ebp )" 如果 不加这句会出现段错误(加了也错 。。。)加这句是因为我觉得会出现段错误是让他进入shellcode,并没有用call,没有构建环境,但是却在shellcode内ret了,所以我想模仿call:push eip, 不知道该怎么改