将.Net用于商业软件是一个好主意吗?

时间:2010-05-05 01:48:49

标签: .net algorithm

我今天正在玩.Net反射器,并意识到Miicrosoft的整个Expression套件都是用.Net编写的。结果我几乎能够看到表达式的底层代码。这使得比二进制文件更容易破坏复制保护。我认为这是一个大问题。是否通常建议在.Net中制作商业软件,在那里很容易看到源代码到变量名称?令我感到惊讶的是,微软至少没有对它进行点击。感谢

5 个答案:

答案 0 :(得分:5)

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

另一方面,反汇编和复制整个代码库是没有意义的 - 因为那样会很明显。

简而言之,我们不是在谈论磁通电容器。

答案 1 :(得分:5)

我会考虑能够一直反向变量名称(也许是评论)的功能。 .NET Reflector和Java Decompiler非常好。

即使它是用C或C ++编写的,对RCE来说也没有任何意义。人们削减他们的牙齿阅读组装和修补OllyDBG,IDA Pro等。 Microsoft也提供了自己的工具来反转本机代码。

考虑到已经存在多少商业Java和.NET软件(以及它是如何容易被反编译的),我怀疑使用.NET,而不是使用.NET,而不是使用C ++,C或汇编会在比较它时有多大的不同之处是取回原始来源表格。

话虽如此,我遇到的大多数商业.NET软件都将其程序的核心写入(似乎是)一个C ++库,然后通过.NET应用程序与其进行交互。

答案 2 :(得分:2)

当MS拥有大量可以起诉试图使用该代码创建竞争产品的组织的律师时,MS不需要对其代码进行模糊处理以保护IP。即使您没有大量的律师,您的代码中是否有任何新颖的内容可以证明逆向工程的成本合理呢?大多数客户将尝试使用合法软件,因为使用支持不当的非法软件的风险太高。任何人都可以拍摄斯蒂芬·金的小说并复制所有写在其中的文字,因为他们都在那里,很明显可以看到,但他仍然能够从购买他的书的读者的诚意中获得可观的利润。

答案 3 :(得分:1)

你在反射器中看到的是反编译的IL。除了更改标识符名称之外,没有实际的方法可以对其进行模糊处理。

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

答案 4 :(得分:-1)

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

  

如果您使用的是.NET或Java,   运送非混淆的应用程序   几乎等同于运输   源代码表格。如果你担心的话   关于内部的知识产权   你的代码(尤其是你的代码)   以某种方式与设备连接   那可能会暴露商业秘密)   你需要使用高质量的混淆器。

     

...

     

重要的是要注意不   软件保护解决方案可以   保证100%牢不可破;   从根本上说,一旦你的二进制文件打开了   另一台机器,你放弃了   完全控制它。目标应该   是使用高品质的软件   许可证制度与   混淆使它变得非常困难&   破解软件非常耗时,   从而充分提高了标准   很高,以保护您的收入。