如果使用LoadLibrary显式链接dll,则从PE文件列出导入的函数

时间:2012-03-07 06:33:51

标签: c++ c portable-executable

我需要通过解析PE来列出所有导入的函数。 如果exe或dll隐式链接一个dll(使用导入库),我可以从导入表中获取所有调用的函数。但是如果任何dll或exe显式链接一个dll(使用LoadLibrary和getProcAddress),那么导入表将没有明确链接的那个dll的条目。

请告诉我如何在显式加载dll时获取所有外部函数的列表(使用getProcAddress)。

谢谢和问候, 基兰

1 个答案:

答案 0 :(得分:1)

没有办法100%可靠。基本上,您可以设置一些内容来监视在LoadLibraryGetProcAddress运行时传递给哪些参数以查看您找到的内容 - 但您需要知道用户在执行期间做出的选择可以并会影响出现的内容。

它也可以根据配置文件的内容,在任意目录中找到的文件等进行更改(例如,在目录X中加载所有DLL,并在每个中调用initialize_plugin())。