SuperAPI AI 工具集

ilspy-decompile

编程与开发

查看项目

更新于 10-15 08:12

技能介绍

用途

ilspy-decompile 用于通过反编译已编译的 .NET 程序集来理解 .NET 代码的内部实现。当你想要查看某个 .NET API 内部如何工作、检查 NuGet 包中的实现细节时,可以使用该技能。

前置条件

需要安装 .NET SDK。ILSpy 命令行工具可通过以下任一方式获得:

  • dnx ilspycmd(如果你的 SDK 或运行时中可用)
  • dotnet tool install --global ilspycmd

两种形式在下方均有展示,请使用在你的环境中可用的那一种。

注意:ILSpyCmd 的选项可能因版本而略有差异。请始终使用 ilspycmd -h 验证支持的标志。

快速开始

反编译程序集到标准输出:

ilspycmd MyLibrary.dll

或:

dnx ilspycmd MyLibrary.dll

反编译到输出文件夹:

ilspycmd -o output-folder MyLibrary.dll

常见 .NET 程序集位置

NuGet 包:

~/.nuget/packages/<package-name>/<version>/lib/<tfm>/

.NET 运行时库:

dotnet --list-runtimes

.NET SDK 引用程序集:

dotnet --list-sdks

引用程序集不包含实现。

项目构建输出:

./bin/Debug/net8.0/<AssemblyName>.dll
./bin/Release/net8.0/publish/<AssemblyName>.dll

核心工作流

  1. 确定你想理解的内容
  2. 定位程序集
  3. 列出类型
  4. 反编译目标

命令

基本反编译:

ilspycmd MyLibrary.dll
ilspycmd -o ./decompiled MyLibrary.dll
ilspycmd -p -o ./project MyLibrary.dll

定向反编译:

ilspycmd -t Namespace.ClassName MyLibrary.dll
ilspycmd -lv CSharp12_0 MyLibrary.dll

查看 IL 代码:

ilspycmd -il MyLibrary.dll

关于现代 .NET 构建的说明

  • ReadyToRun 映像可能降低可读性
  • 裁剪或 AOT 构建可能省略代码
  • 优先使用非裁剪构建

法律说明

反编译程序集可能受到许可证限制。