我真的不得到這個代碼是如何做它做什麼:C中的shellcode - 這是什麼意思?
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
的值賦值爲ret
來執行shellcode的?
UPDATE: 之間有什麼區別:
(int *)&ret + 2
和:
&ret + 2
好奇爲什麼這麼多downvotes ... shellcode看起來很無害。 – FatalError 2012-03-22 03:39:26