如何在Windows中以编程方式查找动态加载的模块(静态模块)

时间:2010-04-20 20:40:02

标签: c++ c windows

我正在尝试将unix实用程序ldd移植到windows,因为依赖walker和cygcheck并没有完全给我我正在寻找的用法。 (也是为了学习经历)

我一直在寻找MSDN,一个列出可执行文件的dll依赖项的Windows API,甚至是编译exe文件中的存储格式(只是为了过滤它),但我一直找不到任何东西。 / p>

如果有人知道API调用窗口用于列出要加载的模块,或者我可以在可执行文件中搜索哪些模式来查找要加载的模块,请帮帮我 :) 谢谢!

-note:我不打算对动态模块进行分析,只列出运行时所需的模块

3 个答案:

答案 0 :(得分:2)

在exe导入表中找不到加载了loadlibrary api的模块。因此,要跟踪这些模块,我们必须使用几种api监控工具之一。 http://www.rohitab.com/apimonitor

www.apimonitor.com

如果不是这种情况,您可以直接从

获取所有导入
  

dumpbin / import abc.exe

(我不完全确定命令行语法)

dumpbin是windows sdk的一个工具(visual studio也包含它)

答案 1 :(得分:1)

就个人而言,在我花费大量时间试图找出(可能复杂的)API调用之前,我会考虑在控制台模式下运行Dependency Walker,看看我是否可以从那里提取我需要的文本数据。

答案 2 :(得分:1)

有用的链接:

PE COFF Spec

X86 Disassembly/Windows Executable Files

MSDN Magazine Article Part 1

MSDN Magazine Article Part 2

您感兴趣的领域通常是进口目录。这两个也可能有用:

Tool Help Library

Debug Help Library