句柄表

在这里插入图片描述

使用OpenProcess后,句柄表的变化

连续多次打开相同对象后,返回给三环的句柄的值是不同的,句柄表里面也会添加相应的值。

通过句柄寻找内核对象

第一步 :WinDbg使用命令 !Process 0 0 遍历所有进程
第二步 :dt _EPROCESS +指定进程的地址

在这里插入图片描述
第三步 :_EPROCESS+c4里面的值 就是句柄表位置的指针
kd> dt _HANDLE_TABLE 0xe2775e80
nt!_HANDLE_TABLE
+0x000 TableCode : 0xe2de3000
+0x004 QuotaProcess : 0x8a12f448 _EPROCESS
+0x008 UniqueProcessId : 0x00000d00 Void
+0x00c HandleTableLock : [4] _EX_PUSH_LOCK
+0x01c HandleTableList : _LIST_ENTRY [ 0x80565ba8 - 0xe11dbebc ]
+0x024 HandleContentionEvent : _EX_PUSH_LOCK
+0x028 DebugInfo : (null)
+0x02c ExtraInfoPages : 0n0
+0x030 FirstFree : 0x7a0
+0x034 LastFree : 0
+0x038 NextHandleNeedingPool : 0x800
+0x03c HandleCount : 0n28
+0x040 Flags : 0
+0x040 StrictFIFO : 0y0

第四步 : kd> dq e2de3000(句柄表位置的指针)
e2de3000 fffffffe00000000 0000000000000000
e2de3010 0000000400000000 0000000800000000
e2de3020 0000000c00000000 0000001000000000
e2de3030 0000001400000000 0000001800000000
e2de3040 0000001c00000000 0000002000000000
e2de3050 0000002400000000 0000002800000000
e2de3060 0000002c00000000 0000003000000000
e2de3070 0000003400000000 0000003800000000

在这里插入图片描述

第五步:找句柄7a4对应的内核对象
7a4为索引,该值/4*8就是要找的位置

在这里插入图片描述
句柄表里面的值,最后四位的低两位清0,然后加上18就是该内核对象的位置。(+18是_OBJECT_HEADER的大小)
因为内核对象开始都是_OBJECT_HEADER这个结构体。然后才是_EPROCESS的开始位置

kd> dt _EPROCESS 8a1413b8+18
nt!_EPROCESS
+0x000 Pcb : _KPROCESS
+0x06c ProcessLock : _EX_PUSH_LOCK
+0x070 CreateTime : _LARGE_INTEGER 0x1d51d70`0b380ae4
+0x078 ExitTime : _LARGE_INTEGER 0x0
+0x080 RundownProtect : _EX_RUNDOWN_REF
+0x084 UniqueProcessId : 0x00000980 Void
+0x088 ActiveProcessLinks : _LIST_ENTRY [ 0x8a0fe498 - 0x8a134c68 ]
+0x090 QuotaUsage : [3] 0xa00
+0x09c QuotaPeak : [3] 0xc10
+0x0a8 CommitCharge : 0x17d
+0x0ac PeakVirtualSize : 0x22ef000
+0x0b0 VirtualSize : 0x1f9d000
+0x0b4 SessionProcessLinks : _LIST_ENTRY [ 0x8a0fe4c4 - 0x8a134c94 ]
+0x0bc DebugPort : (null)
+0x0c0 ExceptionPort : 0xe15d3bb8 Void
+0x0c4 ObjectTable : 0xe10cd258 _HANDLE_TABLE
+0x0c8 Token : _EX_FAST_REF
+0x0cc WorkingSetLock : _FAST_MUTEX
+0x0ec WorkingSetPage : 0x46763
+0x0f0 AddressCreationLock : _FAST_MUTEX
+0x110 HyperSpaceLock : 0
+0x114 ForkInProgress : (null)
+0x118 HardwareTrigger : 0
+0x11c VadRoot : 0x8a139268 Void
+0x120 VadHint : 0x8a1391d8 Void
+0x124 CloneRoot : (null)
+0x128 NumberOfPrivatePages : 0xcb
+0x12c NumberOfLockedPages : 0
+0x130 Win32Process : 0xe123e188 Void
+0x134 Job : (null)
+0x138 SectionObject : 0xe12955f8 Void
+0x13c SectionBaseAddress : 0x01000000 Void
+0x140 QuotaBlock : 0x8a1d56d8 _EPROCESS_QUOTA_BLOCK
+0x144 WorkingSetWatch : (null)
+0x148 Win32WindowStation : 0x00000038 Void
+0x14c InheritedFromUniqueProcessId : 0x00000644 Void
+0x150 LdtInformation : (null)
+0x154 VadFreeHint : (null)
+0x158 VdmObjects : (null)
+0x15c DeviceMap : 0xe1af54d8 Void
+0x160 PhysicalVadList : _LIST_ENTRY [ 0x8a141530 - 0x8a141530 ]
+0x168 PageDirectoryPte : _HARDWARE_PTE
+0x168 Filler : 0
+0x170 Session : 0xba5da000 Void
+0x174 ImageFileName : [16] “calc.exe”
+0x184 JobLinks : _LIST_ENTRY [ 0x0 - 0x0

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41490873/article/details/91348799