Dotfuscator是一个.NET的Obfuscator。它提供企业级的应用程序保护,大大降低了盗版、知识产权盗窃和篡改的风险。Dotfuscator的分层混淆、加密、水印、自动失效、防调试、防篡改、报警和防御技术,为世界各地成千上万的应用程序提供保护。
Dotfuscator提供了一种应用程序保护的多层方法。这些层中的每一层都提供了一个重要的整体保护策略。如果一层受到损害,其他层继续提供有效保护,使攻击者更难以实现其目标。并且不仅有多个层,而且每个层都具有比其他混淆产品使用的简单技术更强大的高级功能。
从本文开始我们一起了解Dotfuscator如何对应用程序进行多层保护,层层递进,大致可分为:
- 第一层保护——Obfuscation转换:它对编译的代码进行操作,使逆向工程变得困难或不可能。
- 第二层保护——保护程序运行时发生的检查:当程序检测到攻击者试图篡改或反向工程时,它可以使用自定义逻辑进行自我防御。
- 其余加强保护——包括切除和水印。
- Dotfuscator提供某些功能帮您构建、部署和调试混淆的程序集。
第一层保护:Obfuscation转换——控制流
Dotfuscator的工作原理是修改反编译器用来重新创建源代码的代码模式。Dotfuscator引入了错误的条件语句和其他具有误导性的构造,以混淆和破坏反编译器。这个过程综合了分支、条件和迭代构造,这些构造产生有效的正向(可执行)逻辑,但是在尝试反编译时产生不确定的语义结果。
除了添加代码构造之外,Dotfuscator还破坏反编译器用于重新创建源代码的代码模式。最终得到的代码在语义上与原始代码等价,但不包含关于代码最初是如何编写的线索。该特性的目标是防止MSIL自动反编译回高级源代码。最终用户仍然可以查看MSIL本身,但要完全理解它并对其功能进行较大的更改就比较困难了。
例如:
之前 | 之后 |
▲限制
在控制流混淆之后测试应用程序性能是很重要的,特别是任何执行了很多次的代码(例如游戏循环或计算/算法密集型方法)。
控制流混淆只有在方法包含足够多的基本块时才能有效地击败反编译器。
▲排除
控制流排除与重命名排除以相同的方式工作,包括特定的排除和自定义规则。然而,控制流除外仅适用于方法。如果用户在测试过程中发现性能下降,那么应该将排除应用到执行计算密集型工作的任何方法或类(基本上是CPU是性能限制因素的任何情况)。
▲选项
High是唯一设计用来击败自动反编译器的关卡。如果高导致性能下降而不能通过排除来解决,则可以使用中值或低值,如果控制流被认为是导致运行时错误的原因,则可以使用中值或低值进行调试。
如果你有任何问题或意见,可在下方评论区留言,点击资源列表查看更多教程资源~