DECOMPILE FOR .NET
概述
防卫并保护您的.NET代码
Dotfuscator不仅是一个.NET混淆器。它提供企业级应用程序保护,大大降低盗版风险、知识产权盗用和篡改。其分层混淆、加密、水印,自动到期、反调试、防篡改、警报和防御技术为全球几十万个应用程序提供保护。
反编译.NET应用程序的简单性
所有.NET应用程序和库都编译为Microsoft Intermediate Language(MSIL)。 MSIL维护您的代码的高级信息,包括其结构和类、字段、方法、属性和参数名称。使用免费的反编译器,很容易重新创建源代码。它的Obfuscation和相关技术可能使黑客或竞争对手不能轻易对您的应用程序进行逆向工程。
为什么要使用.NET Obfuscation?
通过使.NET应用程序更难以进行逆向工程,您可以帮助防范知识产权(商业秘密)窃取、绕过许可证或其他访问检查以及搜索漏洞。
Obfuscation和代码保护如何工作?
各种不同的技术相互补充,用于创建分层防御,使得逆向工程、篡改、调试更加困难。例子包括:
代码仅重命名混淆和字符串加密之前和之后
模糊处理前的.NET 代码
基线模糊处理后的.NET 代码
为什么要保护您的.NET代码免受调试?
不论黑客是否试图窃取您的数据,剽窃您的应用程序,或修改软件关键性部件的行为——生产调试程序是黑客的首选武器。不能让他们轻易得逞。
选择Dotfuscator的理由
已经看到全部
可靠及真实
支持及更新
功能
混淆并加强您的.NET应用程序以使其不受攻击
重命名
重命名模糊处理改变了方法、变量等的名称,使得源代码更难理解。Dotfuscator使用更深层次的模糊处理——Overload Induction™,它为Dotfuscator而开发, 并由PreEmptive Solutions获得专利。Overload Induction将尽可能多的方法重命名为同名,而不是为每个旧名称替换一个新名称。在这种更深层的混淆之后,逻辑虽然没被破坏,却是超出理解的。以下简单示例说明了Overload Induction技术的功能:
源代码模糊处理前 |
Overload Induction 模糊处理后的逆向工程源代码 |
private void CalcPayroll (SpecialList employeeGroup) { while(employeeGroup.HasMore()) { employee = employeeGroup.GetNext(true); employee.UpdateSalary(); DistributeCheck(employee); } } |
private void a(a b) { while (b.a()) { a = b.a(true); a.a(); a(a); } } |
控制流
传统的控制流模糊处理引入了假条件语句和其他误导性构造,以便混淆和中断反编译器。该过程合成了产生有效的转发(可执行)逻辑的分支、条件和迭代结构,但在尝试反编译时产生非确定性语义结果。控制流模糊处理产生错综复杂的逻辑,这对于解密高手来说是非常困难的。
Dotfuscator采用先进的控制流模糊处理。除了添加代码结构,Dotfuscator还可以通过销毁反编译器用来重新创建源代码的代码模式。最终结果是在语义上等同于原始代码的代码,但不包含代码最初写入的线索。即使开发出高度先进的反编译器,其输出也将是凭猜测所做。
源代码模糊处理前 |
控制流模糊处理后的逆向工程源代码 |
public int CompareTo(Object o) { int n = occurrences – ((WordOccurrence)o).occurrences; if (n == 0) { n = String.Compare(word,((WordOccurrence)o).word); } return(n); } |
public virtual int _a(Object A_0) { int local0; int local1; local 10 = this.a – (c) A_0.a; if (local0 != 0) goto i0; while (true) { return local1; } i1: local10 = System.String.Compare(this.b, (c) A_0.b); goto i0; } |
字符串加密
Dotfuscator允许您隐藏组件中存在的用户字符串。常见的攻击者技术是通过查找二进制内的字符串引用来定位关键代码段。例如,如果您的应用程序处于时间锁定状态,则可能会在超时到期时显示一条消息。攻击者在反汇编或反编译输出中搜索这个消息,他们将非常接近你敏感时间锁算法。
Dotfuscator通过允许您加密应用程序敏感部分中的字符串来解决此问题,为此类型的攻击提供了有效的屏障。
由于字符串加密会导致轻微的运行时惩罚,除非您指定的应用程序的部分,否则不执行字符串加密。
水印
水印通过将版权信息或唯一标识号等数据嵌入到.NET应用程序中而不影响其运行时行为,帮助您将软件未经授权的副本回溯到来源。 Dotfuscator的水印算法不会增加应用程序的大小,也不会引入可能会破坏应用程序的额外元数据。
修剪——删除未使用的方法
小应用程序下载速度更快,安装速度更快,加载速度更快,运行更快。Dotfuscator的修剪功能静态分析您的代码以找到未使用的类型、方法和字段,并将其删除。Dotfuscator在处理MSIL文件时还会从MSIL文件中删除调试信息和非必要元数据,从而使应用程序更小,并减少攻击者可用的数据。
链接——组装合并
Dotfuscator可以将多个输入组件组合成一个或多个输出组件。组装链接可用于使您的应用程序更小,尤其是与重命名和修剪一起使用时,可以简化部署方案。
例如,如果您有输入程序集A、B、C、D和E,则可以链接程序集A、B和C,并将结果命名为F。同时,还可以链接D和E,并命名结果G。唯一的规则是您不能将相同的输入程序集链接到多个输出程序集中。
篡改检测及防护
Dotfuscator注入代码,它在运行时验证应用程序完整性。 如果它检测到篡改,它可以关闭应用程序,调用随机崩溃(伪装崩溃是篡改检查的结果),或执行任何其他自定义操作。对于使用PreEmptive Analytics的客户,它还可以向服务发送消息,指示已检测到篡改。
调试检测与防御
PreEmptive Solutions提供强大的反调试解决方案,可以保护应用程序及其数据,同时将近乎实时的警报和分析直接提供给您首选的分析服务,包括Application Insights 、HockeyApp、Microsoft TFS、Google Analytics(分析),Twitter、New Relic 和PreEmptive Analytics Workbench ——仅举几例。
Shelf Life
Shelf Life是一种应用程序库存管理功能,可让您将到期或取消激活以及通知逻辑嵌入到应用程序中。Dotfuscator通过退出应用程序和/或发送PreEmptive Analytics Service消息来注入响应应用程序到期的代码。此功能对于beta或评估应用程序特别有用。用户可以安排应用程序在特定日期到期/取消激活,并可选择向用户发出应用程序在特定天数内到期/停用警告。
京ICP备09015132号-996 | 网络文化经营许可证京网文[2017]4225-497号 | 违法和不良信息举报电话:4006561155
© Copyright 2000-2023 北京哲想软件有限公司版权所有 | 地址:北京市海淀区西三环北路50号豪柏大厦C2座11层1105室