首页
社区
课程
招聘
[求助]mov dword ptr [ecx], edx发生错误
发表于: 2009-1-8 17:44 5116

[求助]mov dword ptr [ecx], edx发生错误

2009-1-8 17:44
5116
我在一个dll里自己添加了一个call

call里写了这么几句

036BC863    B9 00FA6D03     mov     ecx, 036DFA00      
036BC868    8B75 0C         mov     esi, dword ptr [ebp+C]  //ebp+C=30
036BC86B    8931            mov     dword ptr [ecx], esi   //OD运行到这里,说调试的程序无法处理异常,然后程序就关闭了

请问如何解决?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
这个地址036DFA00是怎么来的?地址有效吗?

OD提示的异常是不是“非法内存访问”?

直接这样硬编码一个内存地址,仅限于:该地址位于PE文件的数据section(严格说是至少具有R访问权限的section)内存范围之内,并且对于dll,需要在重定位项。
2009-1-8 19:31
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没说非法内存访问,什么叫做在重定位项内?
提示是:调试的程序无法处理异常
2009-1-8 22:23
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
4
你在“选项->调试选项->异常”中不要选择忽略内存访问异常,就会看到“非法访问内存”的提示了。

重定位项是重定位表中的一项,简单地说就是为了能够让模块加载到不同的基地址而存在的一个东西。这个不好一下解释清楚,要完全理解,你需要看一看PE文件的相关知道,以及连接器和加载器的相关知识。
2009-1-8 22:45
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
能让这个内存地址合法吗?
2009-1-8 23:45
0
雪    币: 415
活跃值: (34)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
运行时候得到基址,加上偏移就得了。
2009-1-9 00:04
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
基址怎么看呢?这么多空内存不用浪费呀...
2009-1-9 10:17
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
Log data, 条目 0
地址=036BC863
消息=访问违规: 正在写入到 [036DFA00]
我该怎么修复?
2009-1-9 21:10
0
游客
登录 | 注册 方可回帖
返回
//