zoukankan      html  css  js  c++  java
  • 强名称(2)引用强名称签名的程序集

    强名称(2)引用强名称签名的程序集

    引用强名称程序集的过程对我们来说都是透明的,无需做额外的工作。可以通过这种方式来检验强名称程序集的作用。

    首先创建一个类库项目StrongNameReferenceLib,对其进行强名称签名。

     

     

    9-16引用强名称程序集

    接下来修改之前创建的StrongName项目,让它引用StrongNameReferenceLib项目(如图9-16),调用其GetHello方法。

    StrongNameReferenceLib项目的主要代码如代码清单9-6所示。

    代码清单9-6  StrongNameReferenceLib项目主要代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace StrongNameReferenceLib
    {
        public class 
    Class1
        {
            public static string GetHello()
            {
                return 
    "Hello";
            }
        }
    }

    修改后的StrongName项目代码如代码清单9-7所示。

    代码清单9-7 StrongName项目代码

    using System.Text;
    using System.Reflection;
    using StrongNameReferenceLib;
     
    namespace StrongName
    {
        
        class 
    Program
        {
            static void Main(string[] args)
            {
              
    Console.WriteLine(  Class1.GetHello());
               
                
    Console.Read();
            }
        }
    }

    重新编译StrongName项目,得到新的StrongName.exe文件。使用ILDasm打开StrongName.exe文件,查看它的程序集清单,如图9-17所示。

     

     

    9-17 StrongName.exe程序集清单

    从程序集清单可以看到,它引用了两个具有强名称签名的程序集:mscorlib和(新创建的)StrongNameReferenceLib,对两个程序集分别添加了版本和publickeytoken标识。

    下面去除StrongNameReferenceLib的强名称签名,重新编译该项目,但不重新编译StrongName项目,而用新生成的StrongNameReferenceLib.dll替换StrongName.exe之前引用的StrongNameReferenceLib.dll,看看会发生什么事情。结果如图9-18所示。

     

     

    9-18StrongName项目替换dll之后结果

    从图9-18的异常信息可以看到,StrongName项目找不到匹配的程序集。原因在于在StrongName的程序集清单中存储着PublicKeyToken值,而没有强名称签名的项目是没有该属性的。

     

     -----------------------------------注:本文部分内容改编自《.NET 安全揭秘》


    作者:玄魂
    出处:http://www.cnblogs.com/xuanhun/
    原文链接:http://www.cnblogs.com/xuanhun/ 更多内容,请访问我的个人站点 对编程,安全感兴趣的,加qq群:hacking-1群:303242737,hacking-2群:147098303,nw.js,electron交流群 313717550。
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    关注我:关注玄魂的微信公众号

  • 相关阅读:
    mac 修改Python版本
    idea 系列破解
    史上最完全Mac安装Scrapy指南
    mac下brew安装mysql
    IOS: 网络图片缓存
    欢迎访问我的git
    学习笔记
    2019-2020-1 20191327《信息安全专业导论》第十二周学习总结
    2019-2020学年 20191327《信息安全专业导论》第十一周学习总结
    2019-2020学年 20191327《信息安全专业导论》第十周学习总结
  • 原文地址:https://www.cnblogs.com/xuanhun/p/2559789.html
Copyright © 2011-2022 走看看