The esp
is right after eip
.
It seems that there are 4 bytes of data infront of your shellcode.
You need to pop that data and then call ESP
.
No register points directly to your shellcode, and ESP
behind the shell by 100 bytes.
You need to adjust the ESP register, so that it points to your shellcode and a way to jmp to ESP
.
How to user exception handler to exec your shellcode.
You have a very small buffer for your shellcode, now you need to use a egghunter to find your shell and exec it.