stand on the shoulders of giants

强命名防止dll被篡改

今天试了下强命名是不是能够防止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------------------

posted @ 2011-08-11 19:22  DylanWind  阅读(818)  评论(0编辑  收藏  举报