2010-05-05 71 views
4

我今天在使用.Net反射器,并意识到Miicrosoft的整个Expression套件都是用.Net编写的。因此,我几乎可以看到表达式的底层代码。这使得它比二进制更容易打破复制保护。我认为这是一件大事。通常建议在.Net中制作商业软件,在源代码中可以很容易地看到变量名称?我感到惊讶的是,微软至少没有公开点名。谢谢将.Net用于商业软件是一个好主意吗?

+0

事实上,大多数情况下重写将比反向工程更容易,除保护复制方案外,还有其他机制可以保护知识产权。 – CurtainDog 2010-05-05 01:58:19

回答

4

我会考虑能够将所有方法反转回变量名称(也许是评论)的一个功能。 .NET Reflector和Java Decompiler相当不错。

即使它是用C或C++编写的,对于RCE来说也没有任何意义。人们在阅读大会的时候剪下牙齿,用OllyDBG,IDA Pro等修补它们。微软也提供了自己的工具来翻转原生代码。考虑到商业Java和.NET软件已经存在多少(以及它的反编码是多么容易),我怀疑使用.NET,通过Java,通过C++,C或汇编比较起来会有多大的不同它是要找回原始的源表单。尽管如此,我遇到的大多数商业.NET软件都将其程序的核心写入(似乎是)C++库,然后通过.NET应用程序与其进行交互。

5

任何值得购买的应用程序 - 尤其是像Expression这样的大型应用程序 - 都没有任何一项功能,如果拆解和复制会降低其竞争优势。

另一个极端是,反汇编和复制整个代码库是毫无意义的 - 因为这会非常明显。

简而言之,我们在这里不是在说助熔电容器。

+1

我只是提到绕过许可 – jmasterx 2010-05-05 02:03:04

2

你在反射镜中看到的东西被反编译IL。除了更改标识符名称之外,没有实际的方法来对其进行混淆。

无论您是否对其进行混淆处理(混淆或二进制代码只需要更长的时间来进行反向工程),确定的黑客总是会对您的代码进行反向工程。许可算法也一样。

-1

是的,.NET是一个可行的商业平台,但我们(意思是我共同创立的公司OffByZero)强烈建议您在.NET和Java中使用混淆器来实现敏感代码。从Developing for Software Protection and Licensing

如果您在.NET或Java, 正在开发航运是非混淆的应用 几乎等同于航运 源代码形式。如果您担心 关于知识产权 您的代码(尤其是如果您是 与可能暴露商业机密的时尚 连接的设备),那么您需要使用质量混淆器(012f)。

...

要注意,没有 软件保护解决方案可以 保证100%牢不可破是很重要的; 从根本上说,一旦你的二进制文件在 另一台机器上,你已经放弃了 完全控制它。我们的目标应该是 结合使用高品质的软件 许可证制度 混淆,以使它很难& 耗时要破解软件, 从而提高了吧足够 高,以保护您的收入。

相关问题