使用绝对路径加载Kernel32.dll更安全吗?

时间:2019-01-10 06:21:06

标签: winapi

我有下面一行的驱动程序代码

hKernel32DLL = LoadLibrary( "Kernel32.dll" );

现在有人查看了我的代码,并建议使用完整路径加载DLL。 我在网上做了一个关于加载kernel32.dll的快速​​搜索,但是没有人真正使用完整路径。

有人可以向我解释为什么我应该指定kernel32.dll的绝对路径吗?

1 个答案:

答案 0 :(得分:0)

使用完整路径加载.DLL更安全。 Kernel32已被加载,因为您已静态链接到LoadLibrary,因此在您的特定情况下这无关紧要。 (在Windows 2000以外的所有版本的Windows上,CreateProcess甚至会在启动之前将Kernel32加载到进程中,但这不适用于其他核心.DLL,例如Gdi32和User32。)

如果您担心.DLL劫持攻击,则可以使用LOAD_LIBRARY_SEARCH_SYSTEM32标志调用SetDefaultDllDirectories,这会强制所有具有相对路径的.DLL从系统目录中加载。