このコードがどのように機能するかはよくわかりません。
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;
}
わかりました、私は知っています:
int *ret;
int のポインターを設定します。と:
ret = (int *)&ret + 2;
ret と 2 バイトのアドレスを設定します (と思います)。
しかし、これが何を意味するのかわかりません:
(int *)&ret
意味はわかるけど&ret
意味がわからない(int *)&ret
。shellcode
また、 toの値を代入してシェルコードを実行するにはどうすればよいret
ですか?
更新:次の違いは何ですか:
(int *)&ret + 2
と:
&ret + 2