首页
社区
课程
招聘
[求助]dependency walker解析messageboxA函数地址问题
2014-3-25 22:06 5774

[求助]dependency walker解析messageboxA函数地址问题

2014-3-25 22:06
5774
我用dependency walker解析messageboxA函数地址得到下图

     经计算messageboxA函数的地址应该为0x77d6EA11吧。但是用OD调试时跳出"地址0x77d6EA11不可读,请修改EIP"的提示。难道0x77d6EA11不是messageboxA函数的地址?然后我用VC写messagebox函数编译经OD调试后发现messageboxA的地址为0X7757EA11,如下图

     搞不清楚,是我中间那一步理解有问题吗?

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (9)
雪    币: 606
活跃值: (608)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Morgion 1 2014-3-25 22:11
2
0
很简单 因为你的进程空间并没有加载user32.dll 因为user32.dll默认加载是GUI进程或者是CUI进程需要的时候程序自己加载进来
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whnet 2014-3-25 22:27
3
0
地址随机化了吧。 你当前进程的user32 加载的基地址是这个地址么
雪    币: 68
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pregnant 2014-3-25 23:13
4
0
我程序中有加载user32.dll的,调试的是failwest的http://bbs.pediy.com/showthread.php?t=56656这个源代码
雪    币: 68
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pregnant 2014-3-25 23:29
5
0
地址随机化??这是个什么概念?
下面是我的程序
LoadLibrary("user32.dll");
printf("%d",(DWORD)GetProcAddress( GetModuleHandle("user32.dll"),"MessageBoxA" ));

   输出是2002250257换成十六进制也是7757EA11,不是77D6EA11
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whnet 2014-3-25 23:50
6
0
depends 看到的base 是静态的base  。 系统在加载 dll 的时候会随机化。

ASLR。 你查查。
雪    币: 415
活跃值: (34)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
笨奔 1 2014-3-26 09:46
7
0
X64下基址都是随机化的。
雪    币: 68
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pregnant 2014-3-26 10:25
8
0
查了下alsr的概念,意思是
Dll会随意加载到任意的位置,但我奇怪的是我地址都是7757ea11。操作系统是win7
雪    币: 68
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pregnant 2014-3-27 20:03
9
0
是alsr的原因,windows重启后dll加载的位置就会不一样
雪    币: 200
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
青妤 2022-1-13 12:39
10
0
您好,我在调试的时候也发现了这个问题,请问您解决了么?
游客
登录 | 注册 方可回帖
返回