每一个应用程序的运行都少不了支持它的 DLL;同样,每一个 .NET 程序集的运行也都少不了其他依赖的 .NET 程序集。

要想查看一个非 .NET 程序的依赖,我们有 Dependency Walker。而要想查看 .NET 程序集的依赖,我们就需要使用 .NET SDK 中的 ildasm.exe,或者其他第三方工具如 CheckAsmILSpydnSpy。另外,我们还可以利用 Process Explorer 来查看一个进程运行时已加载的 .NET 程序集。

使用 Dependency Walker 无法查看 .NET 程序集的依赖

首先,我们可以看到使用 Dependency Walker 是无法查看 .NET 程序集的依赖的,而只会显示 .NET 程序集对 .NET 运行时(mscoree.dll)的依赖:

使用 Dependency Walker 查看 .NET 程序集的依赖

Dependency Walker 官方网站: http://www.dependencywalker.com/
官网下载 2.2.6000 x86 版本官网下载 2.2.6000 x64 版本

使用 ildasm.exe 查看 .NET 程序集的依赖

ildasm.exe 是一个随 Visual Studio 一起安装的用于 .NET 程序集反编译的 GUI 小工具,位于类似如下目录:

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\ildasm.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\x64\ildasm.exe

也可以通过 VS 的开发者命令行,键入 ildasm 命令来启动。

IL Disassembler

启动 ildasm.exe 并打开一个程序集后,显示的是该程序集下所有的名字空间、类型、方法等的一个树形列表,要想查看其依赖,我们需要双击 MANIFEST,并查找那些以 .assembly extern 开头的名字,这些名字就是当前查看的程序集的依赖的名字。

IL Disassembler MANIFEST

值得注意的是,使用 ildasm.exe 只能查看当前程序集的依赖,而无法直接查看依赖的依赖。

使用 CheckAsm 查看 .NET 程序集的依赖

CheckAsm 是专门用于查看 .NET 程序集依赖的小工具。支持递归查询依赖。

CheckAsm

1.27.5537.21011 版下载地址:Softpedia

使用 ILSpy 查看 .NET 程序集的依赖

ILSpy 是一款开源的 .NET 程序集查看及反编译器。支持递归查询依赖。

ILSpy

ILSpy 官方网站: http://ilspy.net/
从 GitHub 下载 2.4 版本

使用 dnSpy 查看 .NET 程序集的依赖

dnSpy 是用于 .NET 程序集编辑、反编译及调试的工具。同样也可以用于查看 .NET 程序集的依赖,支持递归查询依赖。

dnSpy

dnSpy 官方网站: https://github.com/0xd4d/dnSpy
下载地址

使用 Process Explorer 查看进程运行时加载的 .NET 程序集

Process Explorer 是一款类似任务管理器的工具,但是可以查看更多关于进程运行的信息,进程当前所加载的 .NET 程序集也可以查看。

Process Explorer - Process Properties

Process Explorer 官方网站: https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx
下载地址