尝试在PROT_EXEC堆上调用代码时出现Segfault

时间:2015-02-17 15:46:55

标签: c segmentation-fault loader

我在mmap(PROT_READ | PROT_WRITE | PROT_EXEC)ed内存区域加载ELF可执行文件(使用clang编译的准系统C hello世界),从ELF标头读取其入口地址,然后在以下位置调用代码:这样的地址:

void* bin = ...; //address of the executable in memory: bin[0:1] = 0x7f45
void* entry = bin + read_elf(bin)->entry; //casts/junk omitted, I get the correct sum of address and offset
((void (*)(void))entry)();

但是,它会出现错误14(GNU / Linux x86_64 3.13)。

应将内存页面标记为可执行文件。出了什么问题?

0 个答案:

没有答案