kd> dt _eprocess 834d7020
ntdll!_EPROCESS
..............
+0x232 SubSystemMinorVersion : 0 ''
+0x233 SubSystemMajorVersion : 0x6 ''
+0x232 SubSystemVersion : 0x600
+0x234 PriorityClass : 0x2 ''
+0x238 VadRoot : _MM_AVL_TABLE
+0x258 Cookie : 0x6021f7a7
+0x25c AlpcContext : _ALPC_PROCESS_CONTEXT
在xp下,这是一个指向MMVAD的指针,03下就是这个_MM_AVL_TABLE了,不过跟vista还不太一样。
kd> dt _MM_AVL_TABLE 834d7020+0x238
ntdll!_MM_AVL_TABLE
+0x000 BalancedRoot : _MMADDRESS_NODE
+0x014 DepthOfTree : 0y00110 (0x6)
+0x014 Unused : 0y000
+0x014 NumberGenericTableElements : 0y000000000000000000011011 (0x1b)
+0x018 NodeHint : 0x832741c0
+0x01c NodeFreeHint : (null)
kd> dt _MMADDRESS_NODE 834d7020+0x238
ntdll!_MMADDRESS_NODE
+0x000 u1 : <unnamed-tag>
+0x004 LeftChild : (null)
+0x008 RightChild : 0x82f11e08 _MMADDRESS_NODE
+0x00c StartingVpn : 0
+0x010 EndingVpn : 0
kd> dt _MMvad 834d7020+0x238
nt!_MMVAD
+0x000 u1 : <unnamed-tag>
+0x004 LeftChild : (null)
+0x008 RightChild : 0x82f11e08 _MMVAD
+0x00c StartingVpn : 0
+0x010 EndingVpn : 0
+0x014 u : <unnamed-tag>
+0x018 PushLock : _EX_PUSH_LOCK
+0x01c u5 : <unnamed-tag>
+0x020 u2 : <unnamed-tag>
+0x024 Subsection : (null)
+0x024 MappedSubsection : (null)
+0x028 FirstPrototypePte : 0x91bf704c _MMPTE
+0x02c LastContiguousPte : 0x91bf704c _MMPTE
这三个结构开头都一样....下面是一个child的值
kd> dt _MMvad 0x82f11e08
nt!_MMVAD
+0x000 u1 : <unnamed-tag>
+0x004 LeftChild : 0x832a12e8 _MMVAD
+0x008 RightChild : 0x834d0a10 _MMVAD
+0x00c StartingVpn : 0x4a090
+0x010 EndingVpn : 0x4a0df
+0x014 u : <unnamed-tag>
+0x018 PushLock : _EX_PUSH_LOCK
+0x01c u5 : <unnamed-tag>
+0x020 u2 : <unnamed-tag>
+0x024 Subsection : 0x83051658 _SUBSECTION
+0x024 MappedSubsection : 0x83051658 _MSUBSECTION
+0x028 FirstPrototypePte : 0x8fe568c8 _MMPTE
+0x02c LastContiguousPte : 0xfffffffc _MMPTE
_control_area 没了,瞪了半天才看见一个Section 估计这个是,应该早就发现的....因为和xp下的control偏移一样。
kd> dt _SUBSECTION 0x83051658
nt!_SUBSECTION
+0x000 ControlArea : 0x83051610 _CONTROL_AREA
+0x004 SubsectionBase : 0x8fe568c8 _MMPTE
+0x008 NextSubsection : 0x83051678 _SUBSECTION
+0x00c PtesInSubsection : 1
+0x010 UnusedPtes : 0
+0x010 GlobalPerSessionHead : (null)
+0x014 u : <unnamed-tag>
+0x018 StartingSector : 0
+0x01c NumberOfFullSectors : 2
kd> dt _CONTROL_AREA 0x83051610
nt!_CONTROL_AREA
+0x000 Segment : 0x8fe56898 _SEGMENT
+0x004 DereferenceList : _LIST_ENTRY [ 0x0 - 0x8306c97c ]
+0x00c NumberOfSectionReferences : 1
+0x010 NumberOfPfnReferences : 0x33
+0x014 NumberOfMappedViews : 1
+0x018 NumberOfUserReferences : 2
+0x01c u : <unnamed-tag>
+0x020 u1 : <unnamed-tag>
+0x024 FilePointer : _EX_FAST_REF
+0x028 ControlAreaLock : 0
+0x02c StartingFrame : 0
+0x030 WaitingForDeletion : (null)
+0x034 u2 : <unnamed-tag>
+0x040 LockedPages : 0
这个结构也被扩展了,低三位清零
kd> dt _EX_FAST_REF 0x83051610 + 0x24
ntdll!_EX_FAST_REF
+0x000 Object : 0x830f3e1f
+0x000 RefCnt : 0y111
+0x000 Value : 0x830f3e1f
kd> dt _file_object 0x830f3e1f&0xfffffff8
ntdll!_FILE_OBJECT
+0x000 Type : 5
+0x002 Size : 128
+0x004 DeviceObject : 0x82e64e10 _DEVICE_OBJECT
+0x008 Vpb : 0x82e641e8 _VPB
+0x00c FsContext : 0x914f1d80
+0x010 FsContext2 : 0x914f1ed8
+0x014 SectionObjectPointer : 0x82ebed0c _SECTION_OBJECT_POINTERS
+0x018 PrivateCacheMap : (null)
+0x01c FinalStatus : 0
+0x020 RelatedFileObject : 0x83309368 _FILE_OBJECT
+0x024 LockOperation : 0 ''
+0x025 DeletePending : 0 ''
+0x026 ReadAccess : 0x1 ''
+0x027 WriteAccess : 0 ''
+0x028 DeleteAccess : 0 ''
+0x029 SharedRead : 0x1 ''
+0x02a SharedWrite : 0x1 ''
+0x02b SharedDelete : 0x1 ''
+0x02c Flags : 0x44042
+0x030 FileName : _UNICODE_STRING "\Windows\System32\cmd.exe"
+0x038 CurrentByteOffset : _LARGE_INTEGER 0x0
+0x040 Waiters : 0
+0x044 Busy : 0
+0x048 LastLock : (null)
+0x04c Lock : _KEVENT
+0x05c Event : _KEVENT
+0x06c CompletionContext : (null)
+0x070 IrpListLock : 0
+0x074 IrpList : _LIST_ENTRY [ 0x830f3e8c - 0x830f3e8c ]
+0x07c FileObjectExtension : 0x8304de48
通过vad树还是能得到模块的信息滴....(至少是一个基址)
Vista下的vad,让我好找啊..........
最新推荐文章于 2023-04-18 10:42:54 发布