如何防止我的C#代码被反编译?

时间:2011-09-06 03:44:45

标签: c# decompiler piracy-prevention

  

可能重复:
  .Net Obfuscation
  Alternative for Obfuscation in the .NET world

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

5 个答案:

答案 0 :(得分:2)

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

  1. Dotfuscator
  2. Obfuscator
  3. Skater(免费软件)
  4. DeployLX CodeVeil
  5. Plus Visual Studio附带了Dotfuscator的简易版本。
  6. 您可以阅读此MSDN article,其中包含有关如何对代码进行模糊处理的建议。

答案 1 :(得分:1)

你可以使用混淆器。Salamander是.NET的一个这样的工具......

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

答案 2 :(得分:0)

您可以使用mono将其编译为原生二进制文件,只需谷歌搜索。

答案 3 :(得分:0)

您还可以将敏感函数/组件编码为本机C ++,将其包装在C ++ / CLI中,除了模糊.NET程序集之外还使用.NET。

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

答案 4 :(得分:0)

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

虽然这些代码不能在物理上保护您的代码,但它们可能会阻止反编译代码的行为:法律机制,如专利,版权和许可。

反编译或逆向工程是经济努力的一场战斗。您是否值得对您的代码进行模糊处理(可能与反射“陷阱”相冲突),是否值得对某人进行逆向工程(没有上下文)而不是模拟或重写?

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