首页
社区
课程
招聘
[讨论]请教如何不改名实现DLL重载
发表于: 2013-9-8 23:45 7294

[讨论]请教如何不改名实现DLL重载

2013-9-8 23:45
7294
正常情况下当一个DLL被加载后再次调用LoadLibrary加载这个DLL,只会增加这个DLL的引用计数,返回的还是之前加载的那个,但我发现TP可以把系统的DLL自己再加载一份,而且路径和系统DLL的路径完全一样,请问这是如何做到的?

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

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己实现一个PE Loader
2013-9-9 02:14
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
自己加载的PE不在进程模块列表中,TP加载的会在模块列表中,很好奇它是怎么实现的
2013-9-9 16:07
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
最土的方法:先断进程中的三个模块链表,重新加载一份,系统会重新分配地址,加载完再把上一份的链表还原回去
2013-9-10 13:39
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
顺便说一下,COM组件每创建一个实例对应的DLL都会被重新加载一份,可见系统本身应该也支持为一个DLL创建多个实例吧
2013-9-10 13:41
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
TP自己加载的系统DLL都不在进程模块列表中,猜测可能是自己实现了一个LdrpMapDll函数,通过调用NtCreateSection把DLL映射到内存中的
2013-9-10 13:49
0
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
reload ...
2013-9-10 15:44
0
游客
登录 | 注册 方可回帖
返回
//