在软件开发过程中,反编译工具对于理解现有代码库、调试未知代码或学习编程语言等场景都非常有用。本文将对几款完全免费的.NET反编译工具进行评测,这些工具不仅可以在非商业环境中免费使用,也可以在商业环境中免费使用。
以下是注意到的一些免费的.NET反编译工具:
为了测试这些反编译工具,创建了一个小型的C# 11/.NET 7项目,包含2个程序集。以下是原始代码的示例:
namespace AlphaAssembly {
internal class Program {
static void Main(string[] args) {
Console.WriteLine(Resource1.HW);
A a2 = new A2();
a2.PrintMessage();
A a3 = new A3();
a3.PrintMessage();
B b2 = new B2();
b2.PrintMessage();
B b3 = new B3();
b3.PrintMessage();
}
}
public class A {
public virtual void PrintMessage() {
Console.WriteLine(Resource1.HWA);
}
}
public class A2 : A {
public override void PrintMessage() {
Console.WriteLine(Resource1.HWA2);
}
}
public class A3 : A {
public override void PrintMessage() {
Console.WriteLine(Resource1.HWA3);
}
}
}
namespace BetaAssembly {
public class B {
public virtual void PrintMessage() {
Console.WriteLine("Hello World from B");
}
}
public class B2 : B {
public override void PrintMessage() {
Console.WriteLine("Hello World from B2");
}
}
public class B3 : B {
public override void PrintMessage() {
Console.WriteLine("Hello World from B3");
}
}
}
Ildasm.exe是微软提供的一个IL反编译器,它随Visual Studio一起自动安装。虽然它的许可证不是完全免费的,但大多数.NET开发者都会拥有它,因为它是Visual Studio的一部分。
Telerik JustDecompile是一个免费的反编译工具,但似乎已经不再维护。它不能很好地处理.NET7,但仍然可以提供基本的C#代码反编译。
dnSpyEx是dnSpy项目的非官方延续(分支),它是一个开源工具,可以在Windows平台上运行。它提供了IL代码查看和C#代码反编译的功能,并且支持调试功能,这对于逆向工程非常有用。
ILSpy是一个开源工具,支持Linux、Mac和Windows平台。它允许用户选择特定的C#版本进行反编译,这对于分析和比较不同版本的C#语言非常有用。
JetBrains dotPeek是一个免费的工具,提供了丰富的功能和良好的图形界面。它支持将程序集反编译为C#项目,并且提供了PE格式头信息查看器和依赖图等功能。
根据评测,JetBrains dotPeek以其稳定性、功能丰富、良好的图形界面和良好的维护成为了个人最爱。如果正在寻找一个稳定、功能丰富、界面友好且维护良好的应用程序,dotPeek是选择。
ILSpy也是一个给人留下深刻印象的工具,它允许反编译到选定版本的C#,这在分析和比较不同版本的C#语言时非常有用。
如果想要调试一个没有源代码的.NET应用程序,dnSpyEx是唯一提供此功能的反编译器。