模糊处理使用 Dotfuscator 创建的应用程序(视觉工作室 2022 版本)
概述
由于基于 .NET 系列框架的应用程序以称为通用中间语言的形式创建,因此可以使用拆解工具等以接近原始源代码的方式读取应用程序。 本节介绍 Visual Studio 附带的模糊处理工具 Dotfuscator 的免费版本如何将混淆转换为不容易读取的格式,如类和方法名称。
正如我们使用视觉工作室 2022 中讨论的,它也可以与其他版本的 Dotfuscator 一起使用。
操作环境
- Visual Studio
-
- Visual Studio 2022
关于 Dotfuscator 的更多信息
Dotfuscator 是一种模糊处理工具,用于在拆解在 .NET 系列框架(以下简称 .NET)中创建的应用程序时使源代码难以读取。 Dotfuscator 包括 Visual 工作室附带的免费和付费零售版本。
免费版本在许多功能有限或 Visual Studio 未启动之前不可用,但只要安装了 Visual 工作室,任何人都可以使用它。 虽然有很多强大的模糊处理功能,这是在付费版本中不存在的,但它以普通人很难触及的价格提供。
Dotfuscator 的功能、价格和版本因版本而异,因此请访问以下主页了解更多信息。
关于拆解
前面提到,在 .NET 中创建的应用程序很容易被拆解和读取原始源代码,但实际情况是,当您拆解 .exe 文件(或 .dll 文件)时,原始源代码(如命名空间、类名称和方法名称)几乎可以重现,如下图所示。
要模糊的程序类型
它主要面向分发和运行给未指定用户的程序。 例如,桌面应用程序。 相反,模糊处理对于难以直接访问程序文件的 Web 应用程序来说并不那么重要。
这一次,我在 WPF 项目中查看了桌面应用程序。
安装多普穆斯卡托
此应用程序是 Visual Studio 2022 附带的,但不包括在标准安装中(可能从一开始就安装在以前的 Visual Studio 中)。
要添加多普斯卡托,请执行以下操作: 启动视觉工作室,然后从“工具”中选择“获取工具和功能”。
从上面的选项卡中选择“单个组件”,选中“代码工具”组中的“预Emptive保护 - Dotfuscator”,然后单击右下角的安装按钮。 此时,请关闭虚拟工作室控制台一次。
模糊处理程序
提供有关如何使这些名称难以理解和模糊处理的过程。
在 Visual Studio 中创建应用程序,然后生成 .exe 文件。 创建 dll 文件。 到目前为止,它与创建常规应用程序相同。 您创建的应用将针对您在发布生成中创建的应用。 (因为它通常不会在调试中公开)
创建 .exe 和 .dll 后,从“视觉工作室”菜单中选择“工具”,然后选择“预保护 - 多普鲁斯卡托社区”。
将显示注册屏幕,但如果不需要,请单击“取消”按钮,因为它不是必需的。
单击“确定”按钮。
将启动“修补程序”。 此应用程序单独运行,因此您可以模糊处理与当前打开的项目无关的文件。 (如果应用程序本身是免费版本,则假定 Visual 工作室已启动。 )
作为示例,我将模糊处理 .NET 6.0 WPF 应用程序的项目,这些项目是默认生成的。
从左侧列表中选择“输入”,然后单击“+”按钮。
选择要模糊处理的程序文件。 到目前为止,在 .NET 框架中创建的应用程序通常混淆 .exe,但在 .NET 和 .NET Core 中,程序的实体通常为 .dll。 NET WPF 应用程序也.dll,因此请选择 .dll。
添加到列表中。 如果有多个 DLL,请添加多个 DLL。
添加文件后,单击工具栏中的“生成”按钮。
指定模糊处理项目文件的存储位置。 位置可以是任意的,但它也是模糊程序的输出位置。 它保存您的输入,如果您希望再次模糊处理,您将打开此模糊处理项目文件。 扩展名为“。 xml“。
生成已启动,并在下面的消息中显示“生成已完成。”表示成功完成。 屏幕显示生成日志和模糊类和变量的列表。
从左侧的列表中选择“结果”,了解有关类和方法名称如何更改的详细信息。
在右侧树的类或方法名称中,如“->”,则名称是模糊处理的名称。 通过将类或方法名称更改为无意义的名称,可以使源代码的内容难以阅读,即使它们被拆解。
模糊处理的程序在保存项目文件的位置创建名为“受难处理”的文件夹,并存储在其中。
由于 Map.xml 是模糊处理的结果文件,因此可以安全地将其删除。
由于 .NET 6.0 WPF 不能单独启动 DLL,因此请尝试将生成输出期间生成的“XXXX.exe”和“XXXX.运行时配置.json”复制到同一文件夹中并启动它。 如果可以成功启动,则没有问题。 如果无法启动,则可能是文件不足或混淆导致程序不一致。
我认为,当你分析实际模糊的程序时,你会发现一些模糊的痕迹。 下图的第一张是模糊处理前,第二张是模糊处理后。
请注意,.NET 库中定义的类名称等作为框架存在,因此不应重命名。
这一次,我模糊处理了创建的默认项目,所以有些图像几乎未混淆,但我认为模糊处理的效果会变得清晰,因为项目越大,您自己的类就越多。
此外,虽然我们这次在免费版本中提供了步骤,但付费版本允许您执行更复杂的模糊处理,并防止拆解本身。 但是,由于混淆也可能发生各种负面影响,因此在进行模糊处理时,必须考虑从设计开始就正常工作。
排除模糊处理
如果不想混淆任何类或属性名称,则可以将其排除。
加载程序集时,从屏幕左侧选择“重命名”和“排除”。 显示程序集的内容,并选中不想混淆的内容。
虽然可以在更精细的级别排除模糊处理,但我认为按命名空间进行调整会更容易。
库模式
选择输入的程序集后,您将看到“库模式”处于选中状态。
“库模式”用于其他程序可能调用的 DLL 等。 选中后,其他程序调用的公共类和属性将从模糊处理中排除。
但是,由于通常很少从其他程序公开通用调用的库,并且经常混淆单独运行的应用程序,因此基本上可以取消选中此检查。
关于模糊处理单个文件化.exe(未确认)
有关此项的信息,请参阅 Visual 工作室 2022,目前尚未确认。
您可能会对 MSBuild 进行模糊处理,但由于信息较少,我们将其搁置。