.net程序源代码如何避免被反编译

许多开发人员仍然不知道可移植的可执行文件(PE)文件是可以被编译成可读的源代码。在学习如何防止或使反编译器难以对源代码进行反向编译之前,我们需要了解一些基本概念。


什么是可移植的可执行文件?

当源代码被执行时,它会生成一个可移植的可执行文件。可移植的可执行文件(PE)不是DLL就是EXE。PE文件包含MSIL (Microsoft中间语言)和元数据。MSIL最终由CLR转换为处理器能够理解的本机代码。元数据包含装配信息,如程序集名称、版本、文化和公钥。

如何从DLL或EXE获取源代码?

是的,我们可以从DLL或EXE获取源代码。为了演示这一点,让我们先创建一个简单的应用程序。

打开Visual Studio,创建一个新的项目并选择基于控制台的应用程序。

添加一些简单的代码:

using System; 
namespace MyConsoleApp
{  internal class Program
  {    private static void Main(string[] args)
    {
      Console.WriteLine(PublicMethod());
      Console.WriteLine(PrivateMethod());
    } 
    public static string PublicMethod()
    {      // Your source code here
      return "Public Method";
    } 
    private static string PrivateMethod()
    {      // Your source code here
      return "Private Method";
    }
  }
}

现在编译这个工程,会在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



展开阅读全文

没有更多推荐了,返回首页