模糊处理使用 Dotfuscator 创建的应用程序

更新页 :
页面创建日期 :

概述

基于 .NET Framework 编写的应用程序以称为通用中间语言的形式创建,因此可以使用拆解工具等以接近原始源代码的方式读取应用程序。 本节介绍 Visual Studio 附带的模糊处理工具 Dotfuscator 如何将模糊处理到不容易阅读的格式,如类和方法名称。

尽管我们使用 Visual Studio 2010 进行了介绍,但我们也可以使用 Dotfuscator 在 2005 年和 2008 年使用。

Dotfuscator を使用して作成したアプリケーションを難読化する

操作环境

对应 Visual Studio 版本

  • 2005
  • 2008
  • 2010

確認 Visual Studio 版本

  • 2005
  • 2008
  • 2010

内容

关于 Dotfuscator 的更多信息

Dotfuscator 是一种模糊处理工具,用于在拆解使用 .NET 框架创建的应用程序时使源代码难以读取。 Dotfuscator 包括 Visual 工作室附带的免费和付费零售版本。

免费版本必须假定许多功能有限或 Visual 工作室已启动,但只要安装了 Visual Studio,任何人都可以使用它。 虽然有很多强大的模糊处理功能,这是在付费版本中不存在的,但它以普通人很难触及的价格提供。

Dotfuscator 的功能、价格和版本因版本而异,因此请访问以下主页了解更多信息。

模糊处理程序

難読化していないアプリケーションの逆アセンブル結果

前面提到,在 .NET Framework 中创建的应用程序很容易被拆解和读取原始源代码,但实际情况是,当您拆解 exe 文件时,命名空间、类名称和方法名称等原始源代码几乎可以重现,如右图所示。

提供有关如何使这些名称难以理解和模糊处理的过程。

Dotfuscator Software Services

在 Visual Studio 中创建应用程序并创建 exe 文件的方式与创建应用程序的方式完全相同。

生成并创建 exe 文件后,从“视觉工作室”菜单中选择“工具”,然后选择“软件服务”。

使用許諾契約書

首次启动时,将显示“许可协议”对话框,如右图所示,因此请仔细阅读内容,选中“是,我接受许可协议”,然后单击“确定”按钮。

Dotfuscator Software Services

启动“Dotfuscator 软件服务”。

入力アセンブリの追加

模糊处理 exe(或 dll 文件)不必来自当前打开的项目。

从左侧树中选择“输入程序集”,然后单击右侧输入程序集中的“...”按钮。

難読化する exe ファイル

选择要模糊处理 exe 文件。

追加したアセンブリ

您选择的 exe 文件将添加到列表中。 如果要混淆多个文件,请单击第二行或后续行中的“...”按钮以添加它们。

プロジェクトのビルド

选择要模糊处理 exe 后,单击工具栏上的“生成项目”按钮。

プロジェクトの保存

如果项目发生更改,则会显示“保存项目确认”对话框,单击“是”以保存它。

プロジェクトの保存場所指定

项目是“。 xml“文件。 模糊处理 exe 文件也存储在同一位置,因此请将 .xml 文件保存到任何文件夹。

ビルド

生成将开始,因此请等待它完成。 请注意,程序构建时间越长,生成时间就越长。 现在,您已经构建了右图。

消息字段显示简单的结果,例如生成进度和可读性。

難読化結果

通过从左侧树中选择“结果”,可以了解有关类和方法名称如何更改的详细信息。

类和方法名称下有一个 Dotfuscator 图标和名称,如“a”和“b”,这是模糊的名称。 通过将类或方法名称更改为无意义的名称,可以使源代码的内容难以阅读,即使它们被拆解。

難読化したアセンブリ

模糊处理 exe 文件在保存项目时保存的 .xml 文件的文件夹中创建名为“Dotfuscated”的文件夹,并在其中创建。 除了 exe 文件之外,还创建了“Map.xml”文件,但这是模糊处理的结果文件,因此不会使用。

難読化したアセンブリの実行時エラー

模糊的 exe 可以按原样运行和使用。 但是,在某些情况下,它可能无法启动与未知错误,如右图所示。

这一次,我在 WPF 中创建了应用程序,但由于第一个窗口的 XAML 文件由字符串指定,因此由于模糊处理重命名,引用将消失,从而导致错误。

对于 Windows 窗体应用程序,它直接引用“发件人”类,因此,如果模糊处理,则可以运行它,而不会出错。 但是,请注意,如果按名称指定类名称、枚举等,则可能会出现类似的错误。

難読化の除外

如果不想混淆任何类,请从 Dotfuscator 左侧的树中选择“重命名”,然后从中间选项卡中选择“排除”。

每个命名空间、类名称等都显示在右侧的列表中,因此请检查不想混淆的项目。

在这里,我们选中“主窗口”,因为我不想更改要首先显示的窗口的类名称。

難読化から除外されたクラス

生成时,可以验证主 Windows 类名称下没有更改的名称。 (应用类已转换为“a”)

難読化したアセンブリの実行

运行模糊处理后 exe 文件时,可以验证窗口是否正确显示。

難読化後の逆アセンブル

通过拆解模糊的 exe 文件,您可以看到类和方法名称已正确更改为“a”或“b”。

顺便说一下,. 请注意,重命名不会涉及重命名,因为 Windows 等已安装程序集,例如 NET 框架库中定义的类名称。

这一次,我模糊处理了创建的默认项目,所以有些图像没有那么模糊,但我认为模糊处理的效果会变得清晰,因为项目越大,类的数量就越多。

此外,虽然我们这次在免费版本中提供了步骤,但付费版本允许您执行更复杂的模糊处理,并防止拆解本身。 但是,由于混淆也可能发生各种负面影响,因此在进行模糊处理时,必须考虑从设计开始就正常工作。