问各位大虾一个问题,我们知道强命名程序集可以防篡改,也就是说我用一个私密钥加密后只有使用一个公密钥才能安装这个程序集.也就是所谓的在web.config文件中添加引用.如果我篡改过这个程序集GAC就无法安装这个程序集.那么问题是,书上只有说是在添加程序集引用或加载的时候进行希哈值比较.那么如果我要执行的时候呢?当程序调用Main()方法执行的时候.是否还需要一个对应的密钥进行希哈值比较?是不是就是在程序编译的时候实现?
[assembly: Guid("86b0dcd7-0dd5-41a7-b98b-94503f16f8d8")]
那如果是这样的话我们所使用的混淆器的作用难道就是为了加密字段密码或者算法的吗?因为其他的程序想要引用我们写的程序几乎会被GAC所否决掉.也就是说别人只能按原样重新写一个接口才能使用原程序的资源,(如数据库等).谢谢大虾,,如果回答是肯定的那我就知道原因了,如果不是请指明原因,小弟拜谢.

解决方案 »

  1.   

    刚刚我又做了一个实验,,希望大家重视一下这个知识产权保护的问题.
    我用的是vs2008,不知道是否自动生成的是不是强命名程序集.但是我在反IL汇编后修改il文件再编译回exe文件后确实
    是可以立即修改原程序.而.il文件中好象还有公钥// Metadata version: v2.0.50727
    .assembly extern mscorlib
    {
      .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
      .ver 2:0:0:0
    }
      

  2.   

    强命名应该是新建一个key文件
    与guid无关guid不是在与com相互调用时用的么