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

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

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

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

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

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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

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

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