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