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

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

2016-8-23 10:37
6951
最近自己实现了个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的资料:809K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6W2L8X3E0#2i4K6u0W2j5X3q4A6k6s2g2Q4x3X3g2U0L8$3#2Q4x3V1k6D9K9h3&6C8i4K6y4r3N6i4u0D9i4K6y4p5y4U0u0h3d9V1!0m8g2K6q4A6j5@1g2X3d9@1t1H3d9g2W2g2k6i4k6u0x3i4W2f1b7U0R3#2P5i4q4o6y4h3A6d9b7e0y4z5z5q4y4p5x3g2S2W2z5q4A6G2h3r3#2b7g2h3y4A6x3X3p5I4k6%4q4b7P5V1k6T1L8V1N6h3c8r3#2m8c8V1H3$3k6h3u0@1c8g2x3&6z5g2)9#2k6X3H3$3h3Y4N6&6j5@1u0x3e0p5N6g2j5$3g2t1L8$3N6B7g2q4W2z5x3K6c8B7e0Y4j5$3k6%4k6$3x3H3`.`.,上面只说映射关系存储在Apisetschema.dll中,但这个dll除了版本信息没其它资源也没导出函数,不知道如何使用。

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 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
雪    币: 4516
活跃值: (5836)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个当时我也想过... 如果这样单独再加载个这个DLL效率应该很低... 不知道微软为什么要这样做
2016-8-23 15:50
0
雪    币: 29
活跃值: (955)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我刚写了 解析API集名称。。。不知道你现在还需不需要知道这个知识
2021-7-17 18:27
0
游客
登录 | 注册 方可回帖
返回