今天试了下强命名是不是能够防止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.
对单个应用程序禁用强名称跳过功能
-
打开或创建应用程序配置文件。
有关此文件的更多信息,请参见配置文件中的“应用程序配置文件”一节。
-
添加下面的项:
<configuration> <runtime> < bypassTrustedAppStrongNames enabled="false" /> </runtime> </configuration>
----------------------Cut end------------------