就在几分钟前,我读到有许多免费的工具,可让您将 C# .exe 转换回 VB 解决方案。这意味着可以查看、编辑和重新编译/重新分发我的专有代码。有没有办法防止这种情况?
5 回答
简而言之,您需要使用Obfuscation。仅举几例。
- 点熔器
- 混淆器
- 溜冰者(免费软件)
- 部署 LX CodeVeil
- Plus Visual Studio 附带了一个轻量版的 Dotfuscator。
您可以阅读这篇 MSDN文章,其中包含有关如何混淆代码的建议。
您可以使用混淆器.. Salamander是 .NET 的此类工具之一...
Confuser是另一个免费的 .NET 混淆器。它是用 C# 开发并使用 Mono
您可以使用 mono 将其编译为本机二进制文件,只需 google 即可。
除了混淆您的 .NET 程序集之外,您还可以将敏感函数/组件编码到本机 C++ 中,将其包装在 C++/CLI 中并与 .NET 一起使用。
即使进行了混淆,JIT 编译器最终也需要查看 IL 代码,这只是让反编译变得更加困难。
混淆器是一个不错的选择,因为它增加了人们查看、编辑、重新分发等代码的努力。
虽然这些并不能从物理上保护您的代码,但它们可以防止反编译代码的行为:专利、版权和许可等法律机制。
反编译或逆向工程是一场经济斗争。您是否值得混淆您的代码(可能与反射“陷阱”发生冲突)与有人进行逆向工程(几乎没有上下文)而不是模拟或重写是否值得?
对此答案的评论,https://stackoverflow.com/a/1988467/64348,几个人同意,表明混淆不会阻止回到原始(或原始的一些足够接近的版本)代码。混淆只是可逆翻译的替代品,除了一些有用的上下文外,不需要真正的密钥。