[C++] 如何查看DLL中包含了哪些函数

发布时间:2024年01月23日

什么是DLL?

DLL(动态链接库)是一种可执行文件格式,它包含了一些可以被多个程序共享的代码和数据。当一个程序需要使用某个DLL中的函数或类时,操作系统会将该DLL加载到内存中,并在程序运行时将其链接到程序的地址空间中。这样,程序就可以通过调用DLL中的函数或访问其数据来实现特定的功能。

为什么需要查看DLL中函数?

在以下情况下,需要查看DLL(动态链接库)中的函数:

  1. 查看自定义的DLL是否正常导出了需要暴露给调用者的函数清单。
  2. 当你需要使用某个特定功能或类库时,而这个功能或类库是由DLL提供的。
  3. 当你在使用某个软件或应用程序时,发现它依赖于一个特定的DLL,以实现某些功能。
  4. 当你在使用某个开发工具(如Visual Studio)进行编程时,需要调用DLL中的函数来完成某个任务。
  5. 当你在使用某个操作系统(如Windows)时,需要调用DLL中的函数来实现某些系统级别的操作。

通过 Dependency Walker来查看

Dependency Walker (depends.exe) Home Page

http://www.dependencywalker.com/depends22_x64.zip

下载完成,进行解压,通过“depends.exe”打开软件:

该软件只支持到Windows 8,不支持Windows 10。在 Win10 下使用 Dependency Walker 分析任何 DLL 都会进入未响应的状态。

通过Dependencies来查看

https://github.com/lucasg/Dependencies

该自由软件是“Dependency Walker”的替代者。?

https://github.com/lucasg/Dependencies/releases/download/v1.11.1/Dependencies_x64_Release.zip

?下面是打开“C:\Windows\System32\msvcrt.dll”的截图:

?下面是打开自定义动态连接库“D:\my_project\VCXXTutorials\PyCallDLL\MathLibrary\x64\Debug\MathLi
brary.dll”的截图:

通过Visual Studio自带的dumpbin命令查看

Microsoft COFF 二进制文件转储程序 (DUMPBIN.EXE) 显示有关通用对象文件格式 (COFF) 二进制文件的信息。 你可以使用 DUMPBIN 检查 COFF 对象文件、COFF 对象的标准库、可执行文件和动态链接库 (DLL)。

DUMPBIN 参考 | Microsoft Learn

dumpbin位于VC的安装路径下,比如“D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\bin\Hostx86\x64”中。

打开命令行窗口,输入“cd /d D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\bin\Hostx86\x64”,然后输入“dumpbin.exe /?”查看该命令的使用帮助。

输入“dumpbin.exe /exports D:\my_project\VCXXTutorials\PyCallDLL\MathLibrary\x64\Debug\MathLi
brary.dll”命令即可查看自定义的Dll中的函数:

D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532\bin\Hostx86\x64>dumpbin.exe /exports D:\my_project\VCXXTutorials\PyCallDLL\MathLibrary\x64\Debug\MathLi
brary.dll
Microsoft (R) COFF/PE Dumper Version 14.36.32537.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file D:\my_project\VCXXTutorials\PyCallDLL\MathLibrary\x64\Debug\MathLibrary.dll

File Type: DLL

  Section contains the following exports for MathLibrary.dll

    00000000 characteristics
    FFFFFFFF time date stamp
        0.00 version
           1 ordinal base
           4 number of functions
           4 number of names

    ordinal hint RVA      name

          1    0 0001100A fibonacci_current = @ILT+5(fibonacci_current)
          2    1 000112DF fibonacci_index = @ILT+730(fibonacci_index)
          3    2 00011244 fibonacci_init = @ILT+575(fibonacci_init)
          4    3 0001129E fibonacci_next = @ILT+665(fibonacci_next)

  Summary

        1000 .00cfg
        1000 .data
        1000 .idata
        1000 .msvcjmc
        3000 .pdata
        3000 .rdata
        1000 .reloc
        1000 .rsrc
        8000 .text
       10000 .textbss

其中:

? ? ordinal hint RVA ? ? ?name

? ? ? ? ? 1 ? ?0 0001100A fibonacci_current = @ILT+5(fibonacci_current)
? ? ? ? ? 2 ? ?1 000112DF fibonacci_index = @ILT+730(fibonacci_index)
? ? ? ? ? 3 ? ?2 00011244 fibonacci_init = @ILT+575(fibonacci_init)
? ? ? ? ? 4 ? ?3 0001129E fibonacci_next = @ILT+665(fibonacci_next)

就是该dll中可以导出的函数列表。

通过“dumpbin.exe /EXPORTS C:\Windows\System32\msvcrt.dll” 查看系统dll的函数:

通过“dumpbin.exe /EXPORTS C:\Windows\System32\msvcrt.dll > D:/msvcrt.dll.exports.txt” 把结果输出到文本文件。

文章来源:https://blog.csdn.net/u011775793/article/details/135711528
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。