我并没有真正了解这段代码是如何做的:
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
意思。此外,它如何通过分配 to 的值shellcode
来执行 shellcode ret
?
更新:有什么区别:
(int *)&ret + 2
和:
&ret + 2