新闻中心

求助]MDL原理求助!!!
发布时间:{$itemInfo['publish_time']|date='Y-m-d H:i:s',_ _ _12bet人生的价值不在于你成就了轰轰烈烈的事业,而在于具体做好了什么。.12bet手机版没有激情,爱就不会燃烧;没有友情,朋就不会满座;.12bet官网你可曾想过,那盎然的春色却是历经严寒洗礼后的英姿,那金秋的美景却是接受酷暑熔炼后的结晶。!}##}来源:12bet-12bet手机版-12bet官网点击:27

  在进行SSDT hook的时候,我们用原始的SSDT地址去初始化一个MDL,修改MDL的flag,并用MmMapLockedPages锁住,MmMapLockedPages返回的地址就是具体的SSDT的页起始地址。也就是SSDT的VA转换后的页地址?对吗?这个页地址可以直接拿来访问?转换只需要最后的一步,就是页内存贮的PA?

  [公告]安全测试和项目外包请将项目需求发到看雪企服平台:

  MDL描述的是一段物理地址,map动作仅仅就是新建一段虚拟地址,并把这个虚拟地址与MDL描述的物理地址对应起来。

  这样做了后,就可以实现多个不同的VA对应同一个PA,比如这里,map出来的地址与ssdt原本的地址,对应的实际物理设备都是相同的(即都是同一段物理内存设备),所以看到的内容就是一样的

  就好比一个人,这个人的肉身相当于这里说的物理存储设备,也就是PA,但是这个人可以有N个不同名字(VA),每map一次,就等价于这个人又取了一个新名字,但这些名字始终都代表的是同一个人。

  对于物理存储设备来说(内存条),是不存在只能读或者只能写的权限的,这些限制都仅仅是那些不同的名字里自带了这些特征值,CPU在处理一个名字时(VA),会自动检查这些特征值,然后分别处理。

  你自己map时没有设定只读权限,那map出来的VA就是可读的,写权限也是一样的情况

  谢谢,我终于明白MDL到底在做什么了。它就是描述了一段PA,有了这个描述之后,我们可以利用这个描述创建一个新的VA到PA的映射,同时定义新的VA的属性。

  说白了就是对同一块物理地址的不同虚拟映射

  这个东西心里明白,但表达出来确实不太好表达,我楼上正解。

  我来贴代码了,这段代码广泛应用在各种hook之前(利用MDL使hook地址可写),看看有没有参考价值:

  用这块虚拟内存去对应你要修改的物理内存,当你对这个新的虚拟内存操作的时候,会通过检查。

  域名:加速乐SSL证书:公众号:ikanxue