DLL(动态链接库)是一种可执行文件格式,它包含了一些可以被多个程序共享的代码和数据。当一个程序需要使用某个DLL中的函数或类时,操作系统会将该DLL加载到内存中,并在程序运行时将其链接到程序的地址空间中。这样,程序就可以通过调用DLL中的函数或访问其数据来实现特定的功能。
在以下情况下,需要查看DLL(动态链接库)中的函数:
Dependency Walker (depends.exe) Home Page
http://www.dependencywalker.com/depends22_x64.zip
下载完成,进行解压,通过“depends.exe”打开软件:
该软件只支持到Windows 8,不支持Windows 10。在 Win10 下使用 Dependency Walker 分析任何 DLL 都会进入未响应的状态。
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”的截图:
Microsoft COFF 二进制文件转储程序 (DUMPBIN.EXE) 显示有关通用对象文件格式 (COFF) 二进制文件的信息。 你可以使用 DUMPBIN 检查 COFF 对象文件、COFF 对象的标准库、可执行文件和动态链接库 (DLL)。
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” 把结果输出到文本文件。