Dotfuscator是一款.NET混淆器和压缩器,防止你的应用程序被反编译。html
使用.NET编写的程序较容易被反编译,也就是逆向工程。.NET应用程序编译为一种高级、富有表现力的文件语法,称为MSIL(Microsoft Intermediate Language),包含方法和变量名称,能够轻松地反编译回源代码形式。算法
不管是否合法,攻击者均可以使用免费的反编译器轻松查看任何.NET应用程序的源代码,他们能够公开软件许可代码,复制保护机制和我的/团队私有的业务逻辑。任何人均可以阅读软件应用程序的全部信息,经过利用漏洞,窃取想法,破解应用程序甚至可能更严重。安全
混淆是一种能够在程序集中提供符号的无缝重命名,以及其余技巧来阻止反编译器的技术。正确应用混淆可使应用程序的安全程度呈数量级的提升,同时保持应用程序的完整性。ide
当混淆器工具开始使用可读程序指令时,有一个反作用是输出会混淆人工解释器并破坏人工解释器正在使用的反编译器。在保留可执行逻辑的同时,反向语义呈现为非肯定性的。因此,尝试对指令进行反向工程会失败,由于转换不明确。 深度混淆会产生无数的反编译可能性,若是从新编译,其中一些还会产生不正确的逻辑。反编译器做为计算机器没法知道哪些可能性能够用有效的语义从新编译。人们编写并使用反编译器来自动化反编译算法,这些算法对于计算机器来讲是十分具挑战性的。工具
除了混淆以外,Dotfuscator还能够提供额外的保护层。这些保护包括检测,能够主动检测可能的攻击(例如篡改,调试或在root设备上运行),并可使用预约义的行为或自定义逻辑进行响应。全部的这些保护措施使应用程序极难进行逆向工程或修改。ui
有一点很重要的是要理解Dotfuscator是一个“后编译”工具 - 它保护你已编译的.NET程序集(.dll和.exe文件)。开发环境和工具不须要作任何改变,源代码也不会以任何方式被改变甚至读取。受保护的程序集在功能上等同于传统程序集(除非有意更改),而且将在公共语言运行时(CLR)上执行。(即便能够对强混淆的程序集进行反编译,与原始源代码相比,它也会产生明显的语义差别。)调试
下图显示了使用和不使用Dotfuscator的典型构建过程的流程:cdn
如图所示,你的应用程序将正常编译,而后Dotfuscator将保护这些程序集。Dotfuscator将把程序集做为输入,根据你的配置设置执行保护,并生成这些程序集的受保护版本做为输出。htm