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

标签 x86

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/

相关文章:

assembly - masm 错误 A2075 : jump destination too far : by 30 bytes

assembly - 当我向汇编 x86 插入新指令时堆栈帧大小?

assembly - 在 x86-64 索引寻址模式中使用 8 位寄存器

gcc - GNU 汇编程序没有生成我可以执行的程序

performance - L1缓存命中的周期/成本与在x86上注册的周期/成本?

c# - 64 位 Windows 服务但需要 32 位 dll

io - UEFI中通过I/O空间和MMIO访问intel显卡寄存器

x86 输入/输出端口 I/O 的 C 内联汇编具有操作数大小不匹配

assembly - 如何在汇编中使用 int 13 和 AH=03h 中断来用零填充扇区?

pointers - 'fword ptr' 到底是什么?