Procmon“加载图像”和Hello World

Procmon“加载图像”和Hello World

我编写了一个 32 位 C++ Hello World 程序。然后我通过 SysInternal 的 Procmon 观察了它的执行情况。令我惊讶的是,我有 5 个“加载图像”类型的事件。加载了以下内容:

  • 动态链接库
  • 内核32库
  • 内核库
  • 应用程序帮助文件
  • msvcrt.dll

msvcrt.dll 和 kernel32.dll 是我的 Hello World 程序导入的 DLL。因此预计会加载。

根据我的研究,Windows 将 apphelp.dll 作为应用程序兼容性的一部分加载到我的进程中。

我想知道:

  1. 为什么Windows也加载ntdll.dll?
  2. 为什么Windows还会加载KernelBase.dll?
  3. 将未经请求的 DLL 加载到进程中的过程称为 DLL 挂钩 (DLL Hooking) 吗?

附言:我正在使用最新的 Windows 10 版本。

答案1

根据您从其他库导入的功能,它们可能依次导入其他库。

例如Kernel32实际上导入了许多功能KernelBase并且没有什么可以阻止KernelBase从中导入函数来ntdll执行程序所需的基本任务。

相关内容