我有一个已编译的C / C ++ Dll。
我想知道这个Dll调用了哪个外部API函数。
您知道哪些工具可以提供这些信息。
感谢。
答案 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,普遍接受的反汇编程序。它具有单独的导入和导出功能选项卡。它在逆向工程领域还有其他一些用途。