Skip to content

在 macOS 上反编译一个 .NET 用的 DLL 文件

标签
软件/macOS
操作系统/macOS
软件/开源/ILSPY
开发/dotnet
开发/CSharp
开发/CSharp/DLL
开发/dotnet/DLL
开发/逆向工程
开发/逆向工程/反编译
字数
570 字
阅读时间
3 分钟

感谢 c# - .NET decompiler for Mac or Linux - Stack Overflow 的回答者们给的很多有趣的方案。他们提及到了在 macOS 和 Linux 上可以用 icsharpcode/ILSpy 开源项目反编译 DLL 文件。

方案一:用 VSCode 插件 ilspy-vscode

VSCode 可以用 ilspy-vscode 作为 VSCode 拓展进行反编译。

为什么不用 Visual Studio for Mac? 因为即将在 2024 年 8 月 31 日停止支持 在这里可以阅读更多信息: https://learn.microsoft.com/en-us/visualstudio/mac/what-happened-to-vs-for-mac?view=vsmac-2022

先决条件

ilspy-vscode 需要 .NET 8 才能运行,你可以通过

shell
dotnet --version

来查看 .NET 的版本号,如果需要安装 .NET 8 的话可以这样:

shell
brew install dotnet@8

可能还会需要 VSCode 的 C# Dev Kit 拓展(有关如何在 VSCode 中开发 C#,可以阅读 Getting Started with C# in VS Code

安装完成之后可以通过 command + Shift + P 打开 VSCode 的命令面板然后输入

txt
Reload Window

来要求 VSCode 重新载入。

接下来,用 VSCode 打开包含有期望反编译的 .dll 文件的目录,在这个 .dll 文件上点击右键,然后点选「Decompile selected assembly」:

这个时候在侧边栏就能找到 ILSPY 的反编译结果和界面了:

方案二:用 AvaloniaILSpy

上面提到的例子,是使用 VSCode 作为界面 UI 去跑 ILSPY 完成反编译,而实际上 ILSPY 也是有自己的社区封装的 GUI 可以使用的,这在你不喜欢 VSCode 或者不想折腾 VSCode 插件的时候会很有用。

ILSpy
by icsharpcode
View

Releases · icsharpcode/AvaloniaILSpy 下载之后启动就行。

遇到了「“ILSpy” 已损坏,无法打开,您应该将它移到废纸篓」的提示?

应该根据 icsharpcode/AvaloniaILSpy: Avalonia-based .NET Decompiler (port of ILSpy) 的文档,对 ILSpy 解除 macOS 系统保护限制:

shell
xattr -rd com.apple.quarantine /Applications/ILSpy.app

然后就能看到这样的界面了:

其他相关的反编译插件:

Decompiler - Visual Studio Marketplace

贡献者

文件历史

撰写