首页
社区
课程
招聘
[求助]DLL何时加载到内存?
发表于: 2010-9-27 10:05 5351

[求助]DLL何时加载到内存?

2010-9-27 10:05
5351
DLL何时加载到内存?一个控制台exe文件,只看到他载入了两个模块,kernel32.dll,ntdll.dll.
但是导入表里只有一个 kernel32.dll,   通过冰刃可以看到这个exe载入模块有很多很多。

问题,DLL是通过什么载入内存的?何时载入内存的?注入的模块又是何时加载的?导入表跟注入的DLL模块的关系等?

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

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 137
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
貌似加了TMD壳的程序就这样 本来应该是入口点之前加载的
专门消灭0回复
2010-9-27 12:23
0
雪    币: 37
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
时机未到而已,呵呵,没人知道吗?都不帮一下新人啊!~
2010-9-27 12:58
0
雪    币: 169
活跃值: (245)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
4
kernel32.dll  文件是windows系统文件,是系统自带的应该在 system32或者 windows目录里。
当然不用在程序文件夹里再有。还有 user32.dll 等等,像常用的系统dll  应该知道个大概。
2010-9-27 13:07
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Dll是动态链接库,是程序在执行时动态的被加载进内存的!
2010-9-27 13:16
0
雪    币: 37
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
4楼的你跑偏的
2010-9-27 13:17
0
雪    币: 37
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
在OD里面只看到kernel32.dll,ntdll.dll模块,在冰刃里看到的是N多个模块?在导入表里只有一个kernel32.dll模块
2010-9-27 13:18
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
当进程被加载时,系统为它分配一个4GB的地址空间,接着分析可执行模块(控制台exe文件),找到该程序

将要调用哪些DLL,然后系统搜索这些DLL,找到后就加载它们,并为它们分配虚拟的内存空间,最后将

DLL的页面映射到调用进程的地址空间,DLL加载完毕。建议看一下孙鑫的<<VC++深入详解>>19章动态连接库 讲的很详细的
2010-9-27 14:45
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
不是太懂 查一下
2010-9-27 15:05
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
当一个可执行文件被启动时,操作系统加载程序将为该进程创建虚拟地址空间。然后,加
载程序将可执行模块映射到进程的地址空间中。加载程序查看可执行模块的输入节,并设法找
出任何需要的D L L,并将它们映射到进程的地址空间中。
2010-9-27 15:09
0
雪    币: 37
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
OK,本人找到原因了,首先是根据导入表加载的DLL,这时候内存中只有两个DLL,kernel32.dll,ntdll.dll
在代码运行过程中会加载很多DLL 。
2010-9-27 15:54
0
雪    币: 47
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
是根据导入表而找到dll的吗,而不是找到了dll再将这些写入导入表的吗
2013-11-8 15:28
0
雪    币: 69
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
bp LoadLibraryA
bp LoadLibraryW
2013-11-8 16:23
0
游客
登录 | 注册 方可回帖
返回
//