1
.data
value: .long 0x69
.text
#...
2
.text
value: .long 0x69
#...
我是一名学习 x86 的学生,我注意到
value
如果在 .text
下则不能修改.我一直在尝试阅读原因,但找不到。有人可以带我到可以阅读或简要解释的地方吗?
最佳答案
.text
部分是可执行文件的实际可执行指令所在的区域,.data
section 是可执行文件的区域,其中非基于堆栈的变量和常量所在的位置。无法修改 .text
中的值的原因部分是因为名为 W^X 的安全功能(又名 PaX、Exec Shield、DEP 等),它在大多数现代操作系统上启用,其中操作系统在执行时不允许内存区域不可写。它可以帮助缓解任意代码注入(inject)。
关于x86 - x86 中的 .data 和 .text 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14544068/