看流星社区

 找回密码
 注册账号
查看: 7013|回复: 27

直接内核对象操作. 一种新的驱动写内存的方法...

[复制链接]

该用户从未签到

发表于 2011-8-7 11:08:41 | 显示全部楼层 |阅读模式
前言:
以前的一些驱动写内存的方法无法就是切换线程环境,直接写CR3寄存器来切换虚拟内存与物理内存的对应关系等,

内存空间不能跨进程访问的原因主要在于不同进程都有自己的页目录和页表。进程切换的很大一块也就是切换掉页目录。

过程:
我就在这丢个我自己想出来的方法,很烂很烂的.......

不用切换CR3寄存器....

首先我们来看下进程的页目录和页表是存放在哪里的

每个Windows进程都有一个相对应的执行体进程(EPROCESS,也就是KTEB),EPROCESS不仅包括了进程的许多属性,还包扩了许多指向其他数据结构的指针,其中包含了大量有用的信息.

nt!_EPROCESS
  +0x000 Pcb              : _KPROCESS
  +0x06c ProcessLock      : _EX_PUSH_LOCK
  +0x070 CreateTime      : _LARGE_INTEGER
  +0x078 ExitTime        : _LARGE_INTEGER
  +0x080 RundownProtect  : _EX_RUNDOWN_REF
..........

_KPROCESS也就是_EPROCESS的头,我们看看这里面放的是什么
nt!_KPROCESS
  +0x000 Header          : _DISPATCHER_HEADER
  +0x010 ProfileListHead  : _LIST_ENTRY
  +0x018 DirectoryTableBase : [2] Uint4B

其中DirectoryTableBase[0]放的就是页目录,DirectoryTableBase[1]就是页表了

系统就是根据这里的页表和页目录来进行虚拟内存转换...只要我们在这里做个手脚,嘿嘿。。。。

举例说明:
比如我想写D_F的内存,只需要把一个进程的DirectoryTableBase改成跟D_F的一样,然后直接写那个进程的内存就搞定了.....

游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

发表于 2012-2-24 17:32:43 | 显示全部楼层
回复 1# sgdbz


    看看是什么呢

该用户从未签到

发表于 2013-4-28 23:47:01 | 显示全部楼层
看看是什么呢

该用户从未签到

发表于 2013-5-11 01:27:05 | 显示全部楼层
额额俄额额俄额额俄额额

该用户从未签到

发表于 2013-7-25 10:27:26 | 显示全部楼层
看看不知道怎么用啊

该用户从未签到

发表于 2013-7-27 19:40:32 | 显示全部楼层
擦拭擦啊才

该用户从未签到

发表于 2013-8-10 15:42:32 | 显示全部楼层
看看 学习一下

该用户从未签到

发表于 2013-8-11 13:55:56 | 显示全部楼层
学习下,谢谢分享

该用户从未签到

发表于 2013-8-15 08:25:10 | 显示全部楼层
学习下不错哦哈哈

该用户从未签到

发表于 2013-8-20 15:26:37 | 显示全部楼层
拿走了 谢谢啊
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-29 18:38

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表