是否可以使 ELF 文件的 .data 部分可执行?
我试图通过更改 .data 部分的标志来使 .data 部分可执行,但它根本不起作用。是不是系统设计不可能?我正在寻找一种方法,而不是使用 mprotect 动态修改权限。
谢谢。
是否可以使 ELF 文件的 .data 部分可执行?
我试图通过更改 .data 部分的标志来使 .data 部分可执行,但它根本不起作用。是不是系统设计不可能?我正在寻找一种方法,而不是使用 mprotect 动态修改权限。
谢谢。
该.data
部分与堆栈一起使用,因此,您只需要使用选项编译程序-zexecstack
即可使其可执行。例如:
gcc -Wall -Wextra -zexecstack -fno-stack-protector -o example example.c
对于可执行文件或共享对象,内核/动态加载程序不使用节表,而是使用段表(程序头)。那是您需要修补的那个(通常第二个PT_LOAD
条目描述 .data+.bss 部分)。见readelf -l
。