2010-05-17 80 views
1

我有一个旧的VB6应用程序,我不确定哪些代码被用来编译它。源代码的一个修订版在kernel32.dll中调用Sleep。如何判断DLL函数是否从VB6 exe被调用?

有没有办法找出exe是否在DLL中调用特定的函数?我可以看到kernel32.dll通过使用“Dependency Walker”工具链接,但似乎没有告诉我从exe中调用了特定的函数。

回答

2

您可以使用Process Explorer来查看哪些DLL函数在运行时被exe调用。

1

如果您可以在调试器中运行该程序,则可以始终在interrest函数的地址处设置断点。当然,那么你必须触发对导入函数的实际调用。

您也可以尝试在反汇编程序中加载程序,看看是否有任何引用,但不会捕获任何动态加载的函数。一个工具看看是PE Explorer。我不确定这是否适用于VB6程序,因为dll导入代码可能会动态加载函数(使用GetProcAddress等)。

+0

+1对于调试器。任何人都想发布有关使用WinDbg的分步说明?我非常肯定VB6 DLL导入代码会动态加载这些函数 - 如果DLL中不存在指定的函数,那么在调用该函数时会出现运行时错误。不在应用程序加载时。 – MarkJ 2010-05-17 16:12:41

0

在Dependency Walker中,您可以使用Profile命令。
这允许您跟踪并查看调用哪些方法。

相关问题