保护您的应用程序免受黑客和竞争对手侵害的需求日益增长





0/5 (0投票)
2005 年 10 月 31 日
6分钟阅读

67749
使用 Dotfuscator 保护您的 .NET 源代码免遭反编译器攻击。

引言
.NET™ 平台在功能和灵活性方面达到了前所未有的高度。不幸的是,这种设计本身就给那些试图隐藏其程序知识产权的人带来了问题。.NET 应用程序是以一种称为 MSIL (Microsoft Intermediate Language) 的表达性文件语法来分发可执行代码的。与二进制机器码相比,中间文件级别更高,充满了易于观察和最终可理解的标识符和算法。毕竟,要想在让某事物易于理解、灵活且可扩展的同时隐藏其关键细节,显然是困难的。
"软件一经发布,黑客和竞争对手就会用最新的代码分析工具蜂拥而至。代码混淆可以迅速终结他们的成功机会,从而加强安全性并保护知识产权。"- Pete Lindstrom,Spire Security, LLC 研究总监。
未经保护的 .NET 应用程序向所有人提供源代码级别的信息
您的公司的源代码包含至关重要的数据:关于数据库、关键算法以及内部系统运行方式的信息。在控制良好的环境中,只有开发人员才能访问此源代码,而最终用户则获得二进制文件来运行。
然而,由于 .NET 程序集的性质,分发未经保护或未经混淆的二进制文件实际上等同于分发源代码。这是因为,除非采取措施加以阻止,否则在几秒钟内,免费的反编译器就可以轻易地从可执行文件中重建源代码。
让我们通过检查一些代码来探讨信息暴露的程度。下表比较了经过反编译器处理的二进制文件。上面是来自未经混淆的二进制文件的代码,下面是反编译器在遇到使用 Dotfuscator Professional Edition 创建的强混淆代码时可能生成的示例。
反编译 输出
未混淆 代码
string myConnectionString = "Initial Catalog=Northwind;" +
"Data Source=localhost;" + "User ID=sa;" + "Password=password";
SqlConnection myConnection = new SqlConnection(myConnectionString);
string mySQL = "INSERT INTO Employees" + "(FirstName,LastName) VALUES " +
"('J','Smith')";
SqlCommand myCommand = new SqlCommand(mySQL,myConnection);
myConnection.Open();
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
混淆代码
This item appears to be obfuscated and can not be translated.
System.NotSupportedException: break at offset 00CE can not be translated
into an expression.
显然,即使不如上例明显,读者也能非常快速地从未经混淆的 .NET 程序中检索到重要信息。这使得攻击者能够进一步了解应用程序及其底层网络的内部工作原理。攻击者理解的代码越多,他们找到安全漏洞的可能性就越大。通过移除上下文,代码混淆技术可以为抵御黑客提供另一层防御。
为什么源代码需要保护?
如果不采取几项快速措施来保护您的应用程序,您的软件许可代码、防复制机制和专有业务逻辑将更容易被所有人看到——无论是否合法。任何人都可以随意查看您软件的详细信息。他们可以寻找可利用的安全漏洞,窃取独特想法,破解程序,识别关键信息所在等。
公司应仅向需要了解的个人群体披露应用程序的内部细节。通过向所有最终用户公开这些细节,公司将提供大量可用于攻击的信息。
通过访问未经混淆的程序,心怀不满的员工或黑客可以反编译应用程序并构建其恶意修改版本。一旦识别出修改,内部人员就可以寻找机会运行修改后的版本。在极端情况下,此修改后的可执行文件可能导致重要记录被删除,秘密破坏关键数据,或以其他方式破坏公司运营。有关恶意重新编译的示例,请参阅 PreEmptive 的演示页面。
微软选择代码保护、混淆和效率
当微软寻找 .NET 混淆器来保护其客户的 .NET 代码时,他们选择了 Dotfuscator。PreEmptive Solutions 很荣幸将其 .NET 混淆器的精简版包含在 Microsoft 的 Visual Studio.NET 2003 和 Visual Studio 2005 中。对于企业级保护,微软在其 .NET 代码上使用 Dotfuscator Professional Edition。微软发明了 .NET;为了保护它,他们选择了 Dotfuscator。还有什么比这更好的推荐呢?
"微软很乐意将 PreEmptive Solutions 的 Dotfuscator Community Edition 包含在 Visual Studio .NET 中。该工具包含有助于开发人员保护其知识产权免遭 Microsoft .NET 平台上的反编译或逆向工程的技术。对于商业和企业级应用程序,升级到 Preemptive 的 Dotfuscator 专业版所提供的卓越保护和减小尺寸的功能非常值得一看。"
- Tom Button,微软开发者平台和推广部副总裁
Dotfuscator Professional Edition 有助于保护您的程序免受试图窃取您的知识产权或查找您程序中安全漏洞的黑客的侵害。它包含许多重要功能,如控制流混淆、字符串加密、增量混淆、增强的重载注入、软件水印和剪枝。Professional Edition 重新排列代码指令,同时保留原始运行时逻辑。它消除了反编译器用于识别(和重建)更高级别程序代码结构的典型模式。
较小的应用程序传输、加载和运行速度更快。为此,Dotfuscator Professional Edition 的输出包含了应用程序运行所需的精简版代码,仅此而已。您获得的收益包括卓越的知识产权保护、减小的应用程序大小和更好的程序性能。要了解有关代码混淆的更多信息,请参阅我们多语言的 混淆 FAQ 页面。
Dotfuscator Pro 完全支持 MSBuild 和丰富的 Visual Studio 集成,如下所示。这使其易于集成到您的开发生命周期中。
安全 .NET 开发生命周期
PreEmptive 的 Dotfuscator 为您的安全 .NET 软件开发生命周期增加了新的保护级别和应用程序效率。
- 基于软件需求分析和威胁建模设计系统
- 遵循安全编码原则进行开发/构建
- 使用 Dotfuscator 保护和增强 .NET 代码
- 测试安全漏洞
- 部署并监控漏洞

"我们需要保护我们的知识产权,并确保没有人能够访问我们诊断程序中的代码。我们选择 PreEmptive Solutions 是有几个原因:PreEmptive 的解决方案提供的安全级别、低维护成本,以及我们需要一个可以在 .NET 和 Java 平台上运行的解决方案。PreEmptive Solutions 是最适合我们的解决方案。"
- Mats Hagberg,Volvo IT .NET 领域经理。
未雨绸缪。在部署前保护您的代码
代码混淆对于保护内部软件免受窥探至关重要,因此它是分层信息安全控制系统中的关键组成部分。就像 Makefiles、源代码控制和优化器一样,代码混淆注定会成为您未来构建流程中的常规步骤。
在混淆和代码保护方面,选择唯一能够回答所有这些问题的产品
- 与 Visual Studio 无缝集成?
- 允许基于规则的精细配置?
- 允许 .NET 验证器功能正常运行?
- 移除未使用的元数据?
- 支持预构建和后构建事件?
- 提供程序集链接?
- 允许按程序集选择库模式?
- 在构建后提供自动的强命名程序集重签名?
- 使用增强的重载注入来最佳地混淆应用程序?
- 轻松集成到自动化构建系统中?
- 支持托管 C++ 程序集?
- 提供压缩/剪枝?
- 应用有效的字符串加密来隐藏敏感信息?
- 提供软件水印?
- 提供供应商电话支持?
- 提供集成帮助和自动更新?
- 提供有助于对混淆后的应用程序进行故障排除和调试的功能?
- 通过微软内部安全检查和测试流程?
- 对大量应用程序进行广泛的回归测试?
- 提供及时的更新以支持新版本的 VS 和 .NET Framework?
- 多年来并在不同平台展示了对代码保护的承诺?
- 与微软合作制定新的混淆标准?
- 作为 Visual Studio 集成计划的优先成员参与?
获取 Dotfuscator Professional Edition,立即开始保护和改进您的 .NET 代码。