一个不同的问题,即 好的。净模糊处理的工具/战略, 询问是否模糊处理的是易于实施使用的工具。

我的问题虽然是 是模糊的有效吗? 在一个评论的答复 这个答案, 有人说,"如果你担心源盗窃...模糊处理几乎是微不足道,一个真正的饼干".

我在输出自社区的版Dotfuscator:它看起来模糊处理的,给我!我不希望来维持的!

我的理解是,简单的'裂'模糊处理的软件,可能比较容易:因为你只需要找到任何位置的软件,实现不管它是什么你想要破解(一般许可证的保护),并添加一个跳跳过。

如果该担心的不仅仅是开裂,通过一个终端用户或一种'海盗':如果担心的是"源盗窃",即如果你是个软件供应商,而你担心的是另一个供应商(一个潜在的竞争者)进行逆向工程您的来源,他们可能使用或添加到他们自己的产品...到什么程度上被简单混淆的一个充足或不充分的保护,防止这种风险?


第1编辑:

代码在的问题是大约20KLOC上运行的终端用户机(用户控制、不远程服务)。

如果混淆真的是"几乎微不足道,一个真正的饼干"我想和一些深入了解 为什么 它是无效的(而不是仅仅"多少"这不是有效)。


第2编辑:

我不担心别人的扭转算法:更担心自己的再利用实际的 执行情况 算法(即源代码)进入他们自己的产品。

搞清楚,20KLOC是几个月的工作的发展,它会采取或多或少于这个(几个月),以deobfuscate这一切?

它甚至有必要deobfuscate的东西为了'偷':或许一个健全的竞争者只是将其纳入批发他们的产品,同时仍然模糊处理的,接受这样这是个维护的噩梦,并且希望它需要维护?如果这种情况下 一种可能性然后是混淆。净码的任何更容易受到这比编制机代码吗?

是的大部分模糊"军备竞赛"主要目的是,防止人们的人甚至是'裂'的东西(例如查找和删除的代码碎片其实现的授权保护/强制执行),超过在防止源盗窃'?

有帮助吗?

解决方案

我已经讨论了为什么我不认为模糊处理的是一种有效的手段保护,防止裂在这里:
保护。净码逆向工程

然而,你的问题是具体有关 源盗窃, ,这是一个有趣的话题。在伊利达Eiliams书,"扭转:秘密的逆向工程"中,作者讨论了源盗窃作为背后的一个原因逆向工程在第一个两章。

基本上,它涉及到是唯一的机会你必须正在针对源的盗窃是如果你有一些非常具体的、艰苦的工程师,算法有关域,给你一条腿你的竞争对手。这只是关于唯一一次这将是成本效益的尝试反向工程一小部分应用程序。

所以,除非你有一些秘密算法你不想你的竞争对手,你不需要担心源盗窃。所涉及的费用,扭转任何大量的源代码的应用程序迅速超过成本的重新编写,它从头开始。

即使你这样做有一些算法你不想让他们拥有的,没有多少你可以做到停止确定和技术人员从得到了(如果执行应用程序在他们的机)。

一些常见的抗逆转的措施是:

  • 混淆-不会很多方面的保护您的来源或防止其被破获。但是,我们也不可能使它完全容易,对吧?
  • 3缔约方包装工队- Themida 是一个更好的人。包装一个可执行的进入加密的win32应用程序。防止反射,如果应用程序。网络应用程序。
  • 定义包装工队-有时候,编写自己的封隔器,如果你有能力这样做是有效的,因为有很少信息的裂的场景有关如何解开你的应用程序。这可以停止的经验重。此 教程 给出了一些良好的信息在编写自己打包机。
  • 保持工业秘密算法关闭的用户机。执行它们作为一个远程服务,所以该指令从未执行。唯一的"愚蠢的证明"的方法保护。

然而,封隔器可以解开,并混淆真的不会妨碍那些想要看到什么你申请这样做。如果该程序运行在的用户机然后它是脆弱的。

最终它的代码必须执行的机器码,它通常是一个问题发射了调试器,设置几个断点并监测指示执行期间有关的动作和花费一些时间研读这些数据。


你提到你花了几个月的时间来编写~20kLOC。这将需要近一个数量级更长的时间来扭转这些相当于20kLOC从你的应用程序投入的可行来源,如果你拿了最低限度的预防措施。

这就是为什么它仅仅是具有成本效益的反向小,行业的具体算法从应用程序。其他任何东西,这是不值得的。

采取以下虚构的例子:可以说我只是开发一个全新的竞争的应用iTunes了一吨的花哨。让我们说了几100k LOC和2年制定的。一个关键要素,我有的是一种新的方式提供服务的音乐到你基于你的音乐听的口味。

苹果(正的海盗,他们正)获取风这一点,并决定他们真的很喜欢你的音乐提示功能,因此他们决定要扭转这种局面。然后,他们将磨练在上只算法和逆向工程师最终将拿出一个可行的算法,提供了相当的建议给予同样的数据。然后他们实现所说的算法在他们自己的应用程序,叫它"天才",并使他们的下一个10万亿美元。

那是怎样的 源盗窃 就会下降。

没有人会坐在那里和逆向所有100k LOC窃取重大块大块的编制应用程序。它将是太昂贵和太耗费时间。大约90%的时候他们将被扭转无聊的、非工业秘密码,简单地办理按下按钮或处理用户输入。相反,他们可以聘请开发他们自己重新编写大部分从头开始用更少的钱,只是反向的重要的算法是困难的工程师和那个给你一个优势(即,音乐表明特征)。

其他提示

您担心人偷你的产品中使用的特定算法。无论你是费埃哲或需要使用比第一种方式更来区分自己,你X ++ ;.如果你解决了代码中的一些问题,不能被别人琢磨不透它几个小时来解决,你应该在计算机科学和/或专利博士学位,以保护你的发明。软件产品的99%是的的成功的的特殊的,因为算法的。他们是成功的,因为他们的作者做了繁重的任务放在一起著名的和容易理解的概念转化为做什么他们的客户需要,并出售它价格比它的成本支付给别人重新做同样的产品。

看它这样;您键入您的问题到大规模杀伤性武器的编辑器进行反由SO队以修复一些漏洞,使索姆改进设计。该代码被混淆。你永远不会停止聪明上进的人从黑客你的代码,你可以期望的最好的是保持诚实的人诚实,使它有点难以打破。

如果你见过从反汇编的输出,你就会明白为什么混淆总是会失败。

我倾向于认为混淆真的不是,如果你想保护你的来源是非常有效的。对于该领域的真正的专家(我不是说这里的软件专家或一块饼干,我的意思是的代码的功能领域的专家),平时他或她并不需要看到代码,只是看看它是如何对特殊输入,边缘的情况下,等反应,得到的如何实现复制或等同于保护功能的代码的想法。因此,在保护您的诀窍不是非常有帮助。

如果您在必须不惜一切代价保护的代码有IP,那么你应该可以作为服务软件的功能,一个安全的远程服务器上。

好困惑会保护你到一个点,但它的所有有关的努力来打破它针对具有代码的“奖励”所需要的量。如果你是在谈论停止一般的企业用户,那么商业混淆应该是足够的。

简短的回答是肯定的,并没有;它完全取决于您试图防止的。第十二的 安全编程的食谱 有一些有趣的评论意见在这页上653(这是方便可用在谷歌的书籍预览).它将防篡改成四类:零一天(减慢的一个攻击者,所以它需要他们长时间来完成他们想要什么)、保护的专利算法,以防止反向工程,"因为我可以"的攻击和我不可能记住4个。你要问什么我试图防止的,如果你真的关心一个人得来看看源代码然后混淆具有一定的价值。用它自己的这通常只是一个烦恼的人试图弄乱你的应用程序和喜欢的任何良好的安全措施,它的工作最好在联合使用时与其他抗篡改的技术。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top