MSIL
将 .NET 的程序编译后,生成的代码实际上与 VC++ 之类的目标程序是不一样的,.NET 编译后生成 MSIL(Microsoft Intermediate Language),属于中间语言,就像 Java 一样,之所以这样设计,大概是为了跨平台的考虑(当然还有其它一些原因)。
反汇编
.NET Framework SDK 提供的名为 ILDASM 的反汇编实用工具,允许您将 .NET Framework 程序集反编译为 IL 程序集语言语句。为了启动 ILDASM,您必须确保已安装了 .NET Framework SDK。
反编译
MSIL 是可以被反编译的,也就是说可以把它变成源代码。当然这种源代码与编译之前的源代码还是不完全一样的,但是你仍然可以阅读它,更改它。类似的工具有:Anakrino 和 Reflector for .NET。
对抗反编译
最常用的对抗反编译的方法是模糊处理,即使用混淆器,使反编译之后的程序人很难理解,比如变量名尽是:a1、a2、a3……人看到头都大,要看懂程序,得花点功夫。很著名的混淆器有:Dotfuscator。
还有一种是使用本地编译。它使编译输出与正常的 .NET 编译输出不同,有不同的工具,在运行时可能也需要这些工具辅助才能运行。