强名称(3)强名称的脆弱性

通过前文共同体验了强名称对程序集的保护方式和原理,但是这种保护的强度到底有多大呢?能有效地防御恶意篡改者吗?先看下面的例子。

回到上篇文章的代码清单9-7,重新对StrongNameReferenceLib项目进行强名称签名,然后编译StrongName项目。在StrongName项目的bin目录里有StrongNam.exe和StrongNameReferenceLib.dll两个文件,然后使用ILDasm打开StrongNameReferenceLib.dll文件,转储为il文件,这里使用记事本打开il文件,如图9-19所示。

图9-19 StrongNameReferenceLib.dll的IL源码

在.il文件中找到三处代码:publickkeytoken、publickey和hash,把对应的内容都删除,再重新使用ILAsm编译,这时该程序集的强名称就被成功去除。

替换程序集的强名称方法基本相同。目前网络上有很多去除和替换强名称的工具,这里不再演示。

作者:玄魂

出处:http://www.cnblogs.com/xuanhun/

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/net/

时间: 2024-10-24 17:17:57

强名称(3)强名称的脆弱性的相关文章

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

引用强名称程序集的过程对我们来说都是透明的,无需做额外的工作.可以通过这种方式来检验强名称程序集的作用. 首先创建一个类库项目StrongNameReferenceLib,对其进行强名称签名. 图9-16引用强名称程序集 接下来修改之前创建的StrongName项目,让它引用StrongNameReferenceLib项目(如图9-16),调用其GetHello方法. StrongNameReferenceLib项目的主要代码如代码清单9-6所示. 代码清单9-6  StrongNameRefe

强名称(1)使用强名称保护代码完整性

强名称是由程序集的标识加上公钥和数字签名组成的.其中,程序集的标识包括简单文本名称.版本号和区域性信息(如果提供的话).强名称是使用相应的私钥,通过程序集文件(包含程序集清单的文件,并因而也包含构成该程序集的所有文件的名称和散列)生成的.Microsoft Visual Studio .NET 和在 .NET Framework SDK 中提供的其他开发工具能够将强名称分配给一个程序集.强名称相同的程序集应该是相同的. 通过签发具有强名称的程序集可以确保名称的全局唯一性.强名称满足以下要求: 1

win7下强名称验证失效-Win7下强名称验证失效?

问题描述 Win7下强名称验证失效? 首先编译一个带强名的程序集,然后用十六进制工具打开,修改任何一个无关紧要的字节,保存 好了,就会发现这个程序集在Win7下可以正常运行,在XP会报错 微软说:引自http://msdn.microsoft.com/zh-cn/library/cc713694(v=VS.90).aspx :从 .NET Framework 3.5 Service Pack 1 (SP1) 开始,在将程序集载入完全信任 AppDomain 对象(例如 MyComputer 区域

关于强名称和混淆器问题

问题描述 Hi大虾,我现在程序需要保护起来,用强名称以后程序在运行时报错,类似assembly没有签名的错误,应为我的项目是多工程的,主程序没有签名,其他使用了.还有使用自带的混淆器后,资源文件访问错误.我的程序会动态访问资源文件,结果他把资源给混淆了,访问地方没有改,有遇到的吗 解决方案 解决方案二:遇到过类型的问题,我用了强签名,混淆之后,总是说强类型验证失败,不知怎么解决解决方案三:找第三方软件混淆加密吧,很多的.

关于程序集生成失败 -- 引用的程序集没有强名称的解决办法

关于程序集生成失败 -- 引用的程序集没有强名称的解决办法   我在PetShop4程序中加入了一个业务外观层,然后在业务逻辑层(PetShop.BLL)引用这个程序集,点"生成",出现以下的错误:"程序集生成失败 -- 引用的程序集没有强名称",原因是PetShop.BLL是强命名程序集,强命名程序集不能用普通程序集造成的.         那么什么叫强命名程序集呢?我们知道,以前在Windows下开发程序时常会遭遇著名的"DLL Hell"问

强名称程序集(strong name assembly)——为程序集赋予强名称

         引言:                  在以前的项目开发中,在程序集中见到过一个后缀为*.snk的文件,当时看这个文件的图标,感觉可能是企业内部保护版权啥的一种方式.   一,强程序集解决了哪些问题? 1,唯一标识一个程序集 2,放置程序集被仿冒和被篡改. 3,可以部署到全局程序集缓存(GAC:GlobalAssembly Cache)中:在将强名称程序集不熟在GAC当中以后,强名称程序集也可以称为共享程序集(shared assembly) 二,强名称与GAC       

引用owc时出现“程序集生成失败 -- 引用的程序集“Interop.OWC10”没有强名称” (在线等)

问题描述 引用owc时出现"程序集生成失败--引用的程序集"Interop.OWC10"没有强名称"(在线等) 解决方案 解决方案二:该回复于2007-12-04 11:20:09被版主删除解决方案三:你自己的项目是不是强名称的,如果是先不要搞成强名称的.解决方案四:mark解决方案五:友情顶一下解决方案六:owc控件是microsoftoffice图表控件(owc10为ofiiceXP的组件.owc11为office2003的组件,组件的路径为C:ProgramF

引用owc时出现“程序集生成失败 -- 引用的程序集“Interop.OWC10”没有强名称”

问题描述 引用owc时出现"程序集生成失败--引用的程序集"Interop.OWC10"没有强名称"在线等 解决方案 解决方案二:该回复于2007-12-04 11:20:09被版主删除解决方案三:相关资料:

.net2.0强名称发布网站web引用预编译出错问题

问题描述 asp.net2.0(c#)网站,使用固定名称单页程序集,预编译程序集使用强命名,指定了强命名的密钥文件,选择了延迟签名,网站中有web_reference引用,发布时报错:"错误1未能加载文件或程序集"App_WebReferences,Version=0.0.0.0,Culture=neutral,PublicKeyToken=4da6d102abd0dc09"或它的某一个依赖项.强名称验证失败.(异常来自HRESULT:0x8013141A)/";请