前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.net程序源代码如何避免被反编译

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

作者头像
程序你好
发布2018-07-20 11:12:46
1.9K0
发布2018-07-20 11:12:46
举报
文章被收录于专栏:程序你好程序你好程序你好

许多开发人员仍然不知道可移植的可执行文件(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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序你好 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档