sgdbz 发表于 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 : Uint4B

其中DirectoryTableBase放的就是页目录,DirectoryTableBase就是页表了

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

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

**** Hidden Message *****

zhangchenggu 发表于 2012-2-24 17:32:43

回复 1# sgdbz


    看看是什么呢

aki447 发表于 2013-4-28 23:47:01

看看是什么呢

一叶知秋 发表于 2013-5-11 01:27:05

额额俄额额俄额额俄额额

pdswandou 发表于 2013-7-25 10:27:26

看看不知道怎么用啊

wuge910310 发表于 2013-7-27 19:40:32

擦拭擦啊才

loser7758 发表于 2013-8-10 15:42:32

看看 学习一下

buyijiaoben 发表于 2013-8-11 13:55:56

学习下,谢谢分享

3133841 发表于 2013-8-15 08:25:10

学习下不错哦哈哈

984954545 发表于 2013-8-20 15:26:37

拿走了 谢谢啊
页: [1] 2 3
查看完整版本: 直接内核对象操作. 一种新的驱动写内存的方法...