首页
社区
课程
招聘
[求助]虚拟dll的导出函数如何得到实际导出函数地址?
发表于: 2016-8-23 10:37 6816

[求助]虚拟dll的导出函数如何得到实际导出函数地址?

2016-8-23 10:37
6816
最近自己实现了个GetProcAddress,用win7 x64系统Syswow64文件夹的kernel32.dll测试时发现个问题,我选了它的AddDllDirectory导出函数进行测试,结果发现它指向api-ms-win-core-libraryloader-l1-1-0.AddDllDirectory,本来这种情况可以进一步解析到实际地址的,但问题来了,进程中虽然加载了kernel32.dll,但并无api-ms-win-core-libraryloader-l1-1-0.dll,通过百度搜索知道这是虚拟dll但并没说明如何通过虚拟dll得到真实dll。kernel32导出函数里有很多都引用了虚拟dll,大家有没有解决方法?

补充:不要以为把api-ms-win-core-libraryloader-l1-1-0.dll载入进程中就能解决问题,这样得到的也只是个错误的地址,因为api-ms-win-core-libraryloader-l1-1-0中的导出函数啥都没做,只是返回0。系统自己的GetProcAddress就可以得到正确的地址,指向KernelBase.dll。百度里找到的有关虚拟dll的资料:http://wenku.baidu.com/link?url=62VJOAW1icEfKB0IYUevI1yTB85yqC5jRA3N8SD1Xe8ZoXmPUci2a1gqPzFbnGVDmAFL6ebtES99_l6ZwycBLLGUceHogjTYN34jNv6gvv3,上面只说映射关系存储在Apisetschema.dll中,但这个dll除了版本信息没其它资源也没导出函数,不知道如何使用。

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 135
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
<----------如果是win7以上的系统,有部分调用kernel32里的函数,会重定向到KernelBase里,
这是win7系统的新机制。。。。
2016-8-23 11:41
0
雪    币: 152
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这个知道,但是这个自己实现的GetProcAddress不是只针对Kernel32.dll的,应该具有通用性,而且Kernel32.dll导出表中的虚拟dll也未必都是指向KernelBase.dll,所有要研究如何解析这个虚拟dll
2016-8-23 12:58
0
雪    币: 267
活跃值: (438)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
4
PE的转发函数吧?没有听说过什么虚拟dll!
2016-8-23 15:04
0
雪    币: 3574
活跃值: (4719)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个当时我也想过... 如果这样单独再加载个这个DLL效率应该很低... 不知道微软为什么要这样做
2016-8-23 15:50
0
雪    币: 29
活跃值: (765)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我刚写了 解析API集名称。。。不知道你现在还需不需要知道这个知识
2021-7-17 18:27
0
游客
登录 | 注册 方可回帖
返回
//