NET 强签名

强签名:

1. 可以将强签名的dll注册到GAC,不同的应用程序可以共享同一dll。

2. 强签名的库,或者应用程序只能引用强签名的dll,不能引用未强签名的dll,但是未强签名的dll可以引用强签名的dll。

3. 强签名无法保护源代码,强签名的dll是可以被反编译的。

4. 强签名的dll可以防止第三方恶意篡改。

强签名的方法:

1. 有源代码:

1.1 使用vs tool command:snk –k mykey.snk 生成签名公钥。

1.2 将公钥加入项目中,并设置项目属性,设置签名公钥

1.3 重新生成项目。

2. 没有源代码。

2.1 创建强签名键:

sn.exe -k key.snk

2.2 反汇编dll为il

ILDASM.exe SomeLibrary.dll /OUTPUT=SomeLibrary.il

该指令会反汇编该dll并生成SomeLibrary.il,如果该dll含有嵌入的resource,

则会有SomeLibrary.res文件产生,并有相应的嵌入资源文件产生。

2.3 重新汇编为dll

ILASM.exe SomeLibrary.il /DLL /OUTPUT=SomeLibrary.dll /KEY=key.snk

如果有嵌入的资源文件,则需要加上 /RESOURCE=SomeLibrary.res

强签名的dll与未签名的在反编译后的区别:

未签名的:

强签名的:

时间: 2024-12-26 10:13:28

NET 强签名的相关文章

VS报:"dll标记为系统必备组件,必须对其进行强签名"错误

问题: VS生成程序时,报“要将程序集“XX.dll”标记为系统必备组件,必须对其进行强签名.”错误. 解决方法: 1)在报错的解决方案中找到一个可以发布的项目(引用该XX.dll的项目未必可以发布): 2)右击该项目,选择“属性”: 3)选择“发布”: 4)点击“应用程序文件”按钮: 5)找到该“XX.dll”,将发布状态有“系统必备”改为“包括(自动)”: 6)再次运行成功. 参考: 1. 首先说明一下:X是某程序集的名称,相当于数学中的未知数X. 看到这样的提示,开始我以为是把程序集X的发

C# 依赖同一个强签名程序集的不同版本

最近遇到一个问题就是要在同一个项目中同时使用Newtonsoft.Json.dll的不同版本.在网上搜索了下解决方案,基本都是在app.config或web.config中进行设置. 这次我亲自试验了一下,基本能解决我的问题.在此记录一下,以后参考.app.config的配置如下图所示: <codeBase>元素中的href属性可以使用相对路径. 至于如何获取强签名程序集的publicKeyToken,我知道的方法有有两种: 1.打开visual studio command prompt :

程序集强签名

1.特点 1.1.强签名的程序集可以注册到GAC(全局应用程序集缓存),不同的应用程序可以共享同一个dll. 1.2.强签名的库(应用程序)只能引用强签名的库.非强签名的库(应用程序)没有限制,既可以引用强签名的库,也可以引用非强签名的库.(实际测试,强签名的应用只引用非强签名的程序集但不使用是可以的,只要使用了引入库的东西,那就会报:引用的程序集没有强签名) 1.3.强签名无法保护源代码,但能防止dll被第三方篡改. 1.4.能防止dll冲突. 2.方法 --如果有源代码 项目 -> 右键 -

程序集强签名和安装程序数字签名

一.程序集强签名 这个是.net 中的概念,为了保证程序集本身不被篡改,即保证这个程序集是你开发的,同时强命名使不同的程序可以指定不同的程序集版本,不影响其他应用程序.要对程序集进行强签名,无需使用购买的代码签名数字证书,用.NET提供的sn工具就可以生成snk文件,你只要保存好这个文件,就可以保证你的程序集的签名. 方法1:在SDK中创建强名称签名的程序集(Sn.exe),可以生成密钥对.我们使用如图9-4的命令生成一个新的密钥对并保存到本地文件test.snk中. 签名时使用编译器执行 CS

给第三方dll强签名

假若我们要对第三方控件或者是其他的没有源代码的DLL文件想做类似的处理,增加强名称签名,怎么处理,是很多人都会面对的问题. 步骤: 1.首先采用反汇编工具ildasm生成中间语言. ildasm myTest.dll /out:myTest.il 生成的结果包括myTest.il文件和myTest.res文件 2.采用汇编工具ilasm重新生成我们自己的dll文件 ilasm的具体用法可参照MSDN的帮助,其中有一个参数/key即可为我们重新生成新的签名文件 ilasm /dll /res:my

程序集生成失败 -- 引用的程序集“ThoughtWorks.QRCode”没有强名称,为没有源码的程序集强签名

进入sdk提示符界面,依次输入如下指令 sn -k ThoughtWorks.QRCode.snk ildasm ThoughtWorks.QRCode.dll /out=ThoughtWorks.QRCode.il ilasm ThoughtWorks.QRCode.il /dll /resource=ThoughtWorks.QRCode.res /key=ThoughtWorks.QRCode.snk /optimize sn -v ThoughtWorks.QRCode.dll

如何:使用强名称为程序集签名

可通过许多方法为程序集签署强名称: 在 Visual Studio 中,通过使用项目的“属性”对话框中的“签名”选项卡.这是为程序集签署强名称的最简单且最方便的方法. 通过使用程序集链接器 (Al.exe) 将 .NET Framework 代码模块(.netmodule 文件)与密钥文件链接. 通过使用程序集特性将强名称信息插入代码中.你可以使用 AssemblyKeyFileAttribute 或 AssemblyKeyNameAttribute 特性,具体取决于要使用的密钥文件所在的位置.

.NET程序集强命名删除与再签名技术 源代码剖析

如果你想去除一个程序集的强签名(strong name),目前为止可以有两个途径 1  反编译为IL代码,删除签名部分,再编译为程序集 2  应用Re-Sign程序,直接对一个程序集再签名 生成和读取强命名 先来看,如何生成.NET的签名文件,调用命令SN传入参数. 下面的代码读取该文件, FileStream keyPairFile = File.OpenRead(“key.sn”); this.byte_2 = new StrongNameKeyPair(keyPairFile).Publi

DotNetBar for Windows Forms 14.0.0.3_冰河之刃重打包版原创发布

关于 DotNetBar for Windows Forms 14.0.0.3_冰河之刃重打包版 --------------------11.8.0.8_冰河之刃重打包版---------------------------------------------------------基于 官方原版的安装包 + http://www.cnblogs.com/tracky 提供的补丁DLL制作而成.安装之后,直接就可以用了.省心省事.不必再单独的打一次补丁包了.本安装包和补丁包一样都删除了官方自带