Win7 x64 Vad遍历模块

先看下NtQueryVirtualMenmory代码

刚开始只是判断下buff是否符合要求


然后去GS寄存器获取东西,但发现偏移过去是context,这就无从而知了.

然后去得到EPROCESS 这里判断是不是系统进程和buff是否符合要求


如果是查询MemoryBasicInformation信息就填充一些信息,本篇文章主要是看  MemorySectionName功能(2)

如果是查询MemoryWorkingSetList和1号功能就调用MiGetWorkingSetInfo或者MiGetWorkingSetInfoList


如果都不是1 4 那就是2好功能MemorySectionName

先判断是不是系统进程 如果不是就KeStackAttachProcess上去

然后获取锁锁住进程

然后判断如果进程flags是否包含0x20 (VmDeleted ),是就取消附加 解锁 返回0xC000010A


如果进程flags(VmDeleted  )是1就去遍历平衡二叉树

VadRoot +5 是u成员,不知道是东西,应该跟初始化状态有关,因为如果是新创建的进程,这个u+5是0,然后过一会就会有值.

期间判断偏移是否超过正在枚举的模块的大小


得到节点后就去获取FILE_OBJECT 上面标签写错了 

可以看到是路径是MMVAD->Subsection->ControlArea->FilePointer.Value 去除后3位

然后调用下面2个其中一个函数去锁住这个对象


如果获取到FileObject 且不是3号功能 

就调用ObpQueryNameString查询文件名



由此 看了之后Windbg看来下

随便选择一个进程

1: kd> dt _eprocess 0xfffffa801b104b30
nt!_EPROCESS
   +0x000 Pcb              : _KPROCESS
   +0x160 ProcessLock      : _EX_PUSH_L
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值