使 ELF 的 .data 部分在静态时间可执行

逆向工程 小精灵
2021-06-18 18:12:57

是否可以使 ELF 文件的 .data 部分可执行?

我试图通过更改 .data 部分的标志来使 .data 部分可执行,但它根本不起作用。是不是系统设计不可能?我正在寻找一种方法,而不是使用 mprotect 动态修改权限。

谢谢。

2个回答

.data部分与堆栈一起使用,因此,您只需要使用选项编译程序-zexecstack即可使其可执行。例如:

gcc -Wall -Wextra -zexecstack -fno-stack-protector -o example example.c

对于可执行文件或共享对象,内核/动态加载程序不使用节表,而是使用段表(程序头)。那是您需要修补的那个(通常第二个PT_LOAD条目描述 .data+.bss 部分)。readelf -l