代码段中定义的数据不可写

linxren 2008-05-09 03:03:43
.const

szCaption db '恭喜',0
szText db '当您看到这个信息的时候,您已经可以编译Win32汇编程序了!',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
dwWrite dd ?
start:
invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
mov eax,5
mov dwWrite,eax
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start
我直接在罗云彬书上的一个简单例子上添了几句。做了下测试,结果是不可写的,程序会报错。
请问下,是否能在代码段中定义变量?有没有办法?
...全文
203 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
minl 2008-05-10
  • 打赏
  • 举报
回复
.data

dwWrite dd ?

不就行了么
linxren 2008-05-10
  • 打赏
  • 举报
回复
to minl:
呵呵,就是要把它放在代码段
linxren 2008-05-09
  • 打赏
  • 举报
回复
呵呵,编译过得去,执行时发现内存不能写
用户 昵称 2008-05-09
  • 打赏
  • 举报
回复
我开始理解对了,后来又想错了,我以为你在编译时过不去呢。
linxren 2008-05-09
  • 打赏
  • 举报
回复
to jenmyvenus:
改成dd 0也是不能对他写的。但是我在看一些病毒的源程序的时候,发现他们的一些变量都是定义在代码段中的。
to cnzdgs:
我试试去,非常感谢
dongyi940333 2008-05-09
  • 打赏
  • 举报
回复
学习^_^
cnzdgs 2008-05-09
  • 打赏
  • 举报
回复
正常情况下,变量应该定义在数据段里面,代码段中定义只读数据。
在Windows系统中,有内存保护机制,代码段默认是可读、可执行的,可以通过调用VirtualProtect函数来修改保护选项。MSDN中有相关说明。
用户 昵称 2008-05-09
  • 打赏
  • 举报
回复
你改成 dd 0试试。
yuelin586 2008-05-09
  • 打赏
  • 举报
回复
深刻学习中。。
任重而道远啊。。。
支持楼主的工作,加油哦
用户 昵称 2008-05-09
  • 打赏
  • 举报
回复
按道理,如果有足够高的权限,什么段都可以读写的。
linxren 2008-05-09
  • 打赏
  • 举报
回复
那么说就是没有办法了?
用户 昵称 2008-05-09
  • 打赏
  • 举报
回复
代码段定义变量,在dos下的com中常用,win下代码段应该是受保护的。

21,459

社区成员

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

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