|
发表于 2010-11-25 18:38:56
|
显示全部楼层
回复 ok100fen 的帖子
不知道你在说了么...
内存空间不能跨进程访问的原因主要在于不同进程都有自己的页目录和页表。进程切换的很大一块也就是切换掉页目录。
每个Windows进程都有一个相对应的执行体进程EPROCESS,也就是里面存有很多信息啦
比如进程的许多属性, 还有指针
nt!_KPROCESS
+0x000 Header : _DISPATCHER_HEADER
+0x010 ProfileListHead : _LIST_ENTRY
+0x018 DirectoryTableBase : [2] Uint4B
DirectoryTableBase[0]放的就是页目录,DirectoryTableBase[1]就是页表了
系统就是根据这里的页表和页目录来进行虚拟内存转换...只要我们在这里做个手脚{:3_52:}
比如我想写(破坏进程内存)要结束进程的内存,只需要把那个进程的DirectoryTableBase改成跟这个一样,然后直接写那个进程的内存就搞定了.....
修改傀儡进程的EPROCESS.Pcb.DirectoryTableBase[0]跟EPROCESS.Pcb.DirectoryTableBase[1]为目标进程的内容
然后 你破坏僵尸内存的同时 也破坏了你要结束的那个进程的内存
|
|