大家都知道 ASP.NET 生成的 DLL 只是中间语言,用很多工具,比如 .NET Reflector 就可以看到源代码。
保护源代码,有人用混淆工具,将变量命名为 a、b、c 这种人看起很累的名称,比如 Dotfuscator 这个工具就很常用,而且 Visual Studio 中已经在菜单“工具”中集成了基础版。
而有时候,我们对源代码的保护倒不是特别迫切,倒是希望客户不要更改我们的代码,比如:授权使用,利用不对称加密,客户看到了源代码也只有公钥,没有私钥,就没办法算出注册码。
但是客户有一招,可以自己改 DLL,将验证授权使用这段代码去除,然后用新的 DLL 覆盖老的 DLL,照样达到了破解的目的。
但是开发公司也是有法避免客户修改的,就是用签名/强命名。
选中需要保护的项目,按 Alt + Enter 键,进入属性页面,切换到签名标签:
自己新建一个强名称密钥文件,这个文件要保密,然后重新生成,DLL 就受保护了。
当 DLL 已经签名:
当 DLL 没有签名: