Tag: 机器代码

将MachineCode从文件加载到内存并执行C – mprotect失败

嗨,我正在尝试将原始机器代码加载到内存中并在C程序中运行它,现在当程序执行时,它试图在内存上运行mprotect以使其可执行时中断。 我也不完全确定如果内存设置正确,它将执行。 我目前在Ubuntu Linux x86上运行它(也许问题是Ubuntu的过度保护?) 我目前拥有以下内容: #include #include #include int main ( int argc, char **argv ) { FILE *fp; int sz = 0; char *membuf; int output = 0; fp = fopen(argv[1],”rb”); if(fp == NULL) { printf(“Failed to open file, aborting!\n”); exit(1); } fseek(fp, 0L, SEEK_END); sz = ftell(fp); fseek(fp, 0L, SEEK_SET); membuf = […]

如何让gcc只生成可以直接加载到内存并执行的机器代码?

我想生成一个可以加载到内存中的文件(例如使用mmap ),然后跳转到该内存的开头来运行代码。 理想情况下,我希望选择使代码可重定位(可能效率低下)或指定代码期望加载的显式地址(这很痛苦),但任何一个都可能自行正常工作。