如果我创建了一个C#应用程序,它有一个限制访问数据库的工作站数量的机制,那么是什么阻止某人取消应用程序,更改此机制的代码,重新编译它然后在它们的系统上部署它?
答案 0 :(得分:9)
可能没什么,但是你可以增加努力,并减少这类事情的好处:
答案 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)
您可以通过签名来强制命名程序集。