C 語言執行機器碼指令

#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; }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章