【问题标题】:How to know what dependencies where loaded by LoadLibrary?如何知道 LoadLibrary 加载了哪些依赖项?
【发布时间】:2014-09-30 13:09:00
【问题描述】:

调用 LoadLibrary 将尝试加载指定的库和任何依赖项(MSDN:“指定的模块可能会导致加载其他模块。”)。

如何获取因 LoadLibrary 调用而加载的任何依赖项的名称列表(或者更好的是模块句柄)?

谢谢!

【问题讨论】:

  • 谷歌“显示加载器快照”。
  • 你为什么要这样做?
  • 我和@David 一起讨论这个问题。找出加载或尝试加载哪些模块的唯一原因是出于诊断原因。要求模块句柄听起来像是你追求的任何目标的错误方法。也许你可以解释你最终想要达到的目标。您可能会得到更好的答案。

标签: c++ winapi loadlibrary


【解决方案1】:

如果您希望以编程方式进行,您可以:

  1. 在调用 LoadLibrary 之前列出已加载的模块(例如使用 ToolHelp 或 PSAPI)
  2. 在调用LoadLibrary后创建相同的列表
  3. 比较两者并列出新的

但是,这不会捕获进程中已经存在的依赖项(kernel32 等)。

【讨论】:

  • 非常感谢所有建议。我将此响应标记为答案,因为我需要在代码中以编程方式执行此操作,而不是在调试环境中,我认为 Hans 的答案指的是(我应该在问题中明确说明这一点。)。
猜你喜欢
  • 1970-01-01
  • 2018-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 1970-01-01
相关资源
最近更新 更多