zoukankan      html  css  js  c++  java
  • 签名DLL

      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 
          VS2013 Signing C# project
        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:MyTestThirdTool.dll
          2. 反编译: ildasm.exe c:MyTestThirdTool.dll /out=c:MyTestMyDasmThirdTool.il
          3. 带签名再编译:ilasm.exe c:MyTestMyDasmThirdTool.il /key=MySingInKey.snk /output=c:MyTestMySigningThirdTool.dll 这样生成后的就是一个带签名的第三方DLL
        4. 注意事项 
          1. 如果第三方DLL反编译后带resource文件(.resx),那么二次编译的时候记得使用/resource命令带上该resource文件 
            1. ilasm.exe c:MyTestMyDasmThirdTool.il /resource=c:MyTestThirdTool.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

  • 相关阅读:
    python的模块future用法实例解析
    strcmp函数和memcmp函数的用法区别及联系
    esp8266 smartconfig-智能配网分析和使用及注意事项
    ubuntu 18.04 安装并配置adb
    Markdown的常用方法总结
    mac下使用minicom几个注意事项
    最强Linux shell工具Oh My Zsh 指南
    ESP8266源码分析--打印的基本用法
    atom 在Ubuntu 18.04 上安装及基本使用
    ubuntu 查看端口被占用并删除端口
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/8479902.html
Copyright © 2011-2022 走看看