我不太明白这段代码是如何实现它的:
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;
设置一个指向整数的指针。
ret = (int *)&ret + 2;
设置ret的地址和2个字节(我想是指长度)。
但我不明白这是什么意思:
(int *)&ret
我知道&ret
的含义,但不知道(int *)&ret
的含义。另外,将shellcode
的值赋给ret
后,它是如何执行shellcode的?
更新: 以下两者有什么区别:
(int *)&ret + 2
并且:
&ret + 2