使用易失性检查内存转储中的 services.exe 进程,我构建了一个加载到进程空间中的 dll 列表。(模块来自 InLoadOrder 模块列表)
这只是摘录(完整列表:http : //pastie.org/8560797):
0x5b860000 netapi32.dll
FileObject @8a3cb028, Name: \WINDOWS\system32\netapi32.dll
0x77f60000 shlwapi.dll
FileObject @8a3e0df0, Name: \WINDOWS\system32\shlwapi.dll
如您所见,进程中加载了 shlwapi.dll。感谢 DependencyWalker(查看 services.exe 的导入),我发现了 shlwapi.dll 是如何加载的。( -> 表示进口)
netapi.dll -> dnsapi.dll -> iphlpapi.dll -> mprapi.dll -> setupapi.dll -> shlapi.dll
但只加载了 netapi.dll。dnsapi.dll 没有加载,在 InLoadOrder 模块列表中没有它的条目,也没有加载来自上述“依赖链”的任何其他 dll。
这不仅适用于 shlapi.dll,也适用于许多其他加载的 dll。例如:shell32.dll、psapi.dll... 也不会只发生在services.exe进程中。
知道为什么将这些 dll 加载到进程中吗?
非常感谢任何帮助,问候!