0
我想寫一個生成x86機器代碼的程序,但代碼只能運行在32位winxp上。它說「tiny.exe中的0x776315ee未處理的異常:0xC0000005:訪問衝突。」在win7 64bit上,爲什麼?爲什麼我的代碼只能在windows xp 32bit系統上運行?[代碼生成]
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
int main()
{
char *code = (char *)malloc(1024);
memset(code, 0, 1024);
char opcode = 0xB8;
memcpy(code, &opcode, sizeof(char));
int oprand = 2;
memcpy(code + sizeof(char), &oprand, sizeof(int));
char opret = 0xC3;
memcpy(code + sizeof(char) + sizeof(int), &opret, sizeof(char));
typedef void (* func_t)(void);
func_t func = (func_t)code;
func();
return 0;
}
但請注意,與'malloc'不同,'VirtualAlloc'將大小舍入到頁邊界(可能爲4 KiB)。 – 2015-02-07 12:44:53