有一段时间我们使用的是名为CodeVeil的工具。我只是想知道那里是否有更好的选择。
编辑:在更多人误解这个问题之前,我知道一个坚定的破解者可能会击败任何这些工具。我不是太在意他们。这些工具只是为了阻止“随意破解”,并阻止人们窃取我们公司的IP。如果他们足够好,可以通过一个不错的工具,他们可能对窃取我们糟糕的代码不感兴趣:-P
答案 0 :(得分:5)
我在Xenocode Postbuild上取得了很大的成功。该工具可以混淆.NET程序集,保护agaist Reflector反汇编,将.NET程序集组合成单个可执行文件(“虚拟化”),甚至将.NET应用程序编译为不需要安装.NET运行时的独立可执行文件。
答案 1 :(得分:4)
我仍然不相信这些工具的价值。没有任何技术解决方案能够比法律保护,例如许可证,商标,专利,版权等更好地防止逆向工程......
.NET确实是大型透明源移动。相反,您可以围绕您的IP构建使用条款,例如许可和版权。
答案 2 :(得分:4)
编译.NET应用程序会产生包含大量元信息的输出程序集。此信息使得重建非常接近原始代码的内容变得非常容易。一个名为.NET Reflector的优秀免费工具可以用来做到这一点,并且是一种检查基类库如何工作的流行方法。下载并使用该工具查看重建的C#/ VB.NET版本的程序集内容。
如果您是一个商业组织,那么您不希望人们发现您可以轻松查看代价高昂的代码。一种流行的方法是使用Obfuscation以不改变其运行方式但却难以理解的方式对内容进行加扰。混淆使用诸如重命名变量和方法之类的技术。制定方法'a1','a2','a3'的目的比原来的'GetName','UpdateInterestRate'和'SetNewPassword'要难得多。
因此,使用模糊处理会让人们更难理解您的代码正在做什么以及它使用的算法。然而,这并不是不可能的。同样,C ++代码仍然可以由愿意花时间处理二进制文件的汇编程序专家理解,MSIL专家最终可以计算出混淆代码。但它增加了障碍,很少有人会费心去尝试。
答案 3 :(得分:3)
老实说,除了用你提到的工具进行一些混淆之外,你不能做很多事情。除了脚本命令是二进制文件并且称为IL之外,.NET只是脚本语言的一步。这有点过于简化,但现实并不太远。使用Reflection编写的任何好的程序都可以用于反向工程.NET应用程序,或者如果你有足够的知识,那么一个好的十六进制编辑器。
答案 4 :(得分:2)
有几种流行的混淆工具,包括Dotfuscation,它有一个随Visual Studio 2005和2008一起提供的“轻型”版本。它们有一个Pro版本,不仅仅是变量和函数名称重命名。但是,代码仍然是可见的,它只是加扰了一点,使得更难以阅读和理解软件的逻辑流程。
另一种技术是使用其他程序来加密程序,并在运行时解密它。然而,这也不是一个完美的解决方案。事实上,如果有足够的时间和精力,那么我所知道的没有一个完美的解决方案会阻止一个坚定的工程师对软件进行逆向工程。
真正归结为确定保护级别会使得劝阻休闲黑客变得非常困难,并使其尽可能昂贵地进行逆向工程,因此至少逆向工程需要付出代价。时间或金钱,或理想情况下,两者。逆向工程成本越高,愿意投入的人数就越少。这是混淆的重点。
有些人认为使用像C ++编译器那样编译为本机代码的编译器会阻止这种逆向工程,但事实并非如此。一个好的反汇编程序将允许甚至纯二进制可执行文件进行逆向工程,因此,不存在完美的解决方案。如果计算机可以读取并执行它,则可以扫描和跟踪计算机正在使用的内存,从而绕过所有加密,混淆或任何其他方法使代码不在确定的工程师手中的尝试。
答案 5 :(得分:2)
很抱歉复活旧帖子,但我认为Eziriz的.NET Reactor非常出色。
事实上,我自己使用它来处理所有.net应用程序,显然没有可以反编译受.net reactor保护的程序的现有工具。更多详细信息可以在信息页面http://www.eziriz.com/dotnet_reactor.htm找到。使用试用版和.net反射器进行测试,您可以亲眼看看。
答案 6 :(得分:1)
免责声明:我不为SmartAssembly的制造商RedGate工作。我只是一个非常满意的客户,他找到了一个好的,经济实惠的解决方案。
选择非常简单,选择SmartAssembly!不要浪费你的时间或金钱与市场上的其他混淆器。我在评估竞争产品的非计费时间方面花了更多的钱。它们都有致命的缺陷,几乎无法调试。 SmartAssembly是一个易于使用,记录良好,抛光的应用程序,具有出色的支持。在他们的论坛上发布一个问题,并期望实际开发人员能够快速得到答案。
SmartAssembly不仅仅是一个混淆器。它具有一系列功能,包括内置的,高度可定制的崩溃报告生成器,您的客户可以自动向您发送电子邮件。您可以在自己的服务器或红门服务器上查看这些报告。当您进行beta测试或向客户发布产品时,我无法告诉您这是多么有用。它还会生成调试器文件,以便您可以调试与您的产品相关的任何发布后问题。
如果您要提供商业应用程序,将钱花在一个体面的混淆器上是有意义的。这里一个糟糕的选择可能会损害您的知识产权,或者更糟糕的是让您经历几天可怕的调试。与SmartAssembly的成本相比,这会花费多少?
答案 7 :(得分:-2)
我听说Obfusticator很好;它用在.Net Reflector上。
答案 8 :(得分:-2)
另一个是Crypto Obfuscator - 它比其他人更实惠,并且有各种混淆和保护方法来阻止因果关系和不那么随意的黑客。