随着软件开发和维护方法的日益复杂化,保护代码免受窥探和反编译/反汇编的需求也日益增长。过去,人们认为混淆器是将中间语言(IL)代码和元数据转换成难以识别的无意义内容。然而,今天的情况已经完全不同。
代码开发和维护的方法已经变得非常复杂。需要一个完全不同的保护级别以及额外的支持服务,对于大型项目和不同配置/包的代码分析和维护也需要额外的支持。
混淆器提供了将IL代码及其结构转换成难以阅读和难以反编译的文件的可能性,从而保护代码免受黑客和竞争对手的攻击。除此之外,黑客和竞争对手拥有非常高效的工具来进行反编译、去混淆和伪造IL代码,因此有必要抵御这种漏洞的利用。现代混淆器扩展了其应用领域。
Spices.Obfuscator
(9Rays.Net公司开发的Spices.Net系列中的一款产品)提供了这一系列的应用,使其成为最先进的开发工具。
其特点如下:
大多数公司都有相当复杂的构建过程,需要灵活性和特定的脚本。Spices.Obfuscator
中包含的MSBuild支持允许轻松地将混淆过程以自动化的形式集成到构建过程中,从而使Spices.Obfuscator
更加灵活。混淆脚本可以用C#、VB.Net、C++或J#编写,通过将Spices.Obfuscator
集成到自己的构建解决方案中。
Spices.Project
和Spices.Solution
都支持在混淆过程中的任何步骤启动各种解决方案。
使用Spices.Obfuscator
可以在混淆后调试应用程序。与Visual Studio 2003/2005的彻底集成允许在构建过程中混淆应用程序,并以调试模式启动混淆后的应用程序。
此外,提供了追踪异常的手段,允许接收原始方法的堆栈跟踪,这最终导致快速分析和纠正错误。
许多软件制造商开发了几个软件版本:评估版本、专业版本、轻量级版本等。他们需要为不同版本提供不同的混淆模式。
Spices.Solution
可以实现这一点,因为它是一个项目集合(每个项目包含一个产品配置),允许同时混淆各种产品配置。
这是一种新的专利待审技术,包括几种方法来使代码分析和反编译变得复杂。Spices.Anonymizer
实际上将受保护应用程序的代码单体转换成沙子,大大复杂化了应用程序分析的过程,搜索黑客的脆弱点以及保护应用程序免受ILASM/ILDASM往返。
这项技术只会略微降低代码效率。它在操作控制上是灵活的,并且允许几个保护级别,即使是最低级别的保护也显著增加了应用程序的安全性和分析的复杂性。
众所周知,软件开发人员花费大量精力为他们的应用程序提供安全性,隐藏秘密信息免受黑客攻击,并在字节码中大大复杂化其搜索。Spices.Obfuscator
使用的StringEncryption
技术提供了几个安全级别,从移除代码中的字符串到使用TripleDES算法对字符串进行加密。
Spices.Anonymizer
技术预见了代码匿名化的可能性,这是为了防止反编译软件识别解密方法而负责信息加密的。
混淆器不仅重命名程序集成员,还优化程序集的大小和效率。混淆效果,将程序集成员的名称更改为更短的名称,提高了应用程序的效率。程序集可能包含不必保留在混淆程序集中的代码和元数据。它们是多余的,应该被删除,通过这样做减少了程序集的大小。Spices.Obfuscator
中使用的技术允许元数据程序集大小减少50%。这种大小的减少导致程序集的初始化速度更快,效率显著提高。Spices.Optimizer
使用的一些方法也使黑客攻击和程序集研究以及ILASM/ILASM往返变得更加复杂。
正如在开发工具如Visual Studio中所知道的本地化并不允许本地化所有的字符串和应用程序资源。必须通过更新应用程序的程序集过程来不断更新本地化信息。
Spices.Obfuscator
提供了这个问题的便捷解决方案。通过Spices.Net
中包含的一个工具——Spices.Localizer
,用户可以从程序集中提取所有的字符串和资源信息,获取本地化表,并执行所需信息的本地化到任何语言。
Spices.Localizer
还提供了与当前代码版本同步的本地化行,这大大减少了程序集时间,并允许更有效地分配开发人员之间的任务。完成本地化表后,它们可以在混淆时使用,所有本地化的信息将被实现在代码中。如果使用字符串加密,本地化的信息也将被加密。
如果黑客没有被最初的.NET版本所吸引,它们现在日益增长的普及性使它们引起了黑客的注意。.NET软件使用程序集签名技术,将文件转换为强命名程序集。在启动时,这些文件会检查数字签名,该签名保留在程序集中,并确认自程序集签名以来其内容没有变化。这是一个好的解决方案,可以避免程序集的损坏和修改,但签名技术有其弱点。
例如,黑客可以移除程序集签名,修改程序集并用自己的密钥重新签名,通过这样做伪造程序集。这是.NET代码黑客攻击中广泛使用的方法之一。
Spices.Obfuscator
提供了解决方案,以保护代码免受此类黑客攻击,通过重新生成防篡改程序集,这种程序集很难伪造(这也是一项专利待审技术)。9Rays.Net的专家每天都在努力改进这项技术。
为了确保程序集已经被正确混淆,Spices.Obfuscator
还包括混淆和优化后的程序集验证的可能性。
Spices.Obfuscator
的一个非常有利的特性是它包含额外的分析、浏览和验证程序集的手段。该软件包包括一个反编译器,一个调用图分析器,一个继承和接口实现分析器。用户可以在浏览程序集成员时,以及通过名称或令牌搜索时,获得当前程序集成员的完整上下文信息。该软件包还包括从元数据表结构到PE文件(可移植可执行格式)结构的低级浏览和分析手段。该软件包还包括获取描述程序集及其成员之间各种关系的图表的手段。换句话说,Spices.Obfuscator
不仅提供了保护手段,还作为分析程序集架构的工具,以及提供可能需要的有关程序集的任何信息的供应商。
在Spices.Obfuscator
的下一个版本中,9Rays.Net公司计划开发一个Class/Assembly Linker
,它将允许进行程序集操作,如程序集合并、分割和从程序集中提取类。这种服务是需求的,正如看到的,它们扩展了混淆器的适用性。