Eazfuscator.NET
什么是Eazfuscator.NET?
Eazfuscator.NET是.NET平台的混淆器。
当然,您喜欢您的代码。我们都知道!很可能您想保护您宝贵的知识产权。Eazfuscator.NET有助于保护.NET代码和您的宝贵资产。
它为什么好?
Eazfuscator.NET很简单,如1-2-3所示:
混淆是怎样实现的?
1.保护您的项目:
2.生成项目的发布配置:
3.享受您的安全:
现在,每次在版本配置中构建项目时,它都会变得模糊。很快地,您甚至不必再想它了。不仅如此。您的代码还会变得更快。
特点
有几种方法可以保护.NET代码并使其模糊,以防止逆向工程。
符号重命名
当我们开发一个程序时,我们经常以符号名的形式呈现最有价值的信息:函数名、变量名、类名。对于想要了解我们的软件的入侵者来说,这些信息是非常宝贵的。
隐藏此信息的最简单和最有效的方法是使名称与程序内部发生的事情无关。如果可能的话,我们将使所有符号的名称都不可读。
字符串加密和压缩
另一个揭示程序如何运行的信息是字符串。为了隐藏这些信息,Eazfuscator.NET用特殊加密函数的调用替换代码中的字符串,这些函数在运行时完美地呈现字符串,使入侵者无法读取它们。此外,这些函数通过压缩字符串来减小字符串的大小。
代码和数据虚拟化
有些情况下,我们更想保护程序的一部分。我们想到会有人假装以良好的动机检查我们的代码,还会有人不惜采取任何措施去查看代码。在这种情况下,符号和字符串的保护是不够的。
在这里,我们提供了一种激进的方法:改变程序在内存和磁盘上的显示方式。我们的代码虚拟化技术将.NET字节码转换为完全无法识别的随机生成的字节序列,该序列在运行时仍能正常工作。换句话说,每次您混淆您的程序,我们就会生成一个新的自定义虚拟机为您工作!
什么是代码虚拟化?
我们中的许多人认为特定的代码片段特别重要。可能是许可证代码检查算法的实现,创新的优化方法,或者其他同等重要的东西,所以我们希望尽可能地保护它。
我们知道,传统的模糊处理技术基本上是对符号和字符串进行重命名保护,从而使实际的算法 ——循环、条件分支和算术,几乎完全暴露在入侵者的眼前。在这里,一种激进的方法可能是有用的:从程序集中删除所有.NET字节码指令,并用完全不同的,外部观察者不知道的,但在功能上与运行时的原始算法相同的东西来替换它 ,这就是代码虚拟化的实际情况。
如何使用它?
要启用代码虚拟化,应将自定义属性应用于要虚拟化的方法。就像这样:
自动代码优化
我们中的许多人都梦想能够了解我们所使用的平台和编程语言的每一个性能敏感方面。这样,我们总是会小心地只写最快的代码。尽管如此,我们中并没有很多人真正意识到所有与性能相关的细节,这些细节往往随着平台的发展而改变。
使用Eazfuscator.NET,您不需要成为.NET性能专家就可以制作出性能最好的应用程序。我们会自动为您执行代码优化,方法是将被证明速度较慢的代码片段替换为速度更快的等效代码片段。在某些情况下,优化可能会使代码速度提高数百倍。现在有一个大的列表,我们在优化过程中考虑了很多场景。这个名单会越来越多。
Eazfuscator.NET应用代码优化来为应用程序提供最佳性能。NET编译器,如C#、VB.NET、F#和JIT,在这方面已经做得相当不错了。NET通过高级优化进一步扩展了它。
高级优化是一种比较新的优化技术。Eazfuscator.NET是第一个将其交付给广大.NET用户群的工具。简要描述高级优化的最好方法是按照开发人员的想法开始思考:我们都知道有些方法和代码模式比其他方法和代码模式更快。
Eazfuscator.NET所做的是:它找到慢代码,并用一个更快的等价代码交换它。Eazfuscator.NET使用了一个精心构建的知识库,其中包含了许多.NET应用程序中常见而高效的代码模式。
乍一看,高级优化与著名的窥视孔优化方法非常相似。主要区别在于,经典的窥视孔优化只在目标机器指令的一个小窗口上工作,而高级优化则在应用程序范围内工作,考虑控制和数据流以及关于特定框架(如LINQ、MEF等)的神圣知识。
我们来看一个例子:
例1。慢代码
上面的代码使用Enum.HasFlag方法来检查是否设置了PrepareDatabase标志。虽然语法上令人愉快,但由于C#编译器发出的两个不可见的装箱操作,代码的性能差得惊人。
Eazfuscator.NET来拯救:
例2。快速密码。优化慢代码后由Eazfuscator.NET生成
如您所见,Eazfuscator.NET发出了功能上等效的代码。优化的结果是条件评估速度比原代码提高了500倍。
Eazfuscator.NET仔细地执行了一系列其他性能优化,有助于为您的客户提供最佳体验。
默认情况下,优化处于启用状态,并在模糊处理期间在后台工作。
资源加密和压缩
如果您的产品足够优秀,它包括许多有价值的资产。几乎所有流行的应用程序都包含一个由设计师创建的图标集。如果您是一个游戏开发商,最初的游戏声音会花费您很多钱。当程序集资源包含私钥等安全信息时,它将变得非常敏感。
为了涵盖所有这些受保护的内容,我们会在您要求时为您透明地加密资源。
代码控制流混淆
.NET语言编译器通常会为高级代码的类似片段生成类似的MSIL代码片段。这一事实允许反编译器工具从.NET程序集对高级代码(例如,在C#中)进行反向工程。
当MSIL代码被替换为功能等效但不同的指令时,Eazfuscator.NET支持一种称为控制流模糊处理的高级技术。反编译器经常在这样的代码上崩溃,因此这可能会阻止入侵者试图闯入您的程序集。
程序集合并和嵌入
在某些情况下,我们需要从多个程序集中创建一个程序集。有两种方法可以做到这一点:合并和嵌入。
Eazfuscator.NET以简单的方式为您合并或嵌入程序集:您需要向项目中添加一行代码,在其中指定要混合的程序集。我们负责在模糊处理过程中正确且安静地完成所有这些工作。
XML文档筛选器
XML文档筛选器是一种自动清理程序,可处理由各种.NET编译器(如C#、Visual Basic、F#等)生成的XML文档文件。
如果您正在开发类库,则很可能使用自动生成的XML文档文件。与它们相关的安全问题是,它们包含描述库实现详细信息的信息:私有类型、方法和字段的名称和描述。
我们注意从XML文档文件中自动删除所有公开数据的实现。
调试支持
在您的程序集被Eazfuscator.NET混淆后,它不会变成一块不可调试的砖。您总是可以获得出现未处理异常的行号,查看可读的堆栈跟踪,甚至可以附加调试器来遍历经过混淆的代码。
支持的平台和技术
XAML重命名
它是什么?
所有最新的.NET用户界面(UI)技术都基于XAML。WPF、UWP和Silverlight应用程序使用XAML定义UI的元素、事件、数据绑定和其他方面。
XAML重命名是在混淆期间同时重命名代码和XAML中相关符号的过程。
它是怎么工作的?
Eazfuscator.NET查找XAML和代码之间的所有连接:
然后,相关符号被重命名。在代码和XAML中同步一致:
因此,XAML重命名提供了更高的混淆覆盖率,并确保在XAML和代码中相应地正确地处理所有相关项。
最后不能不提的用户界面
NET提供了一个易于使用的GUI界面和经典的命令行界面。
客户评价
这是人们在体验了Eazfuscator.NET的失真字段之后所说的:
“就我个人而言,我认为这是一款最简单、最便宜、最值得信赖的应用程序,不仅如此,他们还会定期更新升级它”
——MadApples,通过Stack Overflow发布
“这就是Eazfuscator:昨天我问是否可以在Unity3d版本中使用代码虚拟化,今天我就是收到了一个新版本”
——sebify,通过Twitter发布
“我认为您们的产品是最好的混淆器之一。很好!当我第一次寻找混淆器时,我离开了您的网页,没有尝试您的产品。我错了。”
——Zsolt,来自电子邮件
“太棒了。祝贺并感谢您提供了这个非常有用的工具!请继续史诗般的工作!”
——通过Blogspot的Thiago