Я пытаюсь научиться выполнять шеллкод из программы, но не могу запустить даже самый простой код. Следующий код должен просто выйти из терминала при его запуске:
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/mman.h>
char exitcode[] = "\xb0\x01\x31\xdb\xcd\x80";
int main() {
int (*func)();
func = (int (*)())exitcode;
(int)(*func)();
return 0;
}
Но все, что я получаю, это segfault. GDB говорит, что это происходит, когда программа обращается к ячейке памяти с кодом выхода [at (int)(*func)(); ], но я не уверен, почему это вызывает проблему. Я использую 64-битную ОС Linux Mint. Любая помощь приветствуется.