使用超过混淆的东西来阻止反编译

时间:2013-08-16 20:49:40

标签: .net obfuscation code-access-security deobfuscation code-security

每当涉及到Dll安全性时,在线搜索的所有结果都会讨论混淆。现在,我的问题是,除了混淆之外,我们可以做些什么来使我们的装配更安全并且不受重新设计的影响?

我之所以要问的原因是因为我正在为代码安全性演示做准备,而且我知道去混淆会发生,如果你让人们决定花时间重新设计任何代码而不是最终会做它。故事的道德是混淆不是一个完全证明的解决方案,它只是让重新设计代码变得困难。但是,如果我们将混淆与其他技术相结合,那么它将使其变得更加困难。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

混淆只会减慢它们的速度 如果你拥有的是有价值的,它将被黑客攻击 保护DLL与加密通信通道不同,您可以在其中更改密钥,即使他们破解密钥,他们也只能进行通信。
DLL是一段可以被黑客入侵的静态代码 你可以很难破解,但是花费的时间不是提供功能和更难以支持和扩展的产品。

另一种技术是法律保护。

我不是律师 这不是法律建议 这只是我对这个主题的有限理解。

版权只是保护代码的直接副本 如果他们对其进行逆向工程,那么版权本身就什么都不做 全球有些地方在保护版权方面做得很少。

如果您有新的算法或UI或???那么下一级法律保护就是实用专利 如果您是一个小实体,您可以自己提交几百美元 但是,如果没有专利律师,被接受的可能性就会下降,而且可执行的可能性会下降 如果专利被拒绝,您将无法获得申请费退款。

或者您可以将其视为贸易秘密,并且仅在内部托管 在这种情况下,仍然需要采取适当的法律保护,如非披露协议。

我的看法是模糊了你取出新手的程度,并尽量减少对功能和支持的影响 下一级保护是合法的 你不太可能起诉新手,因为他们太多了 混淆只是限制你的攻击面,法律行动是你的追索权。

我再次不是律师,但我的理解是,曾经是第一个发明现在是第一个提交保护的保护。
最糟糕的情况是你没有获得专利,现有的玩家(有很多口袋)看到了这个想法的价值,发现你没有受到保护,他们获得了专利。
他们不仅从你那里窃取了这个想法,而且还因为窃取你的想法而起诉你。

答案 1 :(得分:3)

不幸的是,没有办法确保没有人能够反编译您的代码。根本问题实际上是任何具有足够知识,耐心和时间的人可以完全分析代码位于用户控制的机器上,并从二进制文件中获得一些有用的源代码。计算机本身能够解码和运行它,所以人们也是如此。

混淆,加密,打包或其他任何东西只会给潜在的黑客带来问题,但是没有一个真的无法绕过,你只是提高了标准。这不仅发生在.NET上,而且在所有编程语言中,反编译始终是可能的,只是更加困难或简单,并且因为二进制文件位于用户可以阅读的地方。

唯一安全的措施是将二进制文件放在用户甚至无法读取它们的位置,这通常意味着您控制的计算机,用户完全无法直接访问它们。 Web服务是解决此问题的经典方法,您的网页运行代码,用户只有一个小客户端程序,甚至只是一个浏览器。当然,这对您部署的方式和他们需要或想要拥有的基础架构有着巨大的影响,但这是为代码安全性付费的权衡。