65.9K
CodeProject 正在变化。 阅读更多。
Home

《鬼门关》:通过智谋和诡计保护您的知识产权

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2007年7月16日

CPOL

6分钟阅读

viewsIcon

27836

这篇软文主要讲述了保护知识产权以及为此需要记住的要点。它主要强调了代码混淆的好处,以及它如何帮助禁用.NET代码中简单的逆向工程。

这是我们对 The Code Project 赞助商的展示性评测。这些评测旨在为您提供我们认为对开发人员有用且有价值的产品和服务信息。

引言

你甚至不能相信国家首都的学区。最近有指控称,哥伦比亚特区在一份提交给哥伦比亚特区议会的提案中,逐字复制了夏洛特-梅克伦堡(北卡罗来纳州)学区的大量文件内容。尽管特区市长对这一丑闻表示深切关注,但这说明了一个事实:躲在暗处等待别人取得突破,然后照抄,远比自己动手更容易。撇开关于企业精神和自力更生的道德论证不谈,当现代网络野蛮人如此轻易地利用快速赚钱的能力时,疲惫的开发者该怎么办?

你应该知道什么

多年来,人们窃取源代码的方法变得越来越复杂。尽管核心.NET代码隐藏在编译后的.NET程序集后面,但黑客仍然利用漏洞来攻破“保险箱”。在程序集内搜索字符串会向黑客显示漏洞区域,黑客随后可以使用反汇编器从.NET程序集中提取对象。

然后反编译器开始发挥作用,从反汇编的对象中逆向工程出高级语言核心代码。使用反编译器,人类可以读取你的团队辛辛苦苦编写和编译的代码。反汇编器和反编译器协同使用,可以使你的知识产权完全暴露于恶意使用。

那么,你能做些什么来保护你的知识产权呢?在现代商业环境中,混淆器对于保护专有代码至关重要。通过应用有效的混淆,逆向工程会受到极大的阻碍。这意味着竞争对手无法从你的辛勤工作中获益。混淆器作用于已编译的.NET程序集,而不是核心代码。它们通过用无意义的字符更改程序集中的标签标识符,使逆向工程变得更加困难。混淆器提供的程序集将与你用纯语言编写的程序集执行完全相同的功能,但它们的代码形式对于窥探者来说是无法理解的。

好处是显而易见的。如果竞争对手能够对你的知识产权进行逆向工程,他们不仅能够将你的代码用于自己的目的,而且他们无需向你支付许可费用,并且可以轻易地根据自己的需要修改代码并重新编译。这是一个严重的问题,可能对企业及其利润产生真正的影响。

该过程确实增加了复杂性。如果您将混淆后的代码推送给发现错误的客户,则可能难以纠正问题,因为您应用的经过混淆器处理的补丁将分配与您发送给他们的原始代码不同的标识符。增量混淆将把补丁中的标识符映射到原始代码的标识符。

控制流混淆将作用于代码中的控制结构。反编译器工作的一种方式是查找它正在处理的代码中常见的命令字符串,例如 for/while/if。控制流混淆使诸如 for/while/if 等原本容易重构的命令变得无法识别,因此反编译器在工作时被迫即兴发挥。然后发生的情况是,反编译器开始创建 goto 调用,试图复制原始函数,在此过程中,反编译器本身容易引入虚假循环和人类和机器都无法破译的乱码代码。控制流混淆利用黑客的工具来对付他们自己。

有许多商业产品可用于帮助应对知识产权的严重威胁,其中包括 Spices.Obfuscator,它来自 9Rays.Net,是一个屡获殊荣的工具,配备了几种独特的功能,使其在保护关键专有代码方面极具价值。Spices.Obfuscator 允许开发人员在同一台机器上支持多个版本的 Microsoft Visual Studio(2003 和 2005)。获得专利的代码匿名化技术使代码对窥探者毫无意义。Spices.Obfuscator 能够自动化,为用户提供了更大的操作灵活性,因为他们现在可以通过脚本和构建环境(例如 MSBuild 和 NAnt)管理和维护混淆。可以维护托管和非托管程序集的混合程序集。

高质量的混淆器允许开发人员积极地格式化他们的代码,以确保在软件开发生命周期中所需的下游处理和支持能够与部署以对抗黑客的保护性混淆工具一起工作。例如,Spices.Obfuscator 使开发人员能够将某些程序集成员排除在混淆之外,如果它们被设计用于未混淆的代码,那么标准化某些重要成员的命名约定就很重要,否则混淆过程将使代码变得毫无意义。

混淆器还会通过混淆器的命名约定取代书面标识符来减少元数据的大小,从而帮助您的代码。元数据大小的减少将转化为更高效的程序,从而使您的代码执行更加精简。

就其本身而言,混淆和反编译是保护代码的整体一部分。它们并不代表能让你的代码免受你试图保护的人侵害的灵丹妙药。相反,与其他可用的产品以及通过智能编码实践结合使用,你的开发人员可以保护你的财产免受窥探。

9Rays 提供了上述 Spices.ObfuscatorSpices.Decompiler,以及许多其他工具——Spices.VSIP(Visual Studio 集成包,带 MSBuild 集成)、Spices.Modeler、Spices.Investigator、Spices.Informer 和 Spices.Documenter——这些工具共同构成了一个强大的整体解决方案,名为 Spices.Net Suite

Spices.VSIP 以自动化形式支持整个生命周期过程,协助初始开发、构建和编译、混淆程序集、验证应用程序和代码的完整性、根据需要协助调试以及协助部署到客户站点。Spices.Modeler 自动创建项目、程序集、类和成员之间无数相互关系的图形层次视图。

逆向工程对你的竞争对手和许多想要出人头地的业余黑客来说,都是巨大的诱惑。除非你采取措施降低其可见性,否则你的知识产权是不安全的。混淆、反编译和其他方法结合使用并不能保证你的代码免受窥探,但它们确实能使你的代码对坏人来说不那么诱人。你的受保护代码与另一家公司未受保护的代码相比,会使另一家公司的知识产权成为一个更有吸引力的目标。

有疑问?

阅读本文后,您可能会有一些未得到解答的问题。9Rays.Net 有一份很棒的常见问题解答文档,回答了许多关于混淆和 Spices 产品套件的常见问题。请在此处查看这些答案:这里

摘要

确保您的知识产权安全!使用 Spices.Obfuscator,您可以将您的代码置于一个同心保护带中。错误信息、通向死胡同的盲区以及难以理解的乱码将迎接黑客,并将他们赶到更肥沃的牧场。如果您想尝试 Spices.Net Suite,可以试用免费评估副本。我们很乐意听取您的反馈。请发送电子邮件至support@9rays.net与我们联系。

© . All rights reserved.