#include <stdio.h>
#include <string.h>
#include <sys/mman.h>
int main() {
typedef int (*func_t)();
unsigned char code[] = {
0xb8, 0x08, 0x00, 0x00, 0x00, // mov eax, 0x08
0xc3 // ret
};
// 申請一片可讀可寫可執行的匿名私有內存區域
unsigned char *pcode = (unsigned char *)mmap(
NULL, 4096, PROT_READ | PROT_WRITE | PROT_EXEC,
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
memcpy(pcode, code, sizeof(code));
func_t foo = pcode;
printf("%d\n", foo());
munmap(pcode, 4096);
return 0;
}
C 語言執行機器碼指令
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.