如何找出从编译的c / c ++ dll调用的Win API函数

时间:2010-09-09 10:47:44

标签: c++ api winapi dll

我有一个已编译的C / C ++ Dll。

我想知道这个Dll调用了哪个外部API函数。

您知道哪些工具可以提供这些信息。

感谢。

6 个答案:

答案 0 :(得分:11)

您可以使用Dependency Walker查看DLL的API导入。当然,这并不能告诉您DLL是否进行动态加载或COM使用。

接下来你可以使用更重的logexts扩展来windbg,它将在运行时转储所有API调用。

答案 1 :(得分:3)

dumpbin实用程序与/imports命令行选项一起使用。还有一个depends.exe实用程序作为GUI。

请注意,这些不会告诉您链接到使用GetProcAddress的函数,也不会告诉您通过COM访问的接口。

答案 2 :(得分:2)

Dependency Walker(depends.exe)将成为你的朋友。

答案 3 :(得分:0)

外部API意味着什么(您是否将WINAPI视为外部API?)。 如果Windows API不是外部API,那么我们可以使用DumpBin.exe来显示二进制文件中使用的所有外部API。 如果你想查看可执行文件的依赖dll / exe,那么你可以使用Depend.exe。

答案 4 :(得分:0)

AFAIK,依赖性walker只显示直接调用的函数,而不是通过函数指针调用的函数。如果要查找 all 所调用的API,请记录对GetProcAddress的所有调用。

答案 5 :(得分:0)

Ida Pro,普遍接受的反汇编程序。它具有单独的导入和导出功能选项卡。它在逆向工程领域还有其他一些用途。