2

可能的重复: .NET 世界中混淆的
.Net 混淆
替代方案

就在几分钟前,我读到有许多免费的工具,可让您将 C# .exe 转换回 VB 解决方案。这意味着可以查看、编辑和重新编译/重新分发我的专有代码。有没有办法防止这种情况?

4

5 回答 5

2

简而言之,您需要使用Obfuscation。仅举几例。

  1. 点熔器
  2. 混淆器
  3. 溜冰者(免费软件)
  4. 部署 LX CodeVeil
  5. Plus Visual Studio 附带了一个轻量版的 Dotfuscator。

您可以阅读这篇 MSDN文章,其中包含有关如何混淆代码的建议。

于 2011-09-06T03:52:52.907 回答
1

您可以使用混淆器.. Salamander是 .NET 的此类工具之一...

Confuser是另一个免费的 .NET 混淆器。它是用 C# 开发并使用 Mono

于 2011-09-06T03:51:32.550 回答
0

您可以使用 mono 将其编译为本机二进制文件,只需 google 即可。

于 2011-09-06T03:50:41.450 回答
0

除了混淆您的 .NET 程序集之外,您还可以将敏感函数/组件编码到本机 C++ 中,将其包装在 C++/CLI 中并与 .NET 一起使用。

即使进行了混淆,JIT 编译器最终也需要查看 IL 代码,这只是让反编译变得更加困难。

于 2011-09-06T03:55:26.527 回答
0

混淆器是一个不错的选择,因为它增加了人们查看、编辑、重新分发等代码的努力。

虽然这些并不能从物理上保护您的代码,但它们可以防止反编译代码的行为:专利、版权和许可等法律机制。

反编译或逆向工程是一场经济斗争。您是否值得混淆您的代码(可能与反射“陷阱”发生冲突)与有人进行逆向工程(几乎没有上下文)而不是模拟或重写是否值得?

对此答案的评论,https://stackoverflow.com/a/1988467/64348,几个人同意,表明混淆不会阻止回到原始(或原始的一些足够接近的版本)代码。混淆只是可逆翻译的替代品,除了一些有用的上下文外,不需要真正的密钥。

于 2011-09-06T03:55:39.443 回答