我刚刚偶然发现,执行此 GetModuleHandle("ntdll.dll") 无需先前调用 LoadLibrary("ntdll.dll") 即可工作。

这意味着 ntdll.dll 已经加载到我的进程中。

假设 ntdll.dll 将始终加载到 Win32 应用程序上,因此不需要调用 LoadLibrary 是否安全?

最佳答案

来自 MSDN on LoadLibrary()(强调我的):



换句话说,继续调用 LoadLibrary() 并确保您获得 ntdll.dll 的句柄是安全的——但是系统几乎肯定会增加引用计数,因为它应该已经加载了。

至于“它真的总是加载吗?”,请参阅 Windows Internals on the Image Loader(简短的回答是肯定的,ntdll.dll 是加载器本身的一部分,并且始终存在)。

相关段落是:

关于windows - Win32 应用程序是否自动链接到 ntdll.dll?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43617617/

10-10 06:43