依赖性walker如何知道模块中的哪些函数被使用?

时间:2011-05-14 12:24:12

标签: windows algorithm winapi dll dependencies

它可以列出导出函数中使用的函数。

这是怎么做到的?

1 个答案:

答案 0 :(得分:3)

关键是每个Windows模块(包括可执行文件和库)都包含一个导入表,它列出了它依赖的所有其他模块。此表由链接器构建,内部由操作系统用于确定模块的依赖关系并加载相应的库。

所以Dependency Walker必须做的就是递归所有这些模块(比喻,“走过”),构建各自导入表中指定的模块列表。

显示所有运行时依赖项(例如那些使用GetProcAddress函数加载的依赖项),因为它们未在导入表中列出。它仅显示加载时(或静态)依赖关系。

您可以找到有关Dependency Walker如何工作的更多信息herehere