Realmente no recibo cómo este código hace lo que hace:Shellcode en C - ¿Qué significa esto?
char shellcode[] = "\xbb\x00\x00\x00\x00"
"\xb8\x01\x00\x00\x00"
"\xcd\x80";
int main()
{
int *ret;
ret = (int *)&ret + 2;
(*ret) = (int)shellcode;
}
bien, sé:
int *ret;
establece un puntero de int. y:
ret = (int *)&ret + 2;
establece la dirección de ret y 2 bytes (creo).
Pero no consiguen lo que esto significa:
(int *)&ret
Sé lo &ret
medios, pero no lo que significa (int *)&ret
. Además, ¿cómo ejecuta el shellcode asignando el valor de shellcode
al ret
?
ACTUALIZACIÓN: ¿Cuál es la diferencia entre:
(int *)&ret + 2
y:
&ret + 2
Curioso por qué tantos downvotes ... el shellcode parece bastante inofensivo. – FatalError