Windows 2000内核KPEB/KTEB详细结构(http://webcrazy.yeah.net/)

来源:互联网 发布:二手物品交易平台源码 编辑:程序博客网 时间:2024/05/17 07:15

Windows 2000内核KPEB/KTEB详细结构
            WebCrazy(http://webcrazy.yeah.net/)

    EPROCESS与ETHREAD结构在Windows NT/2000内核的地位是不言而喻的。他们结构中的成员包含了内核的方方面面,是两个比较大的结构。在Windows 2000 Server Build 2195 Free Kernel中他们的大小分别达到648与584字节。在先前我提供的部分应用都大量引用了这两个结构。具体可以参考“网站导航”。应部分网友的要求,这儿我将他们的详细结构列于底下。

    结构来源:
    Microsoft Windbg的extension kdex2x86.dll
    这个Kernel Debugger Extensions包含的结构不仅仅有EPROCESS/ETHREAD,还有EJOB等很多内部数据结构。所列的格式并非C语言格式,只是提供了结构成员的偏移量与成员名及成员类型。详细资料请参阅Microsoft提供的Windows NT/2000 OEM Support Tools Documention。

    关于Windbg的使用请翻阅Microsft相关文档。

    > !listexts
    Default extension: D:/Program Files/Debuggers/bin/w2kfre/kdex2x86
    kdex2x86 loaded       D:/Program Files/Debuggers/bin/w2kfre/kdex2x86 
   
    > !kdex2x86.version
    Free Extension dll for build 2195 debugging Free kernel for build 2195
   
    > !kdex2x86.strct EPROCESS
    struct   _EPROCESS (sizeof=648)
    +000 struct   _KPROCESS Pcb
    +000    struct   _DISPATCHER_HEADER Header
    +000       byte     Type
    +001       byte     Absolute
    +002       byte     Size
    +003       byte     Inserted
    +004       int32    SignalState
    +008       struct   _LIST_ENTRY WaitListHead
    +008          struct   _LIST_ENTRY *Flink
    +00c          struct   _LIST_ENTRY *Blink
    +010    struct   _LIST_ENTRY ProfileListHead
    +010       struct   _LIST_ENTRY *Flink
    +014       struct   _LIST_ENTRY *Blink
    +018    uint32   DirectoryTableBase[2]
    +020    struct   _KGDTENTRY LdtDescriptor
    +020       uint16   LimitLow
    +022       uint16   BaseLow
    +024       union    __unnamed9 HighWord
    +024          struct   __unnamed10 Bytes
    +024             byte     BaseMid
    +025             byte     Flags1
    +026             byte     Flags2
    +027             byte     BaseHi
    +024          struct   __unnamed11 Bits
    +024             bits0-7 BaseMid
    +024             bits8-12 Type
    +024             bits13-14 Dpl
    +024             bits15-15 Pres
    +024             bits16-19 LimitHi
    +024             bits20-20 Sys
    +024             bits21-21 Reserved_0
    +024             bits22-22 Default_Big
    +024             bits23-23 Granularity
    +024             bits24-31 BaseHi
    +028    struct   _KIDTENTRY Int21Descriptor
    +028       uint16   Offset
    +02a       uint16   Selector
    +02c       uint16   Access
    +02e       uint16   ExtendedOffset
    +030    uint16   IopmOffset
    +032    byte     Iopl
    +033    byte     VdmFlag
    +034    uint32   ActiveProcessors
    +038    uint32   KernelTime
    +03c    uint32   UserTime
    +040    struct   _LIST_ENTRY ReadyListHead
    +040       struct   _LIST_ENTRY *Flink
    +044       struct   _LIST_ENTRY *Blink
    +048    struct   _LIST_ENTRY SwapListEntry
    +048       struct   _LIST_ENTRY *Flink
    +04c       struct   _LIST_ENTRY *Blink
    +050    struct   _LIST_ENTRY ThreadListHead
    +050       struct   _LIST_ENTRY *Flink
    +054       struct   _LIST_ENTRY *Blink
    +058    uint32   ProcessLock
    +05c    uint32   Affinity
    +060    uint16   StackCount
    +062    char     BasePriority
    +063    char     ThreadQuantum
    +064    byte     AutoAlignment
    +065    byte     State
    +066    byte     ThreadSeed
    +067    byte     DisableBoost
    +068    byte     PowerState
    +069    byte     DisableQuantum
    +06a    byte     Spare[2]
    +06c int32    ExitStatus
    +070 struct   _KEVENT LockEvent
    +070    struct   _DISPATCHER_HEADER Header
    +070       byte     Type
    +071       byte     Absolute
    +072       byte     Size
    +073       byte     Inserted
    +074       int32    SignalState
    +078       struct   _LIST_ENTRY WaitListHead
    +078          struct   _LIST_ENTRY *Flink
    +07c          struct   _LIST_ENTRY *Blink
    +080 uint32   LockCount
    +088 union    _LARGE_INTEGER CreateTime
    +088    uint32   LowPart
    +08c    int32    HighPart
    +088    struct   __unnamed3 u
    +088       uint32   LowPart
    +08c       int32    HighPart
    +088    int64    QuadPart
    +090 union    _LARGE_INTEGER ExitTime
    +090    uint32   LowPart
    +094    int32    HighPart
    +090    struct   __unnamed3 u
    +090       uint32   LowPart
    +094       int32    HighPart
    +090    int64    QuadPart
    +098 struct   _KTHREAD *LockOwner
    +09c void     *UniqueProcessId
    +0a0 struct   _LIST_ENTRY ActiveProcessLinks
    +0a0    struct   _LIST_ENTRY *Flink
    +0a4    struct   _LIST_ENTRY *Blink
    +0a8 uint32   QuotaPeakPoolUsage[2]
    +0b0 uint32   QuotaPoolUsage[2]
    +0b8 uint32   PagefileUsage
    +0bc uint32   CommitCharge
    +0c0 uint32   PeakPagefileUsage
    +0c4 uint32   PeakVirtualSize
    +0c8 uint32   VirtualSize
    +0d0 struct   _MMSUPPORT Vm
    +0d0    union    _LARGE_INTEGER LastTrimTime
    +0d0       uint32   LowPart
    +0d4       int32    HighPart
    +0d0       struct   __unnamed3 u
    +0d0          uint32   LowPart
    +0d4          int32    HighPart
    +0d0       int64    QuadPart
    +0d8    uint32   LastTrimFaultCount
    +0dc    uint32   PageFaultCount
    +0e0    uint32   PeakWorkingSetSize
    +0e4    uint32   WorkingSetSize
    +0e8    uint32   MinimumWorkingSetSize
    +0ec    uint32   MaximumWorkingSetSize
    +0f0     *VmWorkingSetList
    +0f4    struct   _LIST_ENTRY WorkingSetExpansionLinks
    +0f4       struct   _LIST_ENTRY *Flink
    +0f8       struct   _LIST_ENTRY *Blink
    +0fc    byte     AllowWorkingSetAdjustment
    +0fd    byte     AddressSpaceBeingDeleted
    +0fe    byte     ForegroundSwitchCount
    +0ff    byte     MemoryPriority
    +100    union    __unnamed13 u
    +100       uint32   LongFlags
    +100       struct   _MMSUPPORT_FLAGS Flags
    +100          bits0-0 SessionSpace
    +100          bits1-1 BeingTrimmed
    +100          bits2-2 ProcessInSession
    +100          bits3-3 SessionLeader
    +100          bits4-4 TrimHard
    +100          bits5-5 WorkingSetHard
    +100          bits6-6 WriteWatch
    +100          bits7-31 Filler
    +104    uint32   Claim
    +108    uint32   NextEstimationSlot
    +10c    uint32   NextAgingSlot
    +110    uint32   EstimatedAvailable
    +114    uint32   GrowthSinceLastEstimate
    +118 struct   _LIST_ENTRY SessionProcessLinks
    +118    struct   _LIST_ENTRY *Flink
    +11c    struct   _LIST_ENTRY *Blink
    +120 void     *DebugPort
    +124 void     *ExceptionPort
    +128 struct   _HANDLE_TABLE *ObjectTable
    +12c void     *Token
    +130 struct   _FAST_MUTEX WorkingSetLock
    +130    int32    Count
    +134    struct   _KTHREAD *Owner
    +138    uint32   Contention
    +13c    struct   _KEVENT Event
    +13c       struct   _DISPATCHER_HEADER Header
    +13c          byte     Type
    +13d          byte     Absolute
    +13e          byte     Size
    +13f          byte     Inserted
    +140          int32    SignalState
    +144          struct   _LIST_ENTRY WaitListHead
    +144             struct   _LIST_ENTRY *Flink
    +148             struct   _LIST_ENTRY *Blink
    +14c    uint32   OldIrql
    +150 uint32   WorkingSetPage
    +154 byte     ProcessOutswapEnabled
    +155 byte     ProcessOutswapped
    +156 byte     AddressSpaceInitialized
    +157 byte     AddressSpaceDeleted
    +158 struct   _FAST_MUTEX AddressCreationLock
    +158    int32    Count
    +15c    struct   _KTHREAD *Owner
    +160    uint32   Contention
    +164    struct   _KEVENT Event
    +164       struct   _DISPATCHER_HEADER Header
    +164          byte     Type
    +165          byte     Absolute
    +166          byte     Size
    +167          byte     Inserted
    +168          int32    SignalState
    +16c          struct   _LIST_ENTRY WaitListHead
    +16c             struct   _LIST_ENTRY *Flink
    +170             struct   _LIST_ENTRY *Blink
    +174    uint32   OldIrql
    +178 uint32   HyperSpaceLock
    +17c struct   _ETHREAD *ForkInProgress
    +180 uint16   VmOperation
    +182 byte     ForkWasSuccessful
    +183 byte     MmAgressiveWsTrimMask
    +184 struct   _KEVENT *VmOperationEvent
    +188 void     *PaeTop
    +18c uint32   LastFaultCount
    +190 uint32   ModifiedPageCount
    +194 void     *VadRoot
    +198 void     *VadHint
    +19c void     *CloneRoot
    +1a0 uint32   NumberOfPrivatePages
    +1a4 uint32   NumberOfLockedPages
    +1a8 uint16   NextPageColor
    +1aa byte     ExitProcessCalled
    +1ab byte     CreateProcessReported
    +1ac void     *SectionHandle
    +1b0 struct   _PEB *Peb
    +1b4 void     *SectionBaseAddress
    +1b8 struct   _EPROCESS_QUOTA_BLOCK *QuotaBlock
    +1bc int32    LastThreadExitStatus
    +1c0 struct   _PAGEFAULT_HISTORY *WorkingSetWatch
    +1c4 void     *Win32WindowStation
    +1c8 void     *InheritedFromUniqueProcessId
    +1cc uint32   GrantedAccess
    +1d0 uint32   DefaultHardErrorProcessing
    +1d4 void     *LdtInformation
    +1d8 void     *VadFreeHint
    +1dc void     *VdmObjects
    +1e0 void     *DeviceMap
    +1e4 uint32   SessionId
    +1e8 struct   _LIST_ENTRY PhysicalVadList
    +1e8    struct   _LIST_ENTRY *Flink
    +1ec    struct   _LIST_ENTRY *Blink
    +1f0 struct   _HARDWARE_PTE_X86 PageDirectoryPte
    +1f0    bits0-0 Valid
    +1f0    bits1-1 Write
    +1f0    bits2-2 Owner
    +1f0    bits3-3 WriteThrough
    +1f0    bits4-4 CacheDisable
    +1f0    bits5-5 Accessed
    +1f0    bits6-6 Dirty
    +1f0    bits7-7 LargePage
    +1f0    bits8-8 Global
    +1f0    bits9-9 CopyOnWrite
    +1f0    bits10-10 Prototype
    +1f0    bits11-11 reserved
    +1f0    bits12-31 PageFrameNumber
    +1f0 uint64   Filler
    +1f8 uint32   PaePageDirectoryPage
    +1fc byte     ImageFileName[16]
    +20c uint32   VmTrimFaultValue
    +210 byte     SetTimerResolution
    +211 byte     PriorityClass
    +212 byte     SubSystemMinorVersion
    +213 byte     SubSystemMajorVersion
    +212 uint16   SubSystemVersion
    +214 void     *Win32Process
    +218 struct   _EJOB *Job
    +21c uint32   JobStatus
    +220 struct   _LIST_ENTRY JobLinks
    +220    struct   _LIST_ENTRY *Flink
    +224    struct   _LIST_ENTRY *Blink
    +228 void     *LockedPagesList
    +22c void     *SecurityPort
    +230 struct   _WOW64_PROCESS *Wow64Process
    +238 union    _LARGE_INTEGER ReadOperationCount
    +238    uint32   LowPart
    +23c    int32    HighPart
    +238    struct   __unnamed3 u
    +238       uint32   LowPart
    +23c       int32    HighPart
    +238    int64    QuadPart
    +240 union    _LARGE_INTEGER WriteOperationCount
    +240    uint32   LowPart
    +244    int32    HighPart
    +240    struct   __unnamed3 u
    +240       uint32   LowPart
    +244       int32    HighPart
    +240    int64    QuadPart
    +248 union    _LARGE_INTEGER OtherOperationCount
    +248    uint32   LowPart
    +24c    int32    HighPart
    +248    struct   __unnamed3 u
    +248       uint32   LowPart
    +24c       int32    HighPart
    +248    int64    QuadPart
    +250 union    _LARGE_INTEGER ReadTransferCount
    +250    uint32   LowPart
    +254    int32    HighPart
    +250    struct   __unnamed3 u
    +250       uint32   LowPart
    +254       int32    HighPart
    +250    int64    QuadPart
    +258 union    _LARGE_INTEGER WriteTransferCount
    +258    uint32   LowPart
    +25c    int32    HighPart
    +258    struct   __unnamed3 u
    +258       uint32   LowPart
    +25c       int32    HighPart
    +258    int64    QuadPart
    +260 union    _LARGE_INTEGER OtherTransferCount
    +260    uint32   LowPart
    +264    int32    HighPart
    +260    struct   __unnamed3 u
    +260       uint32   LowPart
    +264       int32    HighPart
    +260    int64    QuadPart
    +268 uint32   CommitChargeLimit
    +26c uint32   CommitChargePeak
    +270 struct   _LIST_ENTRY ThreadListHead
    +270    struct   _LIST_ENTRY *Flink
    +274    struct   _LIST_ENTRY *Blink
    +278 struct   _RTL_BITMAP *VadPhysicalPagesBitMap
    +27c uint32   VadPhysicalPages
    +280 uint32   AweLock
   
    > !kdex2x86.strct ETHREAD
    struct   _ETHREAD (sizeof=584)
    +000 struct   _KTHREAD Tcb
    +000    struct   _DISPATCHER_HEADER Header
    +000       byte     Type
    +001       byte     Absolute
    +002       byte     Size
    +003       byte     Inserted
    +004       int32    SignalState
    +008       struct   _LIST_ENTRY WaitListHead
    +008          struct   _LIST_ENTRY *Flink
    +00c          struct   _LIST_ENTRY *Blink
    +010    struct   _LIST_ENTRY MutantListHead
    +010       struct   _LIST_ENTRY *Flink
    +014       struct   _LIST_ENTRY *Blink
    +018    void     *InitialStack
    +01c    void     *StackLimit
    +020    void     *Teb
    +024    void     *TlsArray
    +028    void     *KernelStack
    +02c    byte     DebugActive
    +02d    byte     State
    +02e    byte     Alerted[2]
    +030    byte     Iopl
    +031    byte     NpxState
    +032    char     Saturation
    +033    char     Priority
    +034    struct   _KAPC_STATE ApcState
    +034       struct   _LIST_ENTRY ApcListHead[2]
                  struct   _LIST_ENTRY *Flink
                  struct   _LIST_ENTRY *Blink
    +044       struct   _KPROCESS *Process
    +048       byte     KernelApcInProgress
    +049       byte     KernelApcPending
    +04a       byte     UserApcPending
    +04c    uint32   ContextSwitches
    +050    int32    WaitStatus
    +054    byte     WaitIrql
    +055    char     WaitMode
    +056    byte     WaitNext
    +057    byte     WaitReason
    +058    struct   _KWAIT_BLOCK *WaitBlockList
    +05c    struct   _LIST_ENTRY WaitListEntry
    +05c       struct   _LIST_ENTRY *Flink
    +060       struct   _LIST_ENTRY *Blink
    +064    uint32   WaitTime
    +068    char     BasePriority
    +069    byte     DecrementCount
    +06a    char     PriorityDecrement
    +06b    char     Quantum
    +06c    struct   _KWAIT_BLOCK WaitBlock[4]
               struct   _LIST_ENTRY WaitListEntry
                  struct   _LIST_ENTRY *Flink
                  struct   _LIST_ENTRY *Blink
               struct   _KTHREAD *Thread
               void     *Object
               struct   _KWAIT_BLOCK *NextWaitBlock
               uint16   WaitKey
               uint16   WaitType
    +0cc    void     *LegoData
    +0d0    uint32   KernelApcDisable
    +0d4    uint32   UserAffinity
    +0d8    byte     SystemAffinityActive
    +0d9    byte     PowerState
    +0da    byte     NpxIrql
    +0db    byte     Pad[1]
    +0dc    void     *ServiceTable
    +0e0    struct   _KQUEUE *Queue
    +0e4    uint32   ApcQueueLock
    +0e8    struct   _KTIMER Timer
    +0e8       struct   _DISPATCHER_HEADER Header
    +0e8          byte     Type
    +0e9          byte     Absolute
    +0ea          byte     Size
    +0eb          byte     Inserted
    +0ec          int32    SignalState
    +0f0          struct   _LIST_ENTRY WaitListHead
    +0f0             struct   _LIST_ENTRY *Flink
    +0f4             struct   _LIST_ENTRY *Blink
    +0f8       union    _ULARGE_INTEGER DueTime
    +0f8          uint32   LowPart
    +0fc          uint32   HighPart
    +0f8          struct   __unnamed12 u
    +0f8             uint32   LowPart
    +0fc             uint32   HighPart
    +0f8          uint64   QuadPart
    +100       struct   _LIST_ENTRY TimerListEntry
    +100          struct   _LIST_ENTRY *Flink
    +104          struct   _LIST_ENTRY *Blink
    +108       struct   _KDPC *Dpc
    +10c       int32    Period
    +110    struct   _LIST_ENTRY QueueListEntry
    +110       struct   _LIST_ENTRY *Flink
    +114       struct   _LIST_ENTRY *Blink
    +118    uint32   Affinity
    +11c    byte     Preempted
    +11d    byte     ProcessReadyQueue
    +11e    byte     KernelStackResident
    +11f    byte     NextProcessor
    +120    void     *CallbackStack
    +124    void     *Win32Thread
    +128    struct   _KTRAP_FRAME *TrapFrame
    +12c    struct   _KAPC_STATE *ApcStatePointer[2]
    +134    char     PreviousMode
    +135    byte     EnableStackSwap
    +136    byte     LargeStack
    +137    byte     ResourceIndex
    +138    uint32   KernelTime
    +13c    uint32   UserTime
    +140    struct   _KAPC_STATE SavedApcState
    +140       struct   _LIST_ENTRY ApcListHead[2]
                  struct   _LIST_ENTRY *Flink
                  struct   _LIST_ENTRY *Blink
    +150       struct   _KPROCESS *Process
    +154       byte     KernelApcInProgress
    +155       byte     KernelApcPending
    +156       byte     UserApcPending
    +158    byte     Alertable
    +159    byte     ApcStateIndex
    +15a    byte     ApcQueueable
    +15b    byte     AutoAlignment
    +15c    void     *StackBase
    +160    struct   _KAPC SuspendApc
    +160       int16    Type
    +162       int16    Size
    +164       uint32   Spare0
    +168       struct   _KTHREAD *Thread
    +16c       struct   _LIST_ENTRY ApcListEntry
    +16c          struct   _LIST_ENTRY *Flink
    +170          struct   _LIST_ENTRY *Blink
    +174       function *KernelRoutine
    +178       function *RundownRoutine
    +17c       function *NormalRoutine
    +180       void     *NormalContext
    +184       void     *SystemArgument1
    +188       void     *SystemArgument2
    +18c       char     ApcStateIndex
    +18d       char     ApcMode
    +18e       byte     Inserted
    +190    struct   _KSEMAPHORE SuspendSemaphore
    +190       struct   _DISPATCHER_HEADER Header
    +190          byte     Type
    +191          byte     Absolute
    +192          byte     Size
    +193          byte     Inserted
    +194          int32    SignalState
    +198          struct   _LIST_ENTRY WaitListHead
    +198             struct   _LIST_ENTRY *Flink
    +19c             struct   _LIST_ENTRY *Blink
    +1a0       int32    Limit
    +1a4    struct   _LIST_ENTRY ThreadListEntry
    +1a4       struct   _LIST_ENTRY *Flink
    +1a8       struct   _LIST_ENTRY *Blink
    +1ac    char     FreezeCount
    +1ad    char     SuspendCount
    +1ae    byte     IdealProcessor
    +1af    byte     DisableBoost
    +1b0 union    _LARGE_INTEGER CreateTime
    +1b0    uint32   LowPart
    +1b4    int32    HighPart
    +1b0    struct   __unnamed3 u
    +1b0       uint32   LowPart
    +1b4       int32    HighPart
    +1b0    int64    QuadPart
    +1b0 bits0-1 NestedFaultCount
    +1b0 bits2-2 ApcNeeded
    +1b8 union    _LARGE_INTEGER ExitTime
    +1b8    uint32   LowPart
    +1bc    int32    HighPart
    +1b8    struct   __unnamed3 u
    +1b8       uint32   LowPart
    +1bc       int32    HighPart
    +1b8    int64    QuadPart
    +1b8 struct   _LIST_ENTRY LpcReplyChain
    +1b8    struct   _LIST_ENTRY *Flink
    +1bc    struct   _LIST_ENTRY *Blink
    +1c0 int32    ExitStatus
    +1c0 void     *OfsChain
    +1c4 struct   _LIST_ENTRY PostBlockList
    +1c4    struct   _LIST_ENTRY *Flink
    +1c8    struct   _LIST_ENTRY *Blink
    +1cc struct   _LIST_ENTRY TerminationPortList
    +1cc    struct   _LIST_ENTRY *Flink
    +1d0    struct   _LIST_ENTRY *Blink
    +1d4 uint32   ActiveTimerListLock
    +1d8 struct   _LIST_ENTRY ActiveTimerListHead
    +1d8    struct   _LIST_ENTRY *Flink
    +1dc    struct   _LIST_ENTRY *Blink
    +1e0 struct   _CLIENT_ID Cid
    +1e0    void     *UniqueProcess
    +1e4    void     *UniqueThread
    +1e8 struct   _KSEMAPHORE LpcReplySemaphore
    +1e8    struct   _DISPATCHER_HEADER Header
    +1e8       byte     Type
    +1e9       byte     Absolute
    +1ea       byte     Size
    +1eb       byte     Inserted
    +1ec       int32    SignalState
    +1f0       struct   _LIST_ENTRY WaitListHead
    +1f0          struct   _LIST_ENTRY *Flink
    +1f4          struct   _LIST_ENTRY *Blink
    +1f8    int32    Limit
    +1fc void     *LpcReplyMessage
    +200 uint32   LpcReplyMessageId
    +204 uint32   PerformanceCountLow
    +208 struct   _PS_IMPERSONATION_INFORMATION *ImpersonationInfo
    +20c struct   _LIST_ENTRY IrpList
    +20c    struct   _LIST_ENTRY *Flink
    +210    struct   _LIST_ENTRY *Blink
    +214 uint32   TopLevelIrp
    +218 struct   _DEVICE_OBJECT *DeviceToVerify
    +21c uint32   ReadClusterSize
    +220 byte     ForwardClusterOnly
    +221 byte     DisablePageFaultClustering
    +222 byte     DeadThread
    +223 byte     HideFromDebugger
    +224 uint32   HasTerminated
    +228 uint32   GrantedAccess
    +22c struct   _EPROCESS *ThreadsProcess
    +230 void     *StartAddress
    +234 void     *Win32StartAddress
    +234 uint32   LpcReceivedMessageId
    +238 byte     LpcExitThreadCalled
    +239 byte     HardErrorsAreDisabled
    +23a byte     LpcReceivedMsgIdValid
    +23b byte     ActiveImpersonationInfo
    +23c int32    PerformanceCountHigh
    +240 struct   _LIST_ENTRY ThreadListEntry
    +240    struct   _LIST_ENTRY *Flink
    +244    struct   _LIST_ENTRY *Blink

 

原创粉丝点击