我如何找出哪个DLL可执行文件将加载?
如果我有一个Windows可执行文件,我怎样才能找出哪个DLL将加载?
我只是在谈论哪些将被静态加载,而不是可能会加载dynamicLoadLibrary的东西。
有实用程序会为你做这个。
在过去,我已经使用了MS工具(depends.exe)(我认为)VB:
https://msdn.microsoft.com/en-us/library/8kche8ah.aspx
还有这个:
http://dependencywalker.com/
也可能是其他人。
dumpbin是一个VC ++自带的工具。
要查看程序将导入的DLL:
- 打开Visual Studio
- 菜单项工具| Visual Studio命令提示符
- 光盘到包含可执行文件
- dumpbin / dependents whatever.exe
Dump of file whatever.exe File Type: EXECUTABLE IMAGE Image has the following dependencies: AIOUSB.DLL sqlite3.dll wxmsw293u_core_vc_custom.dll wxbase293u_vc_custom.dll KERNEL32.dll ole32.dll OLEAUT32.dll MSVCP90.dll MSVCR90.dll
要查看它将导入的function(和DLL),请使用
C:\> dumpbin /imports whatever.exe
只需进入命令提示符并键入tasklist /m
,您将看到特定程序使用的dll文件列表。
打开命令提示符,然后键入下面的命令
tasklist / m / fi“imagename eq netbeans.exe”
inputnetbeans.exe而不pipe你的exe文件名是什么名字。
依赖Walker可以帮助您确定哪个.dll将被加载。
Microsoft .Net的解决scheme:
foreach (AssemblyName a in Assembly.ReflectionOnlyLoadFrom("SAMPLE.EXE").GetReferencedAssemblies()) { MessageBox.Show(a.Name); }
progfr简单而有用:[ http://members.fortunecity.com/michaelmoser/tip11.htm%5D
有一个方便的工具称为NDepend,将给你所有的DLL依赖。