当前位置:  开发笔记 > 编程语言 > 正文

你应该混淆商业.Net应用程序吗?

如何解决《你应该混淆商业.Net应用程序吗?》经验,为你挑选了4个好方法。

我正在考虑混淆商业.Net应用程序.但是选择,购买和使用这样的工具真的值得吗?混淆的二进制文件是否真的免于逆向工程?



1> Blair Conrad..:

您可能不必购买工具 - Visual Studio.NET附带了Dotfuscator的社区版本.此处列出了其他免费的混淆工具,它们可能满足您的需求.

混淆的二进制文件可能不会安全地进行逆向工程,就像你的自行车锁可能是易碎/可拾取的一样.然而,通常的情况是,一个小的不便足以阻止代码/自行车窃贼.

此外,如果有时间在法庭上主张您对一段代码的权利,被视为努力保护它(通过混淆它)可能会给你额外的分数.:-)

但是你必须考虑缺点 - 使用混淆代码的反射会更加困难,如果你使用像log4net这样的东西来根据所涉及的类的名称生成部分日志行,这些消息就会变成更难以解释.


此外,为了保留API,公共和受保护类型和成员的名称不会被混淆,因此即使在混淆之后,堆栈跟踪的某些部分也将保持不变.

2> Jay Bazuzi..:

请记住,混淆只是代码的临时检查员的障碍.如果有人认真考虑你所写的内容,那么你将很难阻止他们.

如果您的代码中有秘密(如密码),那么您做错了.

如果您担心某人可能会根据您的想法制作您自己的软件,那么通过提供客户需要的新版本,技术支持以及成为他们的合作伙伴,您将在市场中获得更多的运气.好的生意赢了.



3> RickL..:

在我们公司,我们评估了几种不同的混淆技术,但它们都有问题.最大的问题是我们非常依赖于反射,例如根据属性名称动态创建网格.

所以所有的混淆器都重命名,当然你可以禁用它,但是你会失去很多混淆的好处.

此外,在我们的代码中,我们有很多NUnit测试依赖于更多的方法和属性是公共的,这阻止了一些混淆器能够混淆这些类.

最后,我们选择了一款名为.NET Reactor的产品

它运作良好,我们没有任何与其他产品相关的问题.

"与混淆器相比,.NET Reactor通过将任何纯.NET程序集(用C#,VB.NET,Delphi.NET,J#,MSIL ......编写)与本机机器代码混合来完全阻止任何反编译.详细地说,.NET Reactor在潜在的黑客和你的.NET代码之间建立一个原生墙.结果是一个标准的基于Windows的,而不是MSIL兼容的文件.原始的.NET代码保持完整,受到本机代码的良好保护,对于窥探眼睛是不可见的.原始.NET代码不会随时复制到硬盘上.没有工具可以反编译.NET Reactor保护的程序集."


从包含Reactor的任何东西中的压缩.net应用程序中删除.net代码充其量是微不足道的.甚至还有几个教程.
并根据您的描述自动破坏任何便携性的好处.
根据您的描述,这似乎不会阻止确定的黑客使用x86反编译器.如果计算机可以执行它,那么代码可以被反编译.

4> Vinko Vrsalo..:

你实际上可以对其进行逆向工程这一事实并不会使混淆无效.它确实显着提高了标准.

未经模糊处理的.NET程序集将通过下载.NET Reflector向您显示所有源代码,突出显示所有内容.添加混淆,你将非常有意义地减少能够修改代码的人数.

这取决于你是在保护自己.如果您将其进行未经过模糊处理,您可以开源应用程序并从营销中获益.运输它混淆将只允许人们通过补丁相对容易地生成修改后的二进制文件,而不是能够窃取您的代码并创建一个直接的竞争对手.当然,取决于混淆器,从混淆代码中获取实际来源非常困难.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有