首页
社区
课程
招聘
[求助]同样的代码写在exe中执行正确,写在DLL中却无法执行
发表于: 2008-2-1 21:31 5416

[求助]同样的代码写在exe中执行正确,写在DLL中却无法执行

2008-2-1 21:31
5416
同样的一句代码,直接写在exe中,能成功执行,写在dll的DLL_PROCESS_ATACH中,然后用LoadLibrary载入这个DLL,代码却没能成功执行,这是什么原因呢?
代码如下
invoke URLDownloadToFile,0,offset szURL,offset szFilename,0,0
就是下载一个文件,直接写在exe中的时候能成功下载
写在DLL的DLL_PROCESS_ATACH中,却没能被执行
用OD载入DLL跟了一下,发现跟到module urlmon的
75CBB202    E8 ABFBFFFF     CALL urlmon.URLDownloadToFileW
地方就走不了了

这个问题是怎么回事呢?

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 321
活跃值: (271)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
2
呵呵,这个事情是正常的,你只能在DLL的DLL_PROCESS_ATACH中调用kernel32.dll中导出的函数,因为系统可以保证在你调用kernel32.dll的函数之前,已经把kernel32.dll加载到进程地址空间中。而你调用的URLDownloadToFileW是在urlmon.dll中导出的,系统不能保证在你使用这个函数的时候,已经把这个dll加载到你的进程地址空间。
2008-2-1 23:06
0
雪    币: 221
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
哦,谢谢combojiang!
2008-2-2 00:37
0
雪    币: 221
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
那如果我在使用URLDownloadToFileW之前,调用LoadLibrary和GetProcAddress这两个函数获得URLDownloadToFileW函数的地址,再调用呢?这样能否成功?我试了一下好象还是不行,这又是为什么呢?
2008-2-2 00:50
0
雪    币: 321
活跃值: (271)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
5
嗯,肯定还是不行,在dllmain中调用LoadLibrary同样是不允许的。
2008-2-2 08:49
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
开个线程
写线程里
2008-2-2 09:07
0
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
[QUOTE=combojiang;412730]呵呵,这个事情是正常的,你只能在DLL的DLL_PROCESS_ATACH中调用kernel32.dll中导出的函数,因为系统可以保证在你调用kernel32.dll的函数之前,已经把kernel32.dll加载到进程地址空间中。而你调用的URLDownloadToFileW是在urlmon.dll...[/QUOTE]

貌似这里有些问题。。。。
2008-2-2 14:42
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
就是说在DLL里面在开个线程,我今天也遇见了这个问题!
2008-2-4 01:57
0
游客
登录 | 注册 方可回帖
返回
//