.Net程序集强签名详解

摘要:
强签名:1.您可以将强签名的dll注册到GAC,不同的应用程序可以共享同一个dll。强签名方法:1.活动代码:1.1使用vstool命令:snk–kmykey。snk生成签名公钥。

强签名:

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 将公钥加入项目中,并设置项目属性,设置签名公钥

image

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与未签名的在反编译后的区别:

未签名的:

image

强签名的:

image

更多详细信息参考 StringNaming

http://windowsdevcenter.com/pub/a/dotnet/2003/04/28/strongnaming.html

免责声明:文章转载自《.Net程序集强签名详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇设置电脑中的某个程序不弹出UAC用户控制提示的方法特征选择 (feature_selection)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

lib和dll文件的初了解

lib,dll这两样东西在许多编程书中都很少出现,但实际工程中,这两样东西的作用确实非常重要,我觉得c++程序员都有必要了解这两样东西。 首先总共有 动态链接 和 静态链接 这两种链接方式 |静态链接:静态链接使用静态链接库lib,且只在源代码编译时用到(编译期)。编译生成静态库时会生成一个.lib文件.lib里面装载了各种类,函数的实现。这种静态链接的...

【域渗透】域权限维持

一、ssp密码记录 ssp(security Support Provider),一个用于身份验证的 dll,系统在启动时 SSP 会被加载到 lsass.exe 进程中,由于 lsa 可扩展,导致在系统启动时我们可以加载一个自定义的 dll,一个用于记录所有登录到当 前系统的明文账号密码的 dll, 利用mimikatz 中mimilib.dll 文件。...

关于使用EmguCV出现 “无法加载 DLL“cvextern”: 找不到指定的程序” 的解决方法

http://blog.csdn.net/cdjcong/article/details/8444191 查找了网上的一些说法,都是说没有设置好路径,或者未将DLL文件复制到Debug文件夹下,但是我发现当我把cvextern.dll文件加入Debug文件夹下,同样会出现此错误。 经过多次试验,终于解决了此问题,解决方法如下: 将EmguCV安装目录下的B...

C#中的release和debug模式

以下内容来源:https://www.cnblogs.com/rgjycs/p/9254332.html 在程序调试时的debug和release 网上有如下的描述:Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好...

Java(使用JNA)调用DLL库与C#调用DLL库的对比

前言:在项目中经常使用DLL库对硬件进行操作,在发卡过程中使用频率尤为多,今天就Java与C#中调用DLL库的使用区别做一个介绍,本文着重具体的代码编写,具体过程看以下代码。 前提条件: 笔者已经封装了一个DLL库名为:testdll.dll(具体封库细节,请查阅相关资料),库中包含两个函数: 注:Add为两个整数相加,Sub为两个整数相减。 1.C#...

C# 利用反射动态加载dll

笔者遇到的一个问题,dll文件在客户端可以加载成功,在web端引用程序报错。解决方法:利用反射动态加载dll 头部引用加: using System.Reflection; 主要代码: Assembly asm = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory+ "/DeclareDLL/...