是否有办法(可靠且最好不是商业用途)阻止Reflector反映我的源代码???
谢谢, 阿迪
答案 0 :(得分:5)
没有。 Reflector会像.NET运行时一样查看程序集,以生成要执行的本机代码。您可能希望的最好的方法是obfuscate您的代码,并让(稍微)让读者更难理解。
找到执行混淆的一些优点和缺点答案 1 :(得分:4)
没有办法阻止.net代码的反编译,据说一个好的混淆器会使反射代码难以读取,其中一些像dotfuscator会阻止反射器显示C#代码;但是,你总能看到IL。
Dotfuscator中的一个选项是使用不可打印的名称(Reflect on reflector)这使得反编译极其困难的恕我直言。
Microsoft曾经出售软件保护和许可服务,该服务将对IL进行加密,并使用与加密密钥绑定的自定义VM,以防止使用传统工具进行反映。这会产生巨大的性能成本,但如果您想要保护关键算法或许可代码,那就太好了。
答案 2 :(得分:1)
尝试dotfuscator。 2005/2008附带社区版。没有重新构建您的代码(痛苦),即.NET组件(公共)调用的ATL / COM对象(私有)。
选择是你的。
答案 3 :(得分:0)
如果您正在寻找一个好的混淆器,请尝试RemoteSoft。
答案 4 :(得分:0)
不久前有反反射技巧是有效的,因为.NET反射器无法将一个特定的IL指令转换为c#代码,但是它们已经发布了补丁并且乐趣已经结束。
答案 5 :(得分:0)
Xheo Codeveil也是一款出色的产品。他们还有一个许可解决方案(用于创建序列号等,然后通过您自己的激活服务器0激活它们
答案 6 :(得分:0)
免责声明:我不为SmartAssembly的制造商RedGate工作。我只是一个非常满意的客户,他找到了一个好的,经济实惠的解决方案。
选择非常简单,选择SmartAssembly!不要浪费你的时间或金钱与市场上的其他混淆器。我在评估竞争产品的非计费时间方面花了更多的钱。它们都有致命的缺陷,几乎无法调试。 SmartAssembly是一个易于使用,记录良好,抛光的应用程序,具有出色的支持。在他们的论坛上发布一个问题,并期望实际开发人员能够快速得到答案。
SmartAssembly不仅仅是一个混淆器。它具有一系列功能,包括内置的,高度可定制的崩溃报告生成器,您的客户可以自动向您发送电子邮件。您可以在自己的服务器或红门服务器上查看这些报告。当您进行beta测试或向客户发布产品时,我无法告诉您这是多么有用。它还会生成调试器文件,以便您可以调试与您的产品相关的任何发布后问题。
如果您要提供商业应用程序,将钱花在一个体面的混淆器上是有意义的。这里一个糟糕的选择可能会损害您的知识产权,或者更糟糕的是让您经历几天可怕的调试。与SmartAssembly的成本相比,这会花费多少?
答案 7 :(得分:0)
Reflector不使用Reflection来显示您的源代码。它使用.Net元数据(以众所周知的已发布格式)来做到这一点。
没有办法阻止这种情况,但你通过混淆你的程序集使它变得毫无意义。在混淆之后,重命名类/方法/字段,方法中的内联字符串被加密,方法调用被隐藏,方法控制流被加扰等等。所以,任何使用Reflector的人都会看到很多垃圾,而且无法理解它的大部分内容。
免责声明:我为Crypto Obfuscator
的开发人员LogicNP Software工作答案 8 :(得分:0)
或者,您可以使用本机C ++应用程序引导.Net应用程序。然后,您可以对所有.net dll文件进行模糊处理和加密。
使用bootstrap c ++应用程序将所有文件解密为基于内存的字节数组(物理自身的精确副本)。
我这样做的方法是将所有.net文件保存在一个扩展名为.DAT的加密文件中。 C ++代码将文件抓取到内存映射文件中,然后使用CLR托管API将我的Native C ++应用程序转换为.net应用程序,然后使用
加载Assembly.Load(字节[] ...)
所以在我的应用程序中,我避免创建一个.net EXE并使我的C ++应用程序成为EXE所以我的所有表单,控件等等都存在于.Net Dll中。