今天写了个example程序跑了一下,把代码写到.data?.data .const 堆栈中,都能执行成功。
而之前我只知道堆栈是可读可写可执行的,但不知道(在默认情况下)数据段是否可执行。是否有理论支持?以确定这些段都能执行代码。
请教,希望有知道的朋友告诉一下。谢谢!
如下,我并没有看到除了.text段的其它段有EXECUTE属性啊。
->Section Header Table
1. item:
Name: .text
Characteristics: 0x60000020
(CODE, EXECUTE, READ)
2. item:
Name: .rdata
Characteristics: 0x40000040
(INITIALIZED_DATA, READ)
3. item:
Name: .data
(INITIALIZED_DATA, READ, WRITE)
------解决方案--------------------------------------------------------
关注
------解决方案--------------------------------------------------------
你的程序运行在什么环境中?DOS?还是Windows? DOS是没有保护机制的,除非你进入DOS保护模式