io non sono davvero ottenere come questo codice fa quello che fa:Shellcode in C - Cosa significa?
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;
}
Va bene, lo so:
int *ret;
imposta un puntatore di int. e:
ret = (int *)&ret + 2;
imposta l'indirizzo di ret e 2 byte (credo.)
Ma non capisco che cosa questo significa:
(int *)&ret
so che cosa significa ma &ret
non quello che significa (int *)&ret
. Inoltre, come si esegue lo shellcode assegnando il valore di shellcode
a ret
?
UPDATE: Qual è la differenza tra:
(int *)&ret + 2
e:
&ret + 2
Curioso perché così tanti downvotes ... lo shellcode sembra abbastanza innocuo. – FatalError