【问题标题】:How to find out which Win API functions are called from a compiled c/c++ dll如何找出从编译的 c/c++ dll 中调用了哪些 Win API 函数
【发布时间】:2010-09-09 10:47:43
【问题描述】:

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

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

你知道任何可以提供这些信息的工具吗?

谢谢。

【问题讨论】:

    标签: c++ api winapi dll


    【解决方案1】:

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

    除此之外,您还可以对 windbg 使用更重的 logexts 扩展,它将在运行时转储所有 API 调用。

    【讨论】:

    • Dependency Walker 还会告诉您动态加载的导入。但要使其工作,您需要运行一个使用 DLL 并调用执行加载的适当代码路径的应用程序。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          AFAIK,依赖遍历器只显示直接调用的函数,而不是通过函数指针调用的函数。如果您想查找所有调用的 API,请记录对 GetProcAddress 的所有调用。

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              猜你喜欢
              • 2011-08-20
              • 1970-01-01
              • 2020-04-24
              • 2018-02-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-11-01
              • 1970-01-01
              相关资源
              最近更新 更多