• 【旧文章搬运】Windows内核常见数据结构(进程相关)


    原文发表于百度空间,2008-7-24
    ==========================================================================

    进程的相关结构非常重要,重点学习~
    有一些内容参考自:http://dev.csdn.net/article/20/20210.shtm

    进程结构中,首推EPROCESS,标记一些重要成员(可能不全):
    lkd> dt _EPROCESS
    nt!_EPROCESS
       +0x000 Pcb              : _KPROCESS //进程控制块
       +0x06c ProcessLock      : _EX_PUSH_LOCK
       +0x070 CreateTime       : _LARGE_INTEGER //创建时间
       +0x078 ExitTime         : _LARGE_INTEGER     //退出时间
       +0x080 RundownProtect   : _EX_RUNDOWN_REF
       +0x084 UniqueProcessId : Ptr32 Void    //这个是PID
       +0x088 ActiveProcessLinks : _LIST_ENTRY //连接EPROCESS的双链,断链就是断这里
       +0x090 QuotaUsage       : [3] Uint4B
       +0x09c QuotaPeak        : [3] Uint4B
       +0x0a8 CommitCharge     : Uint4B
       +0x0ac PeakVirtualSize : Uint4B
       +0x0b0 VirtualSize      : Uint4B
       +0x0b4 SessionProcessLinks : _LIST_ENTRY
       +0x0bc DebugPort        : Ptr32 Void
       +0x0c0 ExceptionPort    : Ptr32 Void
       +0x0c4 ObjectTable      : Ptr32 _HANDLE_TABLE  //句柄表
       +0x0c8 Token            : _EX_FAST_REF   //令牌
       +0x0cc WorkingSetLock   : _FAST_MUTEX
       +0x0ec WorkingSetPage   : Uint4B
       +0x0f0 AddressCreationLock : _FAST_MUTEX
       +0x110 HyperSpaceLock   : Uint4B
       +0x114 ForkInProgress   : Ptr32 _ETHREAD
       +0x118 HardwareTrigger : Uint4B
       +0x11c VadRoot          : Ptr32 Void
       +0x120 VadHint          : Ptr32 Void
       +0x124 CloneRoot        : Ptr32 Void
       +0x128 NumberOfPrivatePages : Uint4B
       +0x12c NumberOfLockedPages : Uint4B
       +0x130 Win32Process     : Ptr32 Void
       +0x134 Job              : Ptr32 _EJOB          //进程所属的JOB对象
       +0x138 SectionObject    : Ptr32 Void
       +0x13c SectionBaseAddress : Ptr32 Void
       +0x140 QuotaBlock       : Ptr32 _EPROCESS_QUOTA_BLOCK
       +0x144 WorkingSetWatch : Ptr32 _PAGEFAULT_HISTORY
       +0x148 Win32WindowStation : Ptr32 Void
       +0x14c InheritedFromUniqueProcessId : Ptr32 Void
       +0x150 LdtInformation   : Ptr32 Void
       +0x154 VadFreeHint      : Ptr32 Void
       +0x158 VdmObjects       : Ptr32 Void
       +0x15c DeviceMap        : Ptr32 Void
       +0x160 PhysicalVadList : _LIST_ENTRY
       +0x168 PageDirectoryPte : _HARDWARE_PTE
       +0x168 Filler           : Uint8B
       +0x170 Session          : Ptr32 Void
       +0x174 ImageFileName    : [16] UChar    //映像名称
       +0x184 JobLinks         : _LIST_ENTRY
       +0x18c LockedPagesList : Ptr32 Void
       +0x190 ThreadListHead   : _LIST_ENTRY            //线程列表
       +0x198 SecurityPort     : Ptr32 Void
       +0x19c PaeTop           : Ptr32 Void
       +0x1a0 ActiveThreads    : Uint4B //线程数
       +0x1a4 GrantedAccess    : Uint4B
       +0x1a8 DefaultHardErrorProcessing : Uint4B
       +0x1ac LastThreadExitStatus : Int4B
       +0x1b0 Peb              : Ptr32 _PEB         //进程环境块
       +0x1b4 PrefetchTrace    : _EX_FAST_REF
       +0x1b8 ReadOperationCount : _LARGE_INTEGER
       +0x1c0 WriteOperationCount : _LARGE_INTEGER
       +0x1c8 OtherOperationCount : _LARGE_INTEGER
       +0x1d0 ReadTransferCount : _LARGE_INTEGER
       +0x1d8 WriteTransferCount : _LARGE_INTEGER
       +0x1e0 OtherTransferCount : _LARGE_INTEGER
       +0x1e8 CommitChargeLimit : Uint4B
       +0x1ec CommitChargePeak : Uint4B
       +0x1f0 AweInfo          : Ptr32 Void
       +0x1f4 SeAuditProcessCreationInfo : _SE_AUDIT_PROCESS_CREATION_INFO
       +0x1f8 Vm               : _MMSUPPORT
       +0x238 LastFaultCount   : Uint4B
       +0x23c ModifiedPageCount : Uint4B
       +0x240 NumberOfVads     : Uint4B
       +0x244 JobStatus        : Uint4B
       +0x248 Flags            : Uint4B
       +0x248 CreateReported   : Pos 0, 1 Bit
       +0x248 NoDebugInherit   : Pos 1, 1 Bit
       +0x248 ProcessExiting   : Pos 2, 1 Bit
       +0x248 ProcessDelete    : Pos 3, 1 Bit
       +0x248 Wow64SplitPages : Pos 4, 1 Bit
       +0x248 VmDeleted        : Pos 5, 1 Bit
       +0x248 OutswapEnabled   : Pos 6, 1 Bit
       +0x248 Outswapped       : Pos 7, 1 Bit
       +0x248 ForkFailed       : Pos 8, 1 Bit
       +0x248 HasPhysicalVad   : Pos 9, 1 Bit
       +0x248 AddressSpaceInitialized : Pos 10, 2 Bits
       +0x248 SetTimerResolution : Pos 12, 1 Bit
       +0x248 BreakOnTermination : Pos 13, 1 Bit
       +0x248 SessionCreationUnderway : Pos 14, 1 Bit
       +0x248 WriteWatch       : Pos 15, 1 Bit
       +0x248 ProcessInSession : Pos 16, 1 Bit
       +0x248 OverrideAddressSpace : Pos 17, 1 Bit
       +0x248 HasAddressSpace : Pos 18, 1 Bit
       +0x248 LaunchPrefetched : Pos 19, 1 Bit
       +0x248 InjectInpageErrors : Pos 20, 1 Bit
       +0x248 VmTopDown        : Pos 21, 1 Bit
       +0x248 Unused3          : Pos 22, 1 Bit
       +0x248 Unused4          : Pos 23, 1 Bit
       +0x248 VdmAllowed       : Pos 24, 1 Bit
       +0x248 Unused           : Pos 25, 5 Bits
       +0x248 Unused1          : Pos 30, 1 Bit
       +0x248 Unused2          : Pos 31, 1 Bit
       +0x24c ExitStatus       : Int4B
       +0x250 NextPageColor    : Uint2B
       +0x252 SubSystemMinorVersion : UChar
       +0x253 SubSystemMajorVersion : UChar
       +0x252 SubSystemVersion : Uint2B
       +0x254 PriorityClass    : UChar
       +0x255 WorkingSetAcquiredUnsafe : UChar
       +0x258 Cookie           : Uint4B

    进程控制块位于每个进程EPROCESS的开头,因此它的地址也就是EPROCESS的地址.
    lkd> dt _KPROCESS
    nt!_KPROCESS
       +0x000 Header           : _DISPATCHER_HEADER
       +0x010 ProfileListHead : _LIST_ENTRY
       +0x018 DirectoryTableBase : [2] Uint4B  //页目录
       +0x020 LdtDescriptor    : _KGDTENTRY    //GDT
       +0x028 Int21Descriptor : _KIDTENTRY    //IDT
       +0x030 IopmOffset       : Uint2B
       +0x032 Iopl             : UChar
       +0x033 Unused           : UChar
       +0x034 ActiveProcessors : Uint4B
       +0x038 KernelTime       : Uint4B    //内核时间
       +0x03c UserTime         : Uint4B              //用户态时间
       +0x040 ReadyListHead    : _LIST_ENTRY
       +0x048 SwapListEntry    : _SINGLE_LIST_ENTRY
       +0x04c VdmTrapcHandler : Ptr32 Void
       +0x050 ThreadListHead   : _LIST_ENTRY
       +0x058 ProcessLock      : Uint4B
       +0x05c Affinity         : Uint4B
       +0x060 StackCount       : Uint2B
       +0x062 BasePriority     : Char
       +0x063 ThreadQuantum    : Char
       +0x064 AutoAlignment    : UChar
       +0x065 State            : UChar
       +0x066 ThreadSeed       : UChar
       +0x067 DisableBoost     : UChar
       +0x068 PowerState       : UChar
       +0x069 DisableQuantum   : UChar
       +0x06a IdealNode        : UChar
       +0x06b Flags            : _KEXECUTE_OPTIONS
       +0x06b ExecuteOptions   : UChar

    进程环境块PEB:
    lkd> dt _PEB
    nt!_PEB
       +0x000 InheritedAddressSpace : UChar
       +0x001 ReadImageFileExecOptions : UChar
       +0x002 BeingDebugged    : UChar  //IsDebugPresent所检查的标志位,是否被调试
       +0x003 SpareBool        : UChar
       +0x004 Mutant           : Ptr32 Void
       +0x008 ImageBaseAddress : Ptr32 Void
       +0x00c Ldr              : Ptr32 _PEB_LDR_DATA //所有加载模块构成的链表
       +0x010 ProcessParameters : Ptr32 _RTL_USER_PROCESS_PARAMETERS   //用户进程参数块
       +0x014 SubSystemData    : Ptr32 Void
       +0x018 ProcessHeap      : Ptr32 Void
       +0x01c FastPebLock      : Ptr32 _RTL_CRITICAL_SECTION
       +0x020 FastPebLockRoutine : Ptr32 Void
       +0x024 FastPebUnlockRoutine : Ptr32 Void
       +0x028 EnvironmentUpdateCount : Uint4B
       +0x02c KernelCallbackTable : Ptr32 Void
       +0x030 SystemReserved   : [1] Uint4B
       +0x034 AtlThunkSListPtr32 : Uint4B
       +0x038 FreeList         : Ptr32 _PEB_FREE_BLOCK
       +0x03c TlsExpansionCounter : Uint4B
       +0x040 TlsBitmap        : Ptr32 Void
       +0x044 TlsBitmapBits    : [2] Uint4B
       +0x04c ReadOnlySharedMemoryBase : Ptr32 Void
       +0x050 ReadOnlySharedMemoryHeap : Ptr32 Void
       +0x054 ReadOnlyStaticServerData : Ptr32 Ptr32 Void
       +0x058 AnsiCodePageData : Ptr32 Void
       +0x05c OemCodePageData : Ptr32 Void
       +0x060 UnicodeCaseTableData : Ptr32 Void
       +0x064 NumberOfProcessors : Uint4B
       +0x068 NtGlobalFlag     : Uint4B
       +0x070 CriticalSectionTimeout : _LARGE_INTEGER
       +0x078 HeapSegmentReserve : Uint4B
       +0x07c HeapSegmentCommit : Uint4B
       +0x080 HeapDeCommitTotalFreeThreshold : Uint4B
       +0x084 HeapDeCommitFreeBlockThreshold : Uint4B
       +0x088 NumberOfHeaps    : Uint4B
       +0x08c MaximumNumberOfHeaps : Uint4B
       +0x090 ProcessHeaps     : Ptr32 Ptr32 Void  //进程默认堆
       +0x094 GdiSharedHandleTable : Ptr32 Void
       +0x098 ProcessStarterHelper : Ptr32 Void
       +0x09c GdiDCAttributeList : Uint4B
       +0x0a0 LoaderLock       : Ptr32 Void
       +0x0a4 OSMajorVersion   : Uint4B
       +0x0a8 OSMinorVersion   : Uint4B
       +0x0ac OSBuildNumber    : Uint2B
       +0x0ae OSCSDVersion     : Uint2B
       +0x0b0 OSPlatformId     : Uint4B
       +0x0b4 ImageSubsystem   : Uint4B
       +0x0b8 ImageSubsystemMajorVersion : Uint4B
       +0x0bc ImageSubsystemMinorVersion : Uint4B
       +0x0c0 ImageProcessAffinityMask : Uint4B
       +0x0c4 GdiHandleBuffer : [34] Uint4B
       +0x14c PostProcessInitRoutine : Ptr32     void 
       +0x150 TlsExpansionBitmap : Ptr32 Void
       +0x154 TlsExpansionBitmapBits : [32] Uint4B
       +0x1d4 SessionId        : Uint4B
       +0x1d8 AppCompatFlags   : _ULARGE_INTEGER
       +0x1e0 AppCompatFlagsUser : _ULARGE_INTEGER
       +0x1e8 pShimData        : Ptr32 Void
       +0x1ec AppCompatInfo    : Ptr32 Void
       +0x1f0 CSDVersion       : _UNICODE_STRING
       +0x1f8 ActivationContextData : Ptr32 Void
       +0x1fc ProcessAssemblyStorageMap : Ptr32 Void
       +0x200 SystemDefaultActivationContextData : Ptr32 Void
       +0x204 SystemAssemblyStorageMap : Ptr32 Void
       +0x208 MinimumStackCommit : Uint4B

    PEB中的Ldr:
    lkd> dt _PEB_LDR_DATA
    nt!_PEB_LDR_DATA
       +0x000 Length           : Uint4B
       +0x004 Initialized      : UChar
       +0x008 SsHandle         : Ptr32 Void
       +0x00c InLoadOrderModuleList : _LIST_ENTRY
       +0x014 InMemoryOrderModuleList : _LIST_ENTRY
       +0x01c InInitializationOrderModuleList : _LIST_ENTRY
       +0x024 EntryInProgress : Ptr32 Void

  • 相关阅读:
    TP5.1 分页CSS样式(转载)
    简单的layui二级联动
    关于layui部分表单不显示的问题(Select, checkBox)
    MySQL 开启远程访问权限 | 宝塔系统
    tp5.1 本地正常, 线上route.php不起作用的问题
    cocos自动图集
    微信小程序video
    nuxt https
    接口数据加密
    node里读取命令行参数
  • 原文地址:https://www.cnblogs.com/achillis/p/10178349.html
Copyright © 2020-2023  润新知