.net程序源代码如何避免被反编译
许多开发人员仍然不知道可移植的可执行文件(PE)文件是可以被编译成可读的源代码。在学习如何防止或使反编译器难以对源代码进行反向编译之前,我们需要了解一些基本概念。
什么是可移植的可执行文件?
当源代码被执行时,它会生成一个可移植的可执行文件。可移植的可执行文件(PE)不是DLL就是EXE。PE文件包含MSIL (Microsoft中间语言)和元数据。MSIL最终由CLR转换为处理器能够理解的本机代码。元数据包含装配信息,如程序集名称、版本、文化和公钥。
如何从DLL或EXE获取源代码?
是的,我们可以从DLL或EXE获取源代码。为了演示这一点,让我们先创建一个简单的应用程序。
打开Visual Studio,创建一个新的项目并选择基于控制台的应用程序。
添加一些简单的代码:
现在编译这个工程,会在bin/debug目录下生成一个exe文件
现在我们试着从EXE文件获取源代码。
首先,打开Visual Studio命令提示符窗口:
键入ildasm
然后点击回车键。 IL DASM is MSIL 是个反编译程序,可以用来查看中间语言。
会打开IL DASM 窗口,现在我们打开刚刚编译生成的Exe文件:
如上图所示,IL DASM会犯编译EXE文件,很多有用的信息可以被查看,尽管它并没有完全提供原始的源代码。我们可以使用市场上免费的反编译器,比如Telerik JustDecompile和Jet brain dotPeek,通过这些工具我们可以将中间语言转换成原始的源代码。
如我们在上面的截图中看到的,当我们打开EXE和Telerik JustDecompile,我们能够看到原始的源代码,这可能致使软件被盗版,最终会对你造成损失。
如何防止EXE和DLL被反编译?
保护EXE和DLL不被反编译到原始源代码的方法称为混淆。有很多付费和免费的软件可以提供混淆代码的功能,让.Net程序集代码变得模糊,不易理解。Dotfucator是一个流行的混淆工具,这工具的社区版是免费的,并且包含在Visual Studio中。如果您有兴趣购买其他版本,请查看此比较。Dofuscator社区版的功能有限,专业版非常昂贵。因此,一般我们不会通过使用他们而获得利润,相反,我们会在混淆问题上花很多钱。
混淆的最好的替代工具之一是ConfuserEx——它是一个完全免费的开源软件。你可以去网上下载。
下载后,将zip解压到一个文件夹中,然后运行ConfuserEx.exe。
将您想要保护的EXE拖放到ConfuserEx中,或者您可以手动选择基础目录、输出目录并添加DDL或EXE。
一旦您完成了设置目录并添加DLL或EXE,请到ConfuserEx的Settings选项卡。您可以向Gobal设置添加规则,也可以为每个DLL或EXE设置单独的规则。
点击“+”按钮,你会看到规则下的“True”。现在点编辑规则(下面的按钮“-”)。
单击编辑规则,将出现一个新窗口,如下所示。点击“+”按钮。
您可以选择不同的方法来增加保护级别。
只选择“Anti - IL Dasm”和“Anti - Tamper”,这足以使它足够强大,阻止反编译。
点击Done后,点击“Protect ”Tab页,然后点击“保护”按钮。
您可以在选择的输出目录中找到受保护的DLL或EXE。
测试运行一下ConfusedEx生成的EXE或DLL,并检查它是否工作正常。现在尝试用反编工具反编译。
正如我们所看到的,由ConfuserEx生成的混乱的DLL或EXE不能再被反编译。
原文地址:
https://www.codeproject.com/Articles/1245244/Protect-your-Source-Code-from-Decompiling-or-Rev