什么是x86中的.data和.text?

时间:2013-01-27 03:17:08

标签: x86

1

.data
value: .long 0x69
.text
#...

2

.text
value: .long 0x69
#...

我是一名学习x86的学生,我注意到value如果在.text下,则无法修改。我一直试图解读原因,但我找不到它。有人可以带我到我能读到的地方或简要解释一下吗?

1 个答案:

答案 0 :(得分:3)

.text部分是实际可执行指令所在的可执行文件的区域,.data部分是基于非堆栈的变量和常量所在的可执行文件的区域。你无法修改.text部分中的值的原因是因为一个名为W^X的安全功能(又名PaX,Exec Shield,DEP等),它在大多数现代操作中都启用了系统,OS在执行时不允许存储区域不可写。它可以帮助缓解任意代码注入。