有人可以反编译我的C#应用​​程序并覆盖保护机制吗?

时间:2011-11-28 09:01:16

标签: c# decompiling

如果我创建了一个C#应用程序,它有一个限制访问数据库的工作站数量的机制,那么是什么阻止某人取消应用程序,更改此机制的代码,重新编译它然后在它们的系统上部署它?

5 个答案:

答案 0 :(得分:9)

可能没什么,但是你可以增加努力,并减少这类事情的好处:

  1. 创建一个简单易用的许可证系统。
  2. 不要过度充电 为您的产品。
  3. 签署你的程序集(虽然这可以 去除)。
  4. 隐藏/模糊代码中的工作站数量 (例如,使用八进制数并且不要使错误消息容易 在代码中找到)。
  5. 模糊整个组件(一个好的组件会 防止它被完全反编译。)

答案 1 :(得分:3)

Reflector之类的工具可以反编译您的C#程序,然后Reflector.FileDisassembler甚至可以恢复您的来源。

我强烈建议您阅读有关.NET混淆和反编译的HRH Jon Skeets文章: http://www.yoda.arachsys.com/csharp/obfuscation.html

对于.net(甚至是有类似问题的Java),有obfuscators。 Visual Studio附带了Dotfuscator的社区版本,但是,有一个 catch

MSIL一旦编译就会重新生成,但是当黑客反编译时,它很难阅读。但是,当有异常时,堆栈跟踪也会显示混淆代码,所以现在程序更难以调试。

付费版本有一个XML Map,可以将异常映射到正确的类,因此可以知道错误所在的类/方法。

与Jon的文章描述的一样,它是一个平衡问题,没有软件是真正安全的。

答案 2 :(得分:1)

答案 3 :(得分:0)

您可以使用混淆器来防止这种情况发生。混淆器会使你的字节代码变得非常混乱和不可读,这样就很难对程序进行反编译并找到授权代码。 但是,当然,与任何其他计划一样,这种保护可以被打败。

答案 4 :(得分:0)

您可以通过签名来强制命名程序集。