Ссылка http://hackoftheday.securitytube.net/2013/04/demystifying-execve-shellcode-stack.html выделяет способ записи shell-кода execve.Шеллкод в программе C
#include<stdio.h>
#include<string.h>
unsigned char code[] =
"\x31\xc0\x50\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80";
main()
{
printf("Shellcode Length: %d\n", strlen(code));
int (*ret)() = (int(*)())code;
ret();
}
Что делает линия int (*ret)() = (int(*)())code;
?
[Cdecl] (http://cdecl.org /) говорит: введите код в указатель на функцию, возвращающую int –
Я не понимаю() после * ret и int (*)() перед кодом. – Karan
Чтобы разобрать такие конструкции в голове, пройдите по правилу по часовой стрелке/спирали: http://c-faq.com/decl/spiral.anderson.html – jwaliszko