I am writing shellcode on BackTrack 5 R2 x86 running in Virtualbox and the registers prior to the int 0x80 syscall look like this:
which is set up for the connect() syscall. The value in the ecx register is an argument array that contains:
0x8e60558: 0x00000009 0x8e60583 0x00000010
where 0x00000009 is the file descriptor, 0x8e60583 is the server struct pointer that points to:
0x8e60583: 0x00000002 0x0000115c 0x0100007f
[address]: [AF_INET=2] [PORT=4444] [IP=127.0.0.1]
I know that the file descriptor is correct and all of the constant values set up in the registers like storing 0x66 in eax (socketcall is syscall #102) are correct to the best of my knowledge yet when I run the code, which should return the connected socket FD in the eax register, it returns:
which is the error code for "network unreachable". What I have I done incorrectly? Would it have to anything to do with the network settings of Virtualbox?
EDIT: This doesn't have anything to do with the endianess as I have tried both network byte order and little endian.