Probando algunas shellcodes me di cuenta que no funcionaban. Despues de fijarme me di cuenta que los opcodes estaban mal, los saque con el gdb con examine.
En fin.. me fije con la shellcode super clasica del execv y parece que interpreta mal algunas instrucciones, para ser precisos los jmps y los calls; no los interpreta como short jmps sino como long jmps. Es decir la instruccion jmp 0x1f (como todos conocen) me genera los opcodes e9 24, tndria que ser eb 1f .
Y el call que salta hacia atras, no me lo toma como un numero negativo o sea -0x24 lo interpreta mal, intente pasandole el numero negativo como 0xfffffxx y tmpoco lo interpreta bien. :O
Alguien tiene idea si es alguna version del GCC que hace esto o que, con el objdump me da tmb los opcodes mal.
Saludos!










Autor



En línea


