은 정말이 코드가 무엇을 어떻게하는지받지 못했습니다 :C의 쉘 코드 - 이것은 무엇을 의미합니까?
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
에 할당하여 쉘 코드를 어떻게 실행합니까?
(int *)&ret + 2
과 :
UPDATE : 차이점은 무엇 는
는&ret + 2
왜 그렇게 많은 downvotes ... 쉘 코드는 꽤 무해한 보입니다. – FatalError