本会动态

文章详情页
【驱动笔记14】初步认识MDL
发布时间:2020-03-01 21:35:16来源:ag真人游戏-ag视讯平台-ag亚游集团点击:34

  前段时间在群里有人问起什么是MDL,当时三言两语也不知道解释清楚了没,今天闲着无事,索性记录下来吧,就当是做个笔记,以后忘了也好查阅。

  我们知道,系统中一些重要的表项如SSDT是只读的,如果我们强行对其进行修改就会造成BSOD的严重后果。当然这种保护方式很容易被绕过,我们曾经介绍了通过修改cr0来禁用WP(WriteProtect,写保护)位的方法,现在再介绍一种不需要使用汇编的方法,就是MDL。

  MDL的全称是Memory DescriptorList,即内存描述符表。我们可以通过MDL描述一块内存区域,在MDL中包含了该内存区域的起始地址、拥有者进程、字节数量、标记等信息,如下所示:

  我们先来看一段在SSDT HOOK中常见的代码,如下所示:

  后面的代码首先从不分页的内存池中BuildMDL,然后添加一个MDL_MAPPED_TO_SYSTEM_VA标记以便允许写入该内存区域;然后我们将这块内存锁起来,现在可以就开始HOOKSSDT了,直到关闭HOOK后才将其释放。从这里就可以看出,这种方式明显没有修改cr0的方法好,呵呵呵呵。

  不过这种方法的应用范围比较广,控制精度也较好,精确地指定了要修改哪一块内存的标记,两者方法算是各有千秋吧,谁喜欢用哪一种都可以

  每一个程序员都有一个梦想,梦想着能够进入阿里、腾讯、字节跳动、百度等一线互联网公司,由于身边的环境等原因,不知道 BAT 等一线互联网公司使用哪些技术?或者该如何去学习这些技术?或者我该去哪些获取这些...博文

  一、内存描述符列表 (MDL) 是一个系统定义的结构,通过一系列物理地址描述缓冲区。执行直接 I/O 的驱动程序从 I/O 管理器接收一个 MDL 的指针,并通过 MDL 读写数据。一些驱动程序在执行...博文来自:chenyujing1234的专栏

  Mdl意为‘内存映射描述符’、‘缓冲描述符’,一个mdl就代表一个缓冲。(任意一块物理内存,可以同时映射到用户地址空间和系统地址空间的)设备IO方式分为三种:缓冲方式、直接IO方式、直接方式缓冲方式:...博文来自:maomao171314的专栏

  一个驱动读写,Win10x64和Win7x64都测试过,没问题博文来自:吾无法无天的博客

  Windows驱动跑在核心态(Kernel mode),驱动的调用者跑在用户态。如何使用户态进程与核心态驱动共享内存呢 ?我们知道32位Windows中,默认状态下虚拟空间有4G,前2G是每个进程私有...博文来自:世事难料,保持低调

  一 MDL是什么 在MSDN中有这样的定义内存描述符列表 (MDL) 是一个系统定义的结构,通过一系列物理地址描述缓冲区。执行直接 I/O 的驱动程序从 I/O 管理器接收一个 MDL 的指针,并通过...博文来自:namelcx的专栏

  看mysql45讲遇到一个问题为什么C等待拿锁之后,D也会阻塞?其实这里并没有解释清楚。因为如果按并发理解的话,C,D应当是同等级,都有可能拿到锁的。但C读写锁互斥,D读读不互斥,这样的话就跟上图所述...博文来自:欢迎访问 花落的速度 的博客

  各位大牛, 最近一直在看MDL的相关资料,有一些总结,也有一些疑惑,现在写出来,请大家不吝赐教。 第一,MDL的一个用法是提供驱动程序访问用户模式数据缓冲区的一种方式:直接I/O。也就是说通过MDL告论坛

  MDL的本质就是记录一段虚拟地址所对应着的一系列的物理地址。MDL数据结构的结尾是一组PFN,记录着物理地址,相关宏是MmGetMdlPfnArray。初始化:一般用用IoAllocateMdl初始化...博文来自:weixin_33798152的博客

  基础材料:centos7.5 mysql 5.7.24当mysql运行一条SQL语句时,在你预期的时间内,没有完成时,我们都会登陆到mysql数据库上想查看是不是出了什么问题,通常会使用的一个命令就是...博文来自:一梦如是的博客

  一 序      本来在看mysql.taobao介绍InnoDB 事务子系统介绍 ,真的头大,名词都看不懂,还是分开来学习的好,本文主要整理MDL(metadata locking)锁。作为尝试学习...博文来自:bohu83的博客

  上一节介绍了缓冲区方式读写,这一节咱们来看看直接方式读写设备。1.直接方式读写设备,操作系统会将用户模式下的缓冲区锁住,然后操作系统将这段缓冲区在内核模式地址再次映射一遍。这样,用户模式的缓冲区和内核...博文来自:Lydia的博客

  //// I/O system definitions.//// 定义一个内存描述符列表(MDL)//// 一个MDL通过一系列物理页面描述在虚拟缓冲中的页面。// 通过一个队列描述与缓冲区相关的页面...博文来自:死胖子的博客

  以下的虚拟内存可以理解成逻辑内存,因为我觉得只有这样才能讲通下面所有的东西。以下的“未分页”指没有为页进行编码。以下为MDL结构体(我很郁闷,我在MSDN上没有找到这个结构体)typedef...博文来自:tbwork

  初步认识MDL博文来自:jimk1983的专栏

  给表新增字段时,发现锁表了,查看进程,提示Waiting for table metadata lock,等待锁释放;然而蛋疼的是几分钟过去了,依然没有任何的进展,特此记录下这个问题的定位过程以及MD...博文来自:weixin_34025151的博客

  X64下有patchguard,所以先讨论x86的思路首先找到函数地址,如果是导出函数,可以使用MmGetSystemRoutineAddress,如果未导出加载符号通过特征码实现新新函数替换原函数恢...博文来自:kernweak的博客

  查询表时,能查出一部分数据,但执行SELECT COUNT(*) 时,出现内部错误的提示. 望高人指点一二.论坛

  MySQL 元数据锁博文来自:记录创业路上的一些想法

  今天做了一个简单的测试,当session1做一个小表的查询结束后,session2对些表做alter操作,发现session会由于拿不到这个 阻表的MDL锁而被阻塞,这种情况在oracle中是不会发生...博文来自:jolly10的专栏

  MySQLServer层定义了如下的元数据锁的粒度,这些锁较多,超出了读锁和写锁两种锁粒度,这是因为读锁和写锁通常是理论上根据概念探讨的范畴,而在工程实践中会根据实际情况进行细化,以最大限度地提高并发...博文来自:那海蓝蓝的博客

  1 前言2 MDL锁与实现3 MDL锁的性能与并发改进4 MDL锁的诊断前言好久没更新,主要是因为Inside君最近沉迷于一部动画片——《新葫芦娃兄弟》。终于抽得闲,完成了本篇关于MySQL MD...博文来自:weixin_34179968的博客

  1. 介绍身处MySQL这个圈子,能够切身地感受到大家对MySQL 5.7的期待和热情,似乎每个人都迫不及待的想要了解、学习和使用MySQL 5.7。那么,我们不禁要问,MySQL 5.7到底做了哪些...博文来自:程序猿开发日志【学习永无止境】

  前言MySQL5.5版本开始引入了MDL锁用来保护元数据信息,让MySQL能够在并发环境下多DDL、DML同时操作下保持元数据的一致性。本文用MySQL5.7源码分析了常用SQL语句的MDL加锁实现。...博文来自:Michael Yang的专栏

  基础材料:centos7.5 mysql 5.7.24前几篇博客中介绍了表级锁(表锁、元数据锁)的相关内容,在mysql锁系列之MDL元数据锁之一简单说明了一下元数据锁...博文来自:一梦如是的博客

  什么是MDLMDL,Meta Data lock,元数据锁,一般称为字典锁。字典锁与数据锁相对应。字典锁是为了保护数据对象被改变,一般是一些DDL会对字典对象改变,如两个TX,TX1先查询表,然后TX...博文来自:weixin_33815613的博客

  爬虫福利一:27报网MM批量下载 点击看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成!目标网站:妹子图网环境:Python3.x相关第三方模块:requ...博文来自:Nick.Peng 的博客

  VXpq12343:楼主在吗 要不要一起合作

  :问下大佬,为什么有些动态地址搜到最后没有绿色的静态基址,搜不到