title | date |
---|---|
程序集强签名 |
2017/02/21 14:47:10 |
1.1、强签名的程序集可以注册到GAC(全局应用程序集缓存),不同的应用程序可以共享同一个dll。
1.2、强签名的库(应用程序)只能引用强签名的库。非强签名的库(应用程序)没有限制,既可以引用强签名的库,也可以引用非强签名的库。(实际测试,强签名的应用只引用非强签名的程序集但不使用是可以的,只要使用了引入库的东西,那就会报:引用的程序集没有强签名)
1.3、强签名无法保护源代码,但能防止dll被第三方篡改。
1.4、能防止dll冲突。
--如果有源代码
项目 -> 右键 -> 属性 -> 签名:
勾选 Sign the assembly(签名程序集)
填写 key file name,如果勾选了密码保护key file,那么就输入密码。点击OK就创建好了签名文件。
将属性保存,然后再次编译,程序集就是强签名程序集了。
--如果没有源代码
1、首先创建一个签名key file,可以通过有源代码的方式,创建key file备用;也可以通过VS 控制台执行sn.exe -k D:\sn.snk
生成key。
2、将无源代码的dll,通过 ILDASM.exe MagicOrm.dll /OUTPUT=D:\MagicOrm.il
进行反汇编
注意:如果dll有资源文件,同时会生成MagicOrm.res文件
3、带上签名文件重新汇编为dll,如果有资源文件生成,也需要带上,命令:ILASM.exe MagicOrm.il /dll /output=D:\MagicOrm.dll /Key=sn.snk /Resource=MagicOrm.res