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

强命名防止dll被篡改相关推荐

  1. 强命名保护DLL文件

    强命名保护DLL文件 Posted on 2009-03-19 14:32 花猫.NET 阅读(1390) 评论(2) 编辑 收藏  大家做项目开发一般都是分层的,比如UI层,业务层,数据访问层.业务 ...

  2. CLR via C# 边读边想 03 - 本地程序集和强命名程序集

    Two Kinds of Assemblies, Two Kinds of Deployment CLR 支持两种类型的程序集:weakly named assemblies and strongly ...

  3. 共享程序集和强命名程序集(3):强命名程序集的一些作用

    强命名程序集能防篡改 用私钥对程序集进行签名,并将公钥和签名嵌入程序集,CLR就可以炎症程序集未被修改或破坏.程序集安装到GAC时,系统对包含清单的那个文件的内容进行哈希处理,将Hash值与PE文件中 ...

  4. 所引用的程序集没有强命名解决方法

    所引用的程序集没有强命名 1.打开SDK 命令提示窗口; 也就是VS2012 开发人员命令提示,一般所在目录C:\ProgramData\Microsoft \Windows\Start Menu\P ...

  5. 第 3 章 共享程序集和强命名程序集

    3.1 节 两种程序集,两种部署 CLR 支持两种程序集:弱命名程序集(weakly named assembly,即无签名的程序集) 和 强命名程序集(strongly named assembly ...

  6. 公共语言运行库中的程序集-04强命名的程序集

    具有强命名的程序集 强命名是由程序集的标识加上公钥和数字签名组成的.其中,程序集的标识包括简单文本名称.版本号和区域性信息(如果提供的话).强命名是使用相应的私钥,通过程序集文件(包含程序集清单的文件 ...

  7. 自制的 .net framework 强命名工具(支持.net4)

    我们知道,以前在Windows下开发程序时常会遭遇著名的"DLL Hell"问题,即动态链接库的向后兼容问题.微软在.Net产生前曾尝试使用COM组件的方式来解决DLL Hell问 ...

  8. IntelE3 E5 E7 至强命名规则

    随着Intel E3至强的全面发布,新一代Sandy Bridge至强将逐渐占据市场,取代上一代至强产品.那么,新一代 Sandy Bridge至强又是怎么命名的呢,我们来解析一下下面这张图表. 我们 ...

  9. 如何通过函数名的字符串运行函数(从dll动态库谈起,使用c++)

    1.问题描述 比如现在有一个函数叫MyFunc,现在想通过函数名调用该函数,该怎么办呢? 2.概述 如果这个问题是JAVA语言,我们会很自然的想到反射来解决这个问题,但是c++中没有反射,该怎么办呢? ...

最新文章

  1. 在控制台打印sql语句的办法(MyBatis Log Plugin插件的安装与使用)
  2. python3 asyncio loop 使用线程池原理
  3. sql语句的一些参考
  4. Top-K问题与多路归并排序
  5. c语言中*用于指针,关于C语言中指针的理解
  6. mysql控制台操作
  7. java获取指定倒退或向前的时间工具类
  8. spark 存入hbase_Spark DataFrame写入HBase的常用方式
  9. angular2-动画
  10. L2-011 玩转二叉树(建树+BFS)
  11. Excel图表如何更改坐标轴最大值
  12. 克利夫顿优势识别器 Clifton Strengths
  13. 打飞机小游戏c++窗口实现版
  14. 重磅精品课程总有一门是你想要找的
  15. ASCII 字元表(详细讲解)
  16. windows安装cygwin
  17. 无聊写着玩:解二阶线性微分方程
  18. 【深度学习】为什么深度学习需要大内存?
  19. 整合Visual C++和WDK7:Step by step
  20. mysql 多表查询 优化_MySql多表查询优化

热门文章

  1. Python数据结构与算法(2.5)——循环链表
  2. java spark 环境_在 IntelliJ IDEA 中配置 Spark(Java API) 运行环境
  3. mysql doc插入数据_如何向MySQL数据库的表中录入数据.doc
  4. 什么是SQL Server TRIM()函数?
  5. java静态构造函数_为什么不允许使用Java静态构造函数?
  6. C++正则表达式创建匿名函数
  7. 如何才能成为高级Java开发工程师
  8. Linq To Sql进阶系列(二)M:M关系
  9. WinForm XML
  10. js Dom对象的属性与方法