1. 签名DLL 首先需要一个密钥文件,后缀为.snk
    2. 密钥文件使用sn.exe 创建: sn.exe /k MySingInKey.snk 
      1. sn.exe 工具的具体使用,可以通过 sn.exe /h 或 sn.exe /? 来查阅帮助文档
    3. 签名自己的DLL 
      1. 打开VS工程,进入工程设置,里面有SingIn(签名)的table 
      2. 选中Sign the assembly,再选择对应的密钥文件即可
      3. 如果没有创建密钥文件,在这里直接创建密钥
    4. 签名第三方的DLL 
      1. 如果第三方DLL未签名的话,我们可以使用先用工具ILDASM.exe将该DLL反汇编生成IL文件
      2. 然后再使用工具ILASM.exe将该IL文件重新编译成C# DLL 
        1. ILASM.exe 支持/KEY命令,在二次编译的时候使用该命令,带上自己的密钥文件,这样就可以保证二次编译出来后的DLL是strong name 的DLL
      3. 操作示例 
        1. 第三方未签名DLL:c:\MyTest\ThirdTool.dll
        2. 反编译: ildasm.exe c:\MyTest\ThirdTool.dll /out=c:\MyTest\MyDasmThirdTool.il
        3. 带签名再编译:ilasm.exe c:\MyTest\MyDasmThirdTool.il /key=MySingInKey.snk /output=c:\MyTest\MySigningThirdTool.dll 这样生成后的就是一个带签名的第三方DLL
      4. 注意事项 
        1. 如果第三方DLL反编译后带resource文件(.resx),那么二次编译的时候记得使用/resource命令带上该resource文件 
          1. ilasm.exe c:\MyTest\MyDasmThirdTool.il /resource=c:\MyTest\ThirdTool.resx /key=MySingInKey.snk
      5. 不建议强制签名一个未签名的第三方DLL 
        1. 一旦强制将一个第三未签名的DLL签名后,那么就意味着所有这个第三DLL所依赖的其他DLL也必须都是签名的,即使二次编译成功,运行时也会导致运行时错误。
        2. 即使当前版本的第三方DLL没有依赖未签名的其他DLL,但不意味着在后续升级版本中不会有此问题。
        3. 从安全性,版权等方面考虑,我们在开发一个要求签名DLL的项目时,应该慎重选择导入未签名的第三方DLL。
      6. 其他 
        1. ILDASM.exe 和 ILASM.exe工具的具体使用,可以使用 /? 或者 /h 命令查看帮助文档,系统也自带有对应.chm 使用说明文件
        2. ILDASM.exe 和 ILASM.exe 不一定在同一个目录下

原文链接:http://blog.csdn.net/u013813838/article/details/52886527

签名DLL的更多相关文章

  1. C# 带签名dll破解

    首先申明,本文只是从技术的角度来分析下怎样破解带签名的C#写的dll文件.大家如有遇到收费的软件或类库还是应该去购买正版,程序员何苦为难程序员呢. 不带签名的破解 不带签名的dll文件的破解很简单,通 ...

  2. C# 给主程序签名及第三方dll强签名操作

    1.给主程序添加签名   添加完成后会自动生成一个*.pfx文件.     2.给第三方程序添加强签名方法:   本文以WAPIWrapperCSharp.dll为例,使用vs Tools下的工具命令 ...

  3. 给主程序签名及第三方dll强签名

    给主程序添加签名   添加完成后会自动生成一个*.pfx文件.     给程序添加强签名方法:   本文以Quartz.dll为例,使用vs Tools下的工具命令.   打开命令工具是这个样子,   ...

  4. net dll 重新签名

    已经有强签名的dll或exe程序无法引用无签名的dll,这时候就需要对dll进行签名,签名的步骤如下: 为没有源码的DLL文件添加强名称 如果项目中引用了其他没有源码的dll文件,并且此dll文件是没 ...

  5. makecert 制作数字证书 给DLL加一个数字签名

    声明:文章整理自互联网 我仅需要给dll添加(替换)一个签名,所以我只看了第一步和第三步,其余的部分我没有测试,不能保证内容的是否正确. 看了很多关于DLL加签名的教程 大多是错误的 完全无法正常走下 ...

  6. 为C# as 类型转换及Assembly.LoadFrom埋坑!

    背景: 不久前,我发布了一个调试工具:发布:.NET开发人员必备的可视化调试工具(你值的拥有) 效果是这样的: 之后,有小部分用户反映,工具用不了(没反应或有异常)~~~ 然后,建议小部分用户换个电脑 ...

  7. Microsoft.Net中数字签名技术

    概 述:本文以Microsoft.Net中创建签名的CAB文件为例,说明如何创建签名文件,从而使你的代码能够安全的在INTERNET上公布.希望能起到抛转引玉的作用. keyword:数字签名,Act ...

  8. windows服务参考

    dll文件 aaclient.dll 何时何地都可以访问客户端 accessibilitycpl.dll 轻松访问控制面板 acledit.dll 访问控制列表编辑器 aclui.dll 安全描述符编 ...

  9. C# 动态修改dll的签名 以及修改引用该dll文件的签名

    在读取RedisSessionStateProvider配置 提到用mono ceil 来修改程序集以及它的签名,里面GetPublicKey 和GetPubliKeyToken 方法里面那个字符串的 ...

随机推荐

  1. Redis学习基础二

    回顾:上一基础中已了解 ( 什么是redis .redis 的三大特点.安装,和数据配置) 接下来浅尝Redis的数据类型,时间煮雨...... 一.Redis数据类型 redis支持五中数据类型(s ...

  2. 不知道怎么改的尴尬R语言的ARIMA模型预测

    数据还有很多没弄好,程序还没弄完全好. > read.xlsx("H:/ProjectPaper/论文/1.xlsx","Sheet1") > it ...

  3. gdb调试4--回退

    加入你正在使用GDB7.0以上版本的调试器并且运行在支持反向调试的平台,你就可以用以下几条命令来调试程序: reverse-continue 反向运行程序知道遇到一个能使程序中断的事件(比如断点,观察 ...

  4. Docker图形界面管理之DockerUI

    DockerUI DockerrUI是一个基于Docker API提供图形化页面简单的容器管理系统,支持容器管理.镜像管理. 1.1 下载镜像 docker pull abh1nav/dockerui ...

  5. P2042 [NOI2005]维护数列 && Splay区间操作(四)

    到这里 \(A\) 了这题, \(Splay\) 就能算入好门了吧. 今天是个特殊的日子, \(NOI\) 出成绩, 大佬 \(Cu\) 不敢相信这一切这么快, 一下子机房就只剩我和 \(zrs\) ...

  6. 第10章-Vue.js 项目实战

    一.本节内容 掌握项目环境中路由的配置方法 ***** 熟练掌握编写单文件组件的编写 *** 能够使用swiper.js进行轮播图组件的封装 能够使用axios进行数据请求 二.webpack项目的目 ...

  7. day1 java基础语法

    一.关键字:java关键字有:abstract boolean break byte case catch char class const continue default do double el ...

  8. 科学计算三维可视化---TraitsUI(View定义界面)

    View定义界面 使用View来自定义界面 class ModelManager(HasTraits): model_name = Str category = Str model_file = St ...

  9. bootstrap-switch与angularjs结合使用

    bootstrap-switch和angularjs结合使用 由于angularjs的dom操作总是先执行,导致$(input[name="switch"])找不到元素,所以使用d ...

  10. 数学建模 TSP(旅行商问题) Lingo求解

    model: sets: cities../:level; link(cities, cities): distance, x; !距离矩阵; endsets data: distance ; end ...