程序各个区段是否EXECUTEABLE

pig4210 2008-01-16 12:01:20
今天写了个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)


...全文
61 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pig4210 2008-01-19
  • 打赏
  • 举报
回复
发信向mydo求教,以下是他的回答:
“在现有的intel86架构上,数据区是可执行的。但将来intel可能会改变这一做法。”
问题得到解决。谢谢mydo的热心提示。


Semigod 2008-01-17
  • 打赏
  • 举报
回复
你的程序运行在什么环境中?DOS?还是Windows? DOS是没有保护机制的,除非你进入DOS保护模式
pig4210 2008-01-17
  • 打赏
  • 举报
回复
天啊,牛人请帮帮忙解答一下吧。
pig4210 2008-01-17
  • 打赏
  • 举报
回复
DOS也没有这些属性啊,当然是32位PE程序喽。我也知道DOS没有保护机制。
可是在试验中,我查过.rdata 与.data区段都没有EXECUTE属性,然而,eip确定在里面跑了一通。里面的代码都能执行成功。这是为什么,没有EXECUTE属性却能执行,不是说Windows的段页式保护使数据的页面属性不会执行么?
goodmrning 2008-01-16
  • 打赏
  • 举报
回复
关注

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧