-
-
Windows内核-内存(八)
-
发表于:
2022-8-21 16:49
7530
-
1.vaddemo.cpp
2.在虚拟机里面运行

3.查看Vad_Root
4.查看申请的内存D0位置
vad描述的是申请时的内存属性
ce查看,视图-->内存区域

Mapped:映射内存
Private:私有内存
Mapped Exe:pe文件的映射
start:是按页为单位的
5.查看vad结构
Private内存用MMVAD_SHORT查看
_MMVAD_FLAGS
_MMVAD_FLAGS3
1.查看Mapped属性的vad
2._MSUBSECTION
3.锁页,把下面两个位都改为1,可以锁页
NoChange:改为1
SecNoChange:改为1
1._MMPFN
2._MMPFN的u3
3.MmPageLocationList
MmZeroedPageListHead:零化页表,剩余的物理地址 都挂在这个链表上,并且这个物理地址里面的内容都是0
MmFreePageListHead : 释放链表
MmStandbyPageListHead:备用链表:已经被移出内存工作集的物理地址,内存内容没有被修改,可以转移到磁盘上,被其他映射使用,要使用之前,先得把数据交换到磁盘上,当 然也可以重新召唤到原工作集 继续使用
MmModifiedPageListHead: 修改链表:跟备用链表一样,只是内容是被修改的,无论你是否召回到原工作集 他都要交换磁盘上
MmModifiedNoWritePageListHead:修改不写出链表:跟备用链表一样,只是内容是被修改的,无论你是否召回到原工作集他都不会交换到磁盘上
MmBadPageListHead:损坏链表
1.附加到进程
2.查看pte和MMPFNDATABASE
pte的523DF867除掉后三位,523DF是页帧的索引
3.查看+0x010 OriginalPte位置
kd> dt _MMPFN 85400000+523DF*1C -r2
4.修改
c0:可读可写可执行
80:可读可写
0:No Access ,改成0 就变成无访问权限,可以避免注入后被检测到
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课