Как получить код для выполнения шестнадцатеричного байт-кода?
Я хочу, чтобы простой метод C мог запускать шестнадцатеричный байт-код на 64-битной машине Linux. Вот программа на C, которая у меня есть:
char code[] = "\x48\x31\xc0";
#include <stdio.h>
int main(int argc, char **argv)
{
int (*func) ();
func = (int (*)()) code;
(int)(*func)();
printf("%s\n","DONE");
}
Код, который я пытаюсь запустить ("\x48\x31\xc0"
) Я получил, написав эту простую программу сборки (она не должна ничего делать)
.text
.globl _start
_start:
xorq %rax, %rax
а затем компилировать и objdump-его, чтобы получить байт-код.
Однако, когда я запускаю свою программу на C, я получаю ошибку сегментации. Есть идеи?