1
.data
value: .long 0x69
.text
#...
2
.text
value: .long 0x69
#...
我是一名学习x86的学生,我注意到value
如果在.text
下,则无法修改。我一直试图解读原因,但我找不到它。有人可以带我到我能读到的地方或简要解释一下吗?
答案 0 :(得分:3)
.text
部分是实际可执行指令所在的可执行文件的区域,.data
部分是基于非堆栈的变量和常量所在的可执行文件的区域。你无法修改.text
部分中的值的原因是因为一个名为W^X的安全功能(又名PaX,Exec Shield,DEP等),它在大多数现代操作中都启用了系统,OS在执行时不允许存储区域不可写。它可以帮助缓解任意代码注入。