列出PE文件中的所有LoadLibrary和GetProcAddress调用

时间:2012-03-07 10:18:37

标签: c++ c portable-executable

我需要一个示例代码/工具来解析PE文件并列出所有LoadLibraryGetProcAddress个调用。除此之外,我还需要传递给LoadLibrary的DLL名称和传递给每个列出的GetProcAddress调用的函数名称。

3 个答案:

答案 0 :(得分:1)

无法静态检查对LoadLibrary / GetProcAddress的调用。

要从PE文件中静态获取导入和导出列表,请使用PEDUMP(或者您可以使用此在线实用程序:http://pedump.me)。

要为LoadLibrary / GetProcAddress配置应用程序,您需要像WinDbg这样的东西。将WinDbg附加到要分析的进程,并在LoadLibrary / GetProcAddress上放置断点。然后,您将能够看到参数。例如:

  • bp kernel32!LoadLibraryA“da poi(esp + 4); g;”

会在发生LoadLibraryA时打印出所有调用。

答案 1 :(得分:0)

您也可以使用Dependency walker。此工具显示所有类型(隐式,延迟加载,转发)依赖项。使用此工具,您甚至可以测试动态依赖项(通过调用LoadLibrary / GetProcAddress创建的依赖项)!要制作后者,必须在分析模式下运行Dependency walker。

答案 2 :(得分:0)

在某些情况下,在64位Windows上,您将无法使用Dependency Walker。在这种情况下,在WinDbg中使用它:

bu KERNELBASE!LoadLibraryExW "du/c100 rcx;g;"