我并没有真正了解这段代码的作用:
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;
}
Run Code Online (Sandbox Code Playgroud)
好的,我知道:
int *ret;
Run Code Online (Sandbox Code Playgroud)
设置int的指针.和:
ret = (int *)&ret + 2;
Run Code Online (Sandbox Code Playgroud)
设置ret的地址和2个字节(我想.)
但我不知道这意味着什么:
(int *)&ret
Run Code Online (Sandbox Code Playgroud)
我知道什么&ret意思但不(int *)&ret意味着什么.此外,它是如何通过分配的值执行的shellcode shellcode来ret?
更新:有什么区别:
(int *)&ret + 2
Run Code Online (Sandbox Code Playgroud)
和:
&ret + 2
Run Code Online (Sandbox Code Playgroud)