我今天正在玩.Net反射器,并意识到Miicrosoft的整个Expression套件都是用.Net编写的。结果我几乎能够看到表达式的底层代码。这使得比二进制文件更容易破坏复制保护。我认为这是一个大问题。是否通常建议在.Net中制作商业软件,在那里很容易看到源代码到变量名称?令我感到惊讶的是,微软至少没有对它进行点击。感谢
答案 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)
答案 3 :(得分:1)
你在反射器中看到的是反编译的IL。除了更改标识符名称之外,没有实际的方法可以对其进行模糊处理。
一直以来,确定的黑客无论如何都会对您的代码进行反向工程,无论您是否对其进行模糊处理(混淆或二进制代码只需要更长时间进行逆向工程)。许可算法也是如此。
答案 4 :(得分:-1)
是的,.NET是一个可行的商业平台,但我们(意为OffByZero,我共同创立的公司)强烈建议您使用混淆器来处理.NET和Java中的敏感代码。来自Developing for Software Protection and Licensing:
如果您使用的是.NET或Java, 运送非混淆的应用程序 几乎等同于运输 源代码表格。如果你担心的话 关于内部的知识产权 你的代码(尤其是你的代码) 以某种方式与设备连接 那可能会暴露商业秘密) 你需要使用高质量的混淆器。
...
重要的是要注意不 软件保护解决方案可以 保证100%牢不可破; 从根本上说,一旦你的二进制文件打开了 另一台机器,你放弃了 完全控制它。目标应该 是使用高品质的软件 许可证制度与 混淆使它变得非常困难& 破解软件非常耗时, 从而充分提高了标准 很高,以保护您的收入。