我今天检查了 4-5 混淆器。混淆器的主要目的不应该是隐藏您的许可证代码,而是保护您的软件/算法不被程序员仅仅通过查看代码轻松编写。因为如果任何软件(如 Windows、SQL Server、Adobe 等)很容易被黑客入侵,那么您就没有机会隐藏您的许可证代码。就我而言,我用 C# 开发了一些软件,如果有人可以在按钮单击事件中访问其代码,则可以轻松复制这些软件。因此,我测试了一些实现“代码流混淆”的混淆器,这使得理解代码的执行流程/算法变得非常困难。事实上,当我在我的软件上进行“代码流混淆”时,我无法理解我的代码本身,更不用说别人能理解的了。
想象一下,您花了几周时间开发一种算法,该算法可以完成某项任务,例如:您可以从所有网站获取机票并在软件中显示。如果有人可以看到它的代码,他/她可以在一天内简单地创建相同的软件。所以,最好把算法弄得乱七八糟,让任何人都很难理解。
我试过:Dotfuscator、Eziriz .NET Reactor 和 Crypto Obfuscator 和 rustemsoft Skater .NET Obfuscator。(还有一些其他人)
以下是我的结果:
- 所有混淆器的所有字符串/变量/函数加密都可以很容易地被 de4dot 去混淆器去混淆。因此,加密字符串/变量/函数是没有意义的。
- 我对所有 3 个都使用了最高级别的“代码流混淆”。我无法使用 rustemsoft Skater .NET,因为它的软件挂了很多,用户界面让我感到困惑。并且免费/评估版没有启用“代码流混淆”进行评估。因此,Dotfuscator 对代码进行了最好的整理。然后 .NET Reactor 和 Crypto Obfuscator 处于同一水平,但它们的混淆程度远不如 Dotfuscator。
- 您可以尝试使用应防止使用 de4dot 直接反混淆的虚拟化软件对软件进行虚拟化,但同样可以使用任何好的解包器轻松解压缩 exe,然后可以使用 de4dot 对提取的程序集进行反混淆。使用虚拟化软件将主要的exe、dll和其他资源打包在一个大exe中,这样您就不必创建安装文件等,直接在任何计算机上运行exe。因此,在这种情况下,您可以在单个加密的 exe 中加密 .NET 程序集。但是,就像我说的那样,它可以很容易地打开包装。YouTube上有很多关于这个主题的视频。它不做“控制流混淆”,这是我的主要目的。
所以,最后我做的是:
使用 Dotfuscator 混淆控制流,然后再次“控制流”使用 .NET Reactor 或 Crypto Obfuscator 混淆混淆后的 exe。在此之后,如果我对 exe 进行去混淆处理,任何中级程序员都无法理解代码。