如何反汇编单个文件 .NET exe,或从中提取 .dll?

phi*_*sal 1 .net c# decompiling disassembly visual-studio

我有一些使用单文件选项构建的 .NET exes(https://learn.microsoft.com/en-us/dotnet/core/deploying/single-file),我需要对它们使用反汇编程序,但是任何反汇编工具(例如 dnspy、ilspy、ildasm 等)都无法工作,因为它们实际上是嵌入了 .NET 程序集的本机二进制文件,如 Microsoft 文档中所述。

例如,在这些二进制输出上尝试 ildasmerror: 'example.exe' has no valid CLR header and cannot be disassembled

如何从这些单文件 exe 中提取 .NET dll 以便反汇编它们?或者还有其他方法来反汇编这些 .NET 单文件 exe 吗?

Dan*_*iel 8

ILSpy 7.0 支持 .NET 5 单文件包。

ILSpy 7.1 添加了对 .NET 6 捆绑包的支持(添加了压缩支持)。

ILSpy 7.2 还允许保存嵌入的 .dll(上下文菜单中的“提取包条目”)。

如果您正在寻找命令行工具,请参阅https://www.nuget.org/packages/sfextract/