进程结构体EPROCESS

1、进程结构体EPROCESS

每个windows进程在0环都有一个对应的结构体:EPROCESS  这个结构体包含了进程所有重要的信息。

kd> dt _EPROCESS

   +0x000 Pcb              : _KPROCESS

   +0x078 ProcessLock      : _EX_PUSH_LOCK

   +0x080 CreateTime       : _LARGE_INTEGER

   +0x088 ExitTime         : _LARGE_INTEGER

   +0x090 RundownProtect   : _EX_RUNDOWN_REF

   +0x094 UniqueProcessId  : Ptr32 Void

   +0x098 ActiveProcessLinks : _LIST_ENTRY

   +0x0a0 QuotaUsage       : [3] Uint4B

   +0x0ac QuotaPeak        : [3] Uint4B

   +0x0b8 CommitCharge     : Uint4B

   +0x0bc PeakVirtualSize  : Uint4B

   +0x0c0 VirtualSize      : Uint4B

   +0x0c4 SessionProcessLinks : _LIST_ENTRY

   +0x0cc DebugPort        : Ptr32 Void

   +0x0d0 ExceptionPort    : Ptr32 Void

   +0x0d4 ObjectTable      : Ptr32 _HANDLE_TABLE

   +0x0d8 Token            : _EX_FAST_REF

   +0x0dc WorkingSetPage   : Uint4B

   +0x0e0 AddressCreationLock : _KGUARDED_MUTEX

   +0x100 HyperSpaceLock   : Uint4B

   +0x104 ForkInProgress   : Ptr32 _ETHREAD

   +0x108 HardwareTrigger  : Uint4B

   +0x10c PhysicalVadRoot  : Ptr32 _MM_AVL_TABLE

   +0x110 CloneRoot        : Ptr32 Void

   +0x114 NumberOfPrivatePages : Uint4B

   +0x118 NumberOfLockedPages : Uint4B

   +0x11c Win32Process     : Ptr32 Void

   +0x120 Job              : Ptr32 _EJOB

   +0x124 SectionObject    : Ptr32 Void

   +0x128 SectionBaseAddress : Ptr32 Void

   +0x12c QuotaBlock       : Ptr32 _EPROCESS_QUOTA_BLOCK

   +0x130 WorkingSetWatch  : Ptr32 _PAGEFAULT_HISTORY

   +0x134 Win32WindowStation : Ptr32 Void

   +0x138 InheritedFromUniqueProcessId : Ptr32 Void

   +0x13c LdtInformation   : Ptr32 Void

   +0x140 VadFreeHint      : Ptr32 Void

   +0x144 VdmObjects       : Ptr32 Void

   +0x148 DeviceMap        : Ptr32 Void

   +0x14c Spare0           : [3] Ptr32 Void

   +0x158 PageDirectoryPte : _HARDWARE_PTE_X86

   +0x158 Filler           : Uint8B

   +0x160 Session          : Ptr32 Void

   +0x164 ImageFileName    : [16] UChar

   +0x174 JobLinks         : _LIST_ENTRY

   +0x17c LockedPagesList  : Ptr32 Void

   +0x180 ThreadListHead   : _LIST_ENTRY

   +0x188 SecurityPort     : Ptr32 Void

   +0x18c PaeTop           : Ptr32 Void

   +0x190 ActiveThreads    : Uint4B

   +0x194 GrantedAccess    : Uint4B

   +0x198 DefaultHardErrorProcessing : Uint4B

   +0x19c LastThreadExitStatus : Int4B

   +0x1a0 Peb              : Ptr32 _PEB

   +0x1a4 PrefetchTrace    : _EX_FAST_REF

   +0x1a8 ReadOperationCount : _LARGE_INTEGER

   +0x1b0 WriteOperationCount : _LARGE_INTEGER

   +0x1b8 OtherOperationCount : _LARGE_INTEGER

   +0x1c0 ReadTransferCount : _LARGE_INTEGER

   +0x1c8 WriteTransferCount : _LARGE_INTEGER

   +0x1d0 OtherTransferCount : _LARGE_INTEGER

   +0x1d8 CommitChargeLimit : Uint4B

   +0x1dc CommitChargePeak : Uint4B

   +0x1e0 AweInfo          : Ptr32 Void

   +0x1e4 SeAuditProcessCreationInfo : _SE_AUDIT_PROCESS_CREATION_INFO

   +0x1e8 Vm               : _MMSUPPORT

   +0x230 MmProcessLinks   : _LIST_ENTRY

   +0x238 ModifiedPageCount : Uint4B

   +0x23c JobStatus        : Uint4B

   +0x240 Flags            : Uint4B

   +0x240 CreateReported   : Pos 0, 1 Bit

   +0x240 NoDebugInherit   : Pos 1, 1 Bit

   +0x240 ProcessExiting   : Pos 2, 1 Bit

   +0x240 ProcessDelete    : Pos 3, 1 Bit

   +0x240 Wow64SplitPages  : Pos 4, 1 Bit

   +0x240 VmDeleted        : Pos 5, 1 Bit

   +0x240 OutswapEnabled   : Pos 6, 1 Bit

   +0x240 Outswapped       : Pos 7, 1 Bit

   +0x240 ForkFailed       : Pos 8, 1 Bit

   +0x240 Wow64VaSpace4Gb  : Pos 9, 1 Bit

   +0x240 AddressSpaceInitialized : Pos 10, 2 Bits

   +0x240 SetTimerResolution : Pos 12, 1 Bit

   +0x240 BreakOnTermination : Pos 13, 1 Bit

   +0x240 SessionCreationUnderway : Pos 14, 1 Bit

   +0x240 WriteWatch       : Pos 15, 1 Bit

   +0x240 ProcessInSession : Pos 16, 1 Bit

   +0x240 OverrideAddressSpace : Pos 17, 1 Bit

   +0x240 HasAddressSpace  : Pos 18, 1 Bit

   +0x240 LaunchPrefetched : Pos 19, 1 Bit

   +0x240 InjectInpageErrors : Pos 20, 1 Bit

   +0x240 VmTopDown        : Pos 21, 1 Bit

   +0x240 ImageNotifyDone  : Pos 22, 1 Bit

   +0x240 PdeUpdateNeeded  : Pos 23, 1 Bit

   +0x240 VdmAllowed       : Pos 24, 1 Bit

   +0x240 SmapAllowed      : Pos 25, 1 Bit

   +0x240 CreateFailed     : Pos 26, 1 Bit

   +0x240 DefaultIoPriority : Pos 27, 3 Bits

   +0x240 Spare1           : Pos 30, 1 Bit

   +0x240 Spare2           : Pos 31, 1 Bit

   +0x244 ExitStatus       : Int4B

   +0x248 NextPageColor    : Uint2B

   +0x24a SubSystemMinorVersion : UChar

   +0x24b SubSystemMajorVersion : UChar

   +0x24a SubSystemVersion : Uint2B

   +0x24c PriorityClass    : UChar

   +0x250 VadRoot          : _MM_AVL_TABLE

   +0x270 Cookie           : Uint4B

 

 

2、EPROCESS的KPROCESS主要成员介绍

1)    +0x000 Header           : _DISPATCHER_HEADER

         “可等待”对象,比如Mutex互斥体、Event事件等(WaitForSingleObject)

2)    +0x018 DirectoryTableBase : [2] Uint4B

               页目录表的基址

3)    +0x020 LdtDescriptor    : _KGDTENTRY 

    +0x028 Int21Descriptor  : _KIDTENTRY

                历史遗留,16位Windows 段选择子不够 每个进程都有一个LDT表

               Int21Descriptor  是 DOS下要用的

4)    +0x038 KernelTime       : Uint4B

       +0x03c UserTime         : Uint4B

       统计信息 记录了一个进程在内核模式/用户模式下所花的时间

5)  +0x05c Affinity         : Uint4B

       规定进程里面的所有线程能在哪个CPU上跑,如果值为1,那这个进程的所以线程只能在0号CPU上跑(00000001)                           

如果值为3,那这个进程的所以线程能在0、1号CPU上跑(000000011)    

如果值为4,那这个进程的所以线程能在2号CPU上跑(000000100)  

如果值为5,那这个进程的所以线程能在0,2号CPU上跑(000000101)    

4个字节共32位  所以最多32核 Windows64位 就64核               

如果只有一个CPU 把这个设置为4 那么这个进程就死了

6)  +0x064 BasePriority     : Char

       基础优先级或最低优先级 该进程中的所有线程最起码的优先级.

 

其他成员:

1)    +0x080 CreateTime       : _LARGE_INTEGER              +0x078 ExitTime         : _LARGE_INTEGER

       进程的创建/退出时间

2)    +0x094 UniqueProcessId  : Ptr32 Void

       进程的编号 任务管理器中的PID

3)    +0x098 ActiveProcessLinks : _LIST_ENTRY

       双向链表 所有的活动进程都连接在一起,构成了一个链表。ActiveProcessLinks 断链可实现进程隐藏。

       PsActiveProcessHead指向全局链表头

4)    +0x090 QuotaUsage       : [3] Uint4B                         +0x09c QuotaPeak        : [3] Uint4B   

       物理页相关的统计信息

5)    +0x0a8 CommitCharge     : Uint4B                     

     +0x0ac PeakVirtualSize  : Uint4B                          

     +0x0b0 VirtualSize      : Uint4B

       虚拟内存相关的统计信息

6)    +0x11c VadRoot          : Ptr32 Void

       标识0-2G哪些地址没占用了

7)    +0x0bc DebugPort        : Ptr32 Void

       +0x0c0 ExceptionPort    : Ptr32 Void     

       调试相关

8)    +0x0c4 ObjectTable      : Ptr32 _HANDLE_TABLE

       句柄表

9)    +0x174 ImageFileName    : [16] UChar

       进程镜像文件名 最多16个字节

10)   +0x1a0 ActiveThreads    : Uint4B

       活动线程的数量

11)   +0x1b0 Peb              : Ptr32 _PEB

       PEB((Process Environment Block 进程环境块):进程在3环的一个结构体,里面包含了进程的模块列表、是否处于调试状态等信息。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值