强命名防止dll被篡改

本文探讨了.NET框架中强命名是否能有效防止DLL被篡改的问题。理论上,更改过的DLL因签名验证失败不应被加载,但实践中发现并非如此。文章揭示了.NET优化导致的这一现象,并介绍了如何通过修改注册表或应用程序配置文件来禁用强名称跳过功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天试了下强命名是不是能够防止Dll被篡改,按照原理,如果你更改了Dll,CLR在load Dll的时候,验证是不能通过的,Dll是不会被load的。

可是实际情况not the case! 当你用Binary Editor更改了Dll, 例如改变了字符串某个字符,Dll会被load

弄了半天,原来才发现是强命名验证被.NET优化了 http://msdn.microsoft.com/zh-cn/library/cc713694.aspx 需要更改注册表选项。

----------------------Cut from MSDN---------------------
对所有应用程序禁用强名称跳过功能
  • On 32-bit computers, in the system registry, create a DWORD entry with a value of 0 named AllowStrongNameBypass under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework key.

  • On 64-bit computers, in the system registry, create a DWORD entry with a value of 0 named AllowStrongNameBypass under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework and HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework keys.

对单个应用程序禁用强名称跳过功能
  1. 打开或创建应用程序配置文件。

    有关此文件的更多信息,请参见配置文件中的“应用程序配置文件”一节。

  2. 添加下面的项:

    <configuration>
      <runtime>
         < bypassTrustedAppStrongNames enabled="false" />
      </runtime>
    </configuration>

----------------------Cut end------------------

转载于:https://www.cnblogs.com/DylanWind/archive/2011/08/11/2135418.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值