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

本文关键字:覆盖 保护 机制 应用程序 我的 编译 | 更新日期: 2023-09-27 18:15:50

如果我创建了一个c#应用程序,该应用程序具有限制访问数据库的工作站数量的机制,那么阻止某人反编译该应用程序,更改该机制的代码,重新编译然后将其部署到他们的系统上的方法是什么?

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

可能什么都没有,但是你可以增加工作量,减少这种事情的好处:

  1. 创建一个简单,易于使用的许可证系统。
  2. 不要超载为你的产品。
  3. 为程序集签名(尽管这可以是删除)。
  4. 隐藏/模糊代码中工作站的数量(例如,使用八进制数,不要让错误信息容易出错在代码中查找)。
  5. 混淆整个组装(一个好的会防止它被完全反编译)。

是的,像Reflector这样的工具可以反编译你的c#程序,然后是Reflector。FileDisassembler甚至可以得到你的源代码。

我强烈推荐阅读HRH Jon Skeets关于。net混淆和反编译的文章:http://www.yoda.arachsys.com/csharp/obfuscation.html

对于。net(甚至有类似问题的Java)有混淆器。Visual Studio自带社区版本的Dotfuscator,但是,有一个捕获:

MSIL在编译后会重新生成,并且非常模糊,所以当黑客反编译它时,很难阅读。但是,当出现异常时,堆栈跟踪也将显示混淆的代码,因此现在程序更难调试。

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

就像Jon的文章所描述的,这是一个平衡的问题,没有一个软件是真正安全的。

你可以用一个强签名

您可以使用混淆器来防止这种情况。Obfuscator将使您的字节代码非常混乱和不可读,因此它将使反编译程序和查找授权代码变得相当困难。但是,当然,与任何其他程序一样,这种保护可以被攻破。

可以通过对程序集进行签名使其强命名。