免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
上一个内容:21.联合体和位减-Windows驱动
全局句柄表的说明:
句柄本质是一个索引号
如下图红框任务管理器里的pid,它的内容都是4的倍数,但是可以看到从4直接跳到320了,这个原因是4到320之前是线程搞的,任务管理器里看不到,通过全局句柄才可以看得到
只有进程和线程有ID,其它的对象都只有名字(内核对象)
还有私有句柄表,私有句柄表属于进程里的,比如通过OpenProcess等函数通过PID进入找到进程对象,插入到对象的私有句柄表中,从而返回属于某进程的一个句柄索引
它是有这样的一个结构 _HANDLE_TABLE和_HANDLE_TABLE_ENTRY,句柄的信息在_HANDLE_TABLE_ENTRY这个结构,然后 _HANDLE_TABLE存放了_HANDLE_TABLE_ENTRY结构的内存地址
还有一个PspCidTable的结构,这个结构存放了 _HANDLE_TABLE,下图红框就是_HANDLE_TABLE的地址,dq nt!PspCidTable

如下图查看_HANDLE_TABLE的内容,dt _HANDLE_TABLE ffffaa0b`dd20e5c0

下图红框TableCode它指向的是一个内存页的首地址,一个内存页的大小是0x1000(4096)字节,如果最后一位是0,这个内存页里的数据是_HANDLE_TABLE_ENTRY结构,下图红框最后一位是1,这说明它指向的内存页里存放的是内存地址,然后每个内存地址又指向一个内存页,这个内存页里存放的才是_HANDLE_TABLE_ENTRY结构,如果最后一位是2,那就是下图TableCode字段指向的内存页里存放的是内存地址(A1),然后A1里面的每个内存地址(A2)里面指向的内存页存放的还是内存地址(A3),A3里每个内存地址都指向一个内存页,内存页里存放的是_HANDLE_TABLE_ENTRY,三层,我们家用电脑一般都是1

然后现在就应该知道全局句柄表的存放的逻辑了,接下来找一个,首先一个内存页的大小是0x1000,然后一个内存地址的大小是0x8,如下图0x1000除以0x8结果是512,也就是说一个内存页可以存放512个内存地址

然后HANDLE_TABLE_ENTRY结构大小是0x16,也就是说一个内存页只能存放256个HANDLE_TABLE_ENTRY结构

接下来开始找,如下图它的pid是7388

一个内存页只能存放256个,但是这个序号是4自增的,也就是说0是256里的第一个,4是256里的第二个,8是256的第三个,所以我们先要把256换算成索引,256乘以4结果是1024,也就是说一个内存页最大的索引是1024,上图我们的pid是7388,如下图也就是说我们的am.exe在第7个内存页中,

然后7388减7168结果是220,这说明我们的am.exe在第七个内存页中的220位置,7168的来源是1024 乘以 7,这个7是通过上方7388除以1024得到的

接下来开始找,如下图使用时把最后一位改成0,dq 0xffffaa0b`e2294000

如下图第七个

然后如下图就得到了一个数据,这个就是我们进程的地址,只不过它被加密了,dq ffffaa0b`e554e000+ 4*DC,这里的DC是220的十六进制数

解密的方式,先转成二进制
c98394a1`1080f247的二进制
1100100110000011100101001010000100010000100000001111001001000111
然后取前44位
1100 1001 1000 0011 1001 0100 1010 0001 0001 0000 1000
然后补20位零
0000 0000 0000 0000 0000 1100 1001 1000 0011 1001 0100 1010 0001 0001 0000 1000
然后左移4位
0000 0000 0000 0000 1100 1001 1000 0011 1001 0100 1010 0001 0001 0000 1000 0000
然后前16位变成1
1111 1111 1111 1111 1100 1001 1000 0011 1001 0100 1010 0001 0001 0000 1000 0000
然后转成16进制
FFFFC983`94A11080,这个就是我们am.exe进程的地址
如下图红框pid,7388的十六进制就是1CDC
然后如下图红框,还可以在0x338位置的FileName看到我们的进程名
结构说明:
cpp
nt!_EPROCESS
+0x000 Pcb : _KPROCESS
// 核心作用:进程的内核态基础控制块,包含调度、优先级、CPU亲和性等核心调度属性
// 初始化来源:进程创建时由内核函数(如PspCreateProcess)初始化,继承父进程KPROCESS基础属性
// 补充说明:_KPROCESS是_EPROCESS的基类,包含线程调度、内核栈、状态等最核心的内核调度信息
+0x1c8 ProcessLock : _EX_PUSH_LOCK
// 核心作用:保护_EPROCESS结构体的并发访问(如多线程修改进程属性时加锁)
// 初始化来源:进程创建时由ExInitializePushLock初始化,默认无锁状态
// 补充说明:轻量级自旋锁,内核修改Process相关字段(如Flags、ActiveThreads)时会持有该锁
+0x1d0 UniqueProcessId : 0x00000000`00001cdc Void
// 核心作用:进程的全局唯一PID(十进制7388),系统内唯一标识进程
// 初始化来源:进程创建时由内核从PID池分配(PspNextProcessId),创建后不可修改
// 补充说明:调试中最核心的标识字段,PspCidTable通过该值关联进程句柄与_EPROCESS
+0x1d8 ActiveProcessLinks : _LIST_ENTRY [ 0xffffc983`96e03258 - 0xffffc983`94df3258 ]
// 核心作用:将进程挂入系统全局活动进程链表(PsActiveProcessHead)
// 初始化来源:进程创建时由PspInsertProcess插入链表,退出时移除
// 补充说明:遍历系统所有进程的核心链表,!process 0 0 命令即遍历该链表
+0x1e8 RundownProtect : _EX_RUNDOWN_REF
// 核心作用:防止进程销毁时的竞态条件(如线程还在访问_EPROCESS时进程被删除)
// 初始化来源:进程创建时初始化引用计数为1,销毁时通过ExWaitForRundownProtectionRelease等待引用释放
// 补充说明:内核态访问进程对象时会递增该引用,避免"野指针"
+0x1f0 Flags2 : 0xd014
// 核心作用:进程扩展属性标志位(位段化存储,每个位对应一个布尔属性)
// 初始化来源:进程创建时继承父进程Flags2,部分位由CreateProcess的参数或系统策略设置
// 补充说明:以下是各子位的含义:
+0x1f0 JobNotReallyActive : 0y0 // 作用:标记进程是否属于"非活跃作业" | 来源:作业对象(EJOB)管理时设置
+0x1f0 AccountingFolded : 0y0 // 作用:标记进程记账信息是否已合并到作业 | 来源:作业配额统计时更新
+0x1f0 NewProcessReported : 0y1 // 作用:标记进程创建事件已上报(如ETW/审计) | 来源:PspNotifyProcessCreate触发后置1
+0x1f0 ExitProcessReported : 0y0 // 作用:标记进程退出事件已上报 | 来源:进程退出时PspNotifyProcessExit置1
+0x1f0 ReportCommitChanges : 0y1 // 作用:标记需要上报内存提交变化 | 来源:内存配额变化时内核置位
+0x1f0 LastReportMemory : 0y0 // 作用:标记上次内存上报状态 | 来源:内存审计模块维护
+0x1f0 ForceWakeCharge : 0y0 // 作用:强制进程唤醒时计算能耗 | 来源:电源管理模块设置
+0x1f0 CrossSessionCreate : 0y0 // 作用:标记进程跨会话创建 | 来源:CreateProcess跨会话调用时置位
+0x1f0 NeedsHandleRundown : 0y0 // 作用:标记进程句柄表需要清理 | 来源:进程退出时内核置位
+0x1f0 RefTraceEnabled : 0y0 // 作用:启用进程对象引用跟踪 | 来源:内核调试/验证模式下开启
+0x1f0 PicoCreated : 0y0 // 作用:标记进程是Pico进程(轻量级容器) | 来源:Pico进程创建时置位
+0x1f0 EmptyJobEvaluated : 0y0 // 作用:标记空作业已评估 | 来源:作业对象管理模块维护
+0x1f0 DefaultPagePriority : 0y101 // 作用:进程默认页面优先级(5级) | 来源:继承父进程,可通过SetProcessInformation修改
+0x1f0 PrimaryTokenFrozen : 0y1 // 作用:标记主令牌不可修改 | 来源:安全模块(LSASS)冻结令牌时置位
+0x1f0 ProcessVerifierTarget : 0y0 // 作用:标记进程是驱动验证器目标 | 来源:驱动验证器(Verifier)启动时置位
+0x1f0 RestrictSetThreadContext : 0y0 // 作用:限制SetThreadContext修改线程上下文 | 来源:安全策略/调试器设置
+0x1f0 AffinityPermanent : 0y0 // 作用:标记CPU亲和性为永久生效 | 来源:SetProcessAffinityMask时置位
+0x1f0 AffinityUpdateEnable : 0y0 // 作用:允许动态更新CPU亲和性 | 来源:内核调度模块控制
+0x1f0 PropagateNode : 0y0 // 作用:亲和性节点传播 | 来源:NUMA架构下调度模块设置
+0x1f0 ExplicitAffinity : 0y0 // 作用:标记显式设置了CPU亲和性 | 来源:用户调用SetProcessAffinityMask时置位
+0x1f0 Flags2Available1 : 0y00 // 作用:预留位(未使用) | 来源:系统保留,暂无用途
+0x1f0 EnableReadVmLogging : 0y0 // 作用:启用读虚拟内存操作日志 | 来源:ETW/审计模块开启
+0x1f0 EnableWriteVmLogging : 0y0 // 作用:启用写虚拟内存操作日志 | 来源:ETW/审计模块开启
+0x1f0 FatalAccessTerminationRequested : 0y0 // 作用:标记进程因内存访问错误需要终止 | 来源:内存管理器检测到致命错误时置位
+0x1f0 DisableSystemAllowedCpuSet : 0y0 // 作用:禁用系统默认的CPU集 | 来源:作业对象/进程管控策略设置
+0x1f0 Flags2Available2 : 0y000 // 作用:预留位(未使用) | 来源:系统保留
+0x1f0 InPrivate : 0y0 // 作用:标记进程为InPrivate(隐私模式) | 来源:浏览器等进程创建时设置
+0x1f4 Flags : 0x144d0c01
// 核心作用:进程核心属性标志位(比Flags2更基础的进程状态)
// 初始化来源:进程创建时由PspCreateProcess初始化,运行时根据进程状态动态修改
// 补充说明:以下是各子位的含义:
+0x1f4 CreateReported : 0y1 // 作用:标记进程创建事件已上报 | 来源:PspCreateProcess结束后置1
+0x1f4 NoDebugInherit : 0y0 // 作用:进程调试权限不继承给子进程 | 来源:CreateProcess指定DEBUG_PROCESS时置位
+0x1f4 ProcessExiting : 0y0 // 作用:标记进程正在退出 | 来源:ExitProcess/终止进程时内核置1
+0x1f4 ProcessDelete : 0y0 // 作用:标记进程即将被删除 | 来源:进程退出最后阶段置1
+0x1f4 ManageExecutableMemoryWrites : 0y0 // 作用:允许修改可执行内存 | 来源:内存保护策略设置
+0x1f4 VmDeleted : 0y0 // 作用:标记进程地址空间已释放 | 来源:MmDeleteProcessAddressSpace后置1
+0x1f4 OutswapEnabled : 0y0 // 作用:启用进程内存换出 | 来源:内存管理器低内存时开启
+0x1f4 Outswapped : 0y0 // 作用:标记进程内存已换出到磁盘 | 来源:内存管理器换出内存后置1
+0x1f4 FailFastOnCommitFail : 0y0 // 作用:内存提交失败时快速终止进程 | 来源:进程配额耗尽时置位
+0x1f4 Wow64VaSpace4Gb : 0y0 // 作用:Wow64进程启用4GB地址空间 | 来源:Wow64层初始化时设置
+0x1f4 AddressSpaceInitialized : 0y11 // 作用:进程地址空间初始化状态(11=已完全初始化) | 来源:MmInitializeProcessAddressSpace设置
+0x1f4 SetTimerResolution : 0y0 // 作用:进程修改过定时器分辨率 | 来源:timeBeginPeriod调用时置位
+0x1f4 BreakOnTermination : 0y0 // 作用:进程终止时触发调试断点 | 来源:调试器设置DEBUG_ONLY_THIS_PROCESS时置位
+0x1f4 DeprioritizeViews : 0y0 // 作用:降低进程内存视图优先级 | 来源:内存管理器低内存时置位
+0x1f4 WriteWatch : 0y0 // 作用:启用写时监控(跟踪内存修改) | 来源:WriteProcessMemory时开启
+0x1f4 ProcessInSession : 0y1 // 作用:标记进程属于某个会话(非系统会话0) | 来源:进程创建时根据创建者会话置位
+0x1f4 OverrideAddressSpace : 0y0 // 作用:覆盖进程地址空间 | 来源:调试器/内核模块强制修改地址空间时置位
+0x1f4 HasAddressSpace : 0y1 // 作用:标记进程拥有独立地址空间 | 来源:用户态进程默认置1,内核进程置0
+0x1f4 LaunchPrefetched : 0y1 // 作用:进程启动时已预取数据 | 来源:超级预取(SuperFetch)模块置位
+0x1f4 Reserved : 0y0 // 作用:预留位 | 来源:系统保留
+0x1f4 VmTopDown : 0y0 // 作用:进程内存分配采用Top-Down模式 | 来源:CreateProcess指定CREATE_TOP_LEVEL_WINDOW时置位
+0x1f4 ImageNotifyDone : 0y1 // 作用:镜像加载通知已完成 | 来源:PsNotifyLoadImage结束后置1
+0x1f4 PdeUpdateNeeded : 0y0 // 作用:需要更新页目录项(PDE) | 来源:地址空间扩展时置位
+0x1f4 VdmAllowed : 0y0 // 作用:允许进程运行VDM(虚拟DOS机) | 来源:16位程序运行时置位
+0x1f4 ProcessRundown : 0y0 // 作用:进程正在清理资源 | 来源:PspExitProcess时置位
+0x1f4 ProcessInserted : 0y1 // 作用:标记进程已插入活动进程链表 | 来源:PspInsertProcess后置1
+0x1f4 DefaultIoPriority : 0y010 // 作用:进程默认IO优先级(2级) | 来源:继承父进程,可通过SetProcessPriorityClass修改
+0x1f4 ProcessSelfDelete : 0y0 // 作用:进程标记自身需要删除 | 来源:自删除程序调用DeleteFile(自身EXE)时置位
+0x1f4 SetTimerResolutionLink : 0y0 // 作用:定时器分辨率链表标记 | 来源:timeBeginPeriod时置位
+0x1f8 CreateTime : _LARGE_INTEGER 0x01dc7798`f18e91d9
// 核心作用:进程创建的时间戳(系统启动以来的100ns单位)
// 初始化来源:进程创建时由KeQuerySystemTime赋值
// 补充说明:可通过!time 0x01dc7798f18e91d9转换为本地时间
+0x200 ProcessQuotaUsage : [2] 0x2e80
// 核心作用:进程当前使用的配额(0=分页池,1=非分页池),单位:字节
// 初始化来源:进程创建时从父进程继承初始值,运行时随内核对象创建/销毁更新
// 补充说明:配额由EPROCESS_QUOTA_BLOCK管理,超出配额会导致创建对象失败
+0x210 ProcessQuotaPeak : [2] 0x30c0
// 核心作用:进程生命周期内配额使用的峰值(0=分页池,1=非分页池)
// 初始化来源:进程创建时为0,运行时超过当前值则更新
// 补充说明:用于监控进程的内核资源消耗峰值
+0x220 PeakVirtualSize : 0x00000001`0a611000
// 核心作用:进程虚拟地址空间使用的峰值大小(字节)
// 初始化来源:进程创建时为0,内存分配超过当前值则更新
// 补充说明:包含所有虚拟内存(已提交+保留)
+0x228 VirtualSize : 0x00000001`09d21000
// 核心作用:进程当前虚拟地址空间使用大小(字节)
// 初始化来源:进程创建时为镜像大小,运行时随内存分配/释放动态更新
// 补充说明:任务管理器"虚拟内存"列对应此字段
+0x230 SessionProcessLinks : _LIST_ENTRY [ 0xffffc983`90d862b0 - 0xffffc983`96d7a2b0 ]
// 核心作用:将进程挂入所属会话的进程链表(_SESSIONS.ProcessList)
// 初始化来源:进程创建时由PspAssignProcessToSession插入链表
// 补充说明:会话结束时会遍历该链表终止所有进程
+0x240 ExceptionPortData : 0xffffc983`9004e810 Void
+0x240 ExceptionPortValue : 0xffffc983`9004e810
+0x240 ExceptionPortState : 0y000
// 核心作用:进程的异常端口(用于调试/异常分发)
// 初始化来源:调试器附加时设置(如DebugActiveProcess),默认指向系统默认异常端口
// 补充说明:进程触发异常时,内核会通过该端口通知调试器
+0x248 Token : _EX_FAST_REF
// 核心作用:进程的主令牌(安全上下文),指向_TOKEN结构体
// 初始化来源:进程创建时从父进程复制或由LSASS分配
// 补充说明:EX_FAST_REF是快速引用结构,通过&0xFFFFFFFFFFFFFFF0获取_TOKEN地址
+0x250 MmReserved : 0
// 核心作用:内存管理器预留字段
// 初始化来源:进程创建时置0,内存管理器内部使用(暂无公开用途)
+0x258 AddressCreationLock : _EX_PUSH_LOCK
// 核心作用:保护进程地址空间创建/修改(如VirtualAlloc/VirtualFree)
// 初始化来源:进程创建时初始化,内存分配/释放时加锁
// 补充说明:防止多线程同时修改进程页表
+0x260 PageTableCommitmentLock : _EX_PUSH_LOCK
// 核心作用:保护进程页表提交计数的并发修改
// 初始化来源:进程创建时初始化,页表分配/释放时加锁
// 补充说明:内存管理器内部使用,防止页表计数错乱
+0x268 RotateInProgress : (null)
// 核心作用:标记进程正在进行内存旋转(页面置换)
// 初始化来源:内存管理器低内存时置位,旋转完成后置null
// 补充说明:仅内存管理器内部使用,调试中通常为null
+0x270 ForkInProgress : (null)
// 核心作用:标记进程正在进行Fork(仅适用于WSL/类Unix子系统)
// 初始化来源:WSL进程Fork时置位,完成后置null
// 补充说明:Windows原生进程无此场景,通常为null
+0x278 CommitChargeJob : 0xffffc983`92d58060 _EJOB
// 核心作用:指向进程所属作业的内存提交配额对象
// 初始化来源:进程加入作业时赋值,默认指向系统默认作业
// 补充说明:作业通过此字段限制进程的内存提交总量
+0x280 CloneRoot : _RTL_AVL_TREE
// 核心作用:进程克隆(Clone)的AVL树根节点(仅Pico进程/容器使用)
// 初始化来源:Pico进程克隆时创建,原生进程为空
// 补充说明:AVL树存储克隆进程的共享资源信息
+0x288 NumberOfPrivatePages : 0x1a3
// 核心作用:进程当前使用的私有页面数量(每页4KB)
// 初始化来源:进程创建时为0,内存分配/释放时更新
// 补充说明:私有页面=进程独占的物理内存页
+0x290 MmReserved2 : 0
// 核心作用:内存管理器预留字段(第二块)
// 初始化来源:进程创建时置0,暂无公开用途
+0x298 Win32Process : 0xffffaa0b`ea3e2a90 Void
// 核心作用:指向进程的Win32子系统控制块(_WIN32_PROCESS)
// 初始化来源:Win32k.sys初始化时赋值,内核进程/无窗口进程为null
// 补充说明:存储窗口、消息队列等Win32层属性
+0x2a0 Job : 0xffffc983`92d58060 _EJOB
// 核心作用:指向进程所属的作业对象(_EJOB)
// 初始化来源:进程创建时继承父进程作业,或通过AssignProcessToJobObject赋值
// 补充说明:作业可限制进程的CPU、内存、IO等资源
+0x2a8 SectionObject : 0xffffaa0b`ea4a1310 Void
// 核心作用:指向进程可执行镜像的节对象(_SECTION)
// 初始化来源:进程加载EXE时由MmCreateSection创建并赋值
// 补充说明:节对象映射了EXE文件的物理存储,是进程执行的基础
+0x2b0 SectionBaseAddress : 0x00007ff6`219b0000 Void
// 核心作用:进程可执行镜像的基地址(用户态VA)
// 初始化来源:PE加载器(LdrLoadDll)加载EXE时赋值
// 补充说明:即EXE的ImageBase,对应GetModuleHandle(NULL)的返回值
+0x2b8 Cookie : 0x596328ce
// 核心作用:进程Cookie(随机值),用于安全验证(如防止缓冲区溢出)
// 初始化来源:进程创建时由内核随机生成
// 补充说明:Win32k.sys和用户态模块会验证该值,防止伪造进程上下文
+0x2c0 WorkingSetWatch : (null)
// 核心作用:指向工作集监控结构(_WORKING_SET_WATCH)
// 初始化来源:调用SetProcessWorkingSetWatch时创建,默认null
// 补充说明:用于监控进程工作集的内存页访问
+0x2c8 Win32WindowStation : 0x00000000`000000f0 Void
// 核心作用:指向进程所属的窗口站(_WINDOW_STATION)
// 初始化来源:进程创建时从父进程继承,或由Win32子系统赋值
// 补充说明:窗口站包含桌面、剪贴板等UI资源,0x00f0为句柄值(需转换为内核地址)
+0x2d0 InheritedFromUniqueProcessId : 0x00000000`000015cc Void
// 核心作用:父进程的PID(十进制5580)
// 初始化来源:进程创建时从PspCreateProcess的父进程EPROCESS中复制
// 补充说明:任务管理器"父进程ID"列对应此字段
+0x2d8 OwnerProcessId : 0x15ce
// 核心作用:进程的"所有者"PID(通常等于父进程PID,特殊场景如服务为SMSS)
// 初始化来源:进程创建时由PspSetProcessOwner赋值
// 补充说明:区别于父进程,所有者是对进程有管控权限的进程
+0x2e0 Peb : 0x0000000c`fcb1e000 _PEB
// 核心作用:指向进程的用户态PEB(进程环境块)
// 初始化来源:进程创建时由MmCreatePeb创建,地址位于用户态(0x7ffxxxxxxxxx)
// 补充说明:PEB包含用户态信息(如模块列表、命令行、环境变量),可通过!peb 0xc fcb1e000查看
+0x2e8 Session : 0xffffc983`8dce84e0 _PSP_SESSION_SPACE
// 核心作用:指向进程所属的会话空间(_PSP_SESSION_SPACE)
// 初始化来源:进程创建时由PspAssignProcessToSession赋值
// 补充说明:会话空间包含会话级资源(如窗口站、桌面、注册表HKCU)
+0x2f0 Spare1 : (null)
// 核心作用:系统预留字段
// 初始化来源:进程创建时置null,暂无公开用途
+0x2f8 QuotaBlock : 0xffffc983`8ee3ed40 _EPROCESS_QUOTA_BLOCK
// 核心作用:指向进程的配额块(共享配额池)
// 初始化来源:进程创建时从配额管理器分配,多个进程可共享同一配额块
// 补充说明:配额块管理分页/非分页池配额,避免每个进程单独维护配额
+0x300 ObjectTable : 0xffffaa0b`e6091580 _HANDLE_TABLE
// 核心作用:指向进程的句柄表(管理进程打开的内核对象句柄)
// 初始化来源:进程创建时由ObCreateHandleTable创建
// 补充说明:!handle PID 0 命令即遍历该句柄表,调试中可通过该地址解析进程所有句柄
+0x308 DebugPort : (null)
// 核心作用:指向进程的调试端口(_ALPC_PORT)
// 初始化来源:调试器附加时设置,调试分离后置null
// 补充说明:调试器通过该端口接收进程的异常、创建/退出事件
+0x310 WoW64Process : (null)
// 核心作用:指向Wow64进程的控制块(_WOW64_PROCESS)
// 初始化来源:32位进程运行在64位系统时由Wow64层创建,64位进程为null
// 补充说明:Wow64层通过该结构实现32位/64位系统调用转换
+0x318 DeviceMap : _EX_FAST_REF
// 核心作用:指向进程的设备映射表(_OBJECT_DIRECTORY)
// 初始化来源:进程创建时从会话空间继承,默认指向\DosDevices
// 补充说明:设备映射表将盘符(如C:)映射到内核设备对象(如\Device\HarddiskVolume2)
+0x320 EtwDataSource : 0xffffc983`976caf10 Void
// 核心作用:指向进程的ETW(事件跟踪)数据源结构
// 初始化来源:进程创建时由EtwRegisterProcessDataSource创建
// 补充说明:ETW通过该结构跟踪进程的创建、退出、内存操作等事件
+0x328 PageDirectoryPte : 0
// 核心作用:进程页目录表的PTE(页表项)地址(仅嵌入式系统/特殊进程使用)
// 初始化来源:进程创建时置0,64位系统使用CR3寄存器存储页目录基址,此字段备用
+0x330 ImageFilePointer : 0xffffc983`97679980 _FILE_OBJECT
// 核心作用:指向进程可执行文件的文件对象(_FILE_OBJECT)
// 初始化来源:PE加载器打开EXE文件时创建并赋值
// 补充说明:可通过!object 0xffffc98397679980查看文件路径
+0x338 ImageFileName : [15] "am.exe"
// 核心作用:进程的可执行文件名(不含路径,最多15字符)
// 初始化来源:进程创建时从EXE路径中提取文件名赋值
// 补充说明:任务管理器"映像名称"列对应此字段,调试中最常用的进程标识之一
+0x347 PriorityClass : 0x2 ''
// 核心作用:进程的优先级类别(0x2=NORMAL_PRIORITY_CLASS)
// 初始化来源:CreateProcess的dwPriorityClass参数,默认0x2
// 补充说明:对应SetPriorityClass的参数,决定进程的基础调度优先级
+0x348 SecurityPort : (null)
// 核心作用:指向进程的安全端口(ALPC端口),用于LSASS通信
// 初始化来源:进程创建时由安全子系统创建,默认null(仅高权限进程使用)
// 补充说明:用于进程的安全令牌、审计等操作的通信
+0x350 SeAuditProcessCreationInfo : _SE_AUDIT_PROCESS_CREATION_INFO
// 核心作用:进程创建的审计信息(如命令行、父进程、创建者SID)
// 初始化来源:进程创建时由SeCaptureProcessCreationInfo填充
// 补充说明:安全审计(如策略审核进程创建)时会读取该结构
+0x358 JobLinks : _LIST_ENTRY [ 0xffffc983`92d58088 - 0xffffc983`92d58088 ]
// 核心作用:将进程挂入所属作业的进程链表(_EJOB.ProcessList)
// 初始化来源:进程加入作业时插入链表,退出作业时移除
// 补充说明:作业通过该链表遍历所有所属进程
+0x368 HighestUserAddress : 0x00007fff`ffff0000 Void
// 核心作用:进程用户态地址空间的最高地址(64位进程固定为0x7FFFFFFF0000)
// 初始化来源:进程地址空间初始化时由MmInitializeProcessAddressSpace赋值
// 补充说明:用户态代码无法访问超过该地址的内存(内核态地址从0xFFFF800000000000开始)
+0x370 ThreadListHead : _LIST_ENTRY [ 0xffffc983`970115f8 - 0xffffc983`970115f8 ]
// 核心作用:进程所有线程的链表头(_ETHREAD.ThreadListEntry挂入此链表)
// 初始化来源:进程创建时初始化空链表,创建线程时插入,线程退出时移除
// 补充说明:!process PID 2 命令遍历该链表显示所有线程
+0x380 ActiveThreads : 1
// 核心作用:进程当前活跃的线程数量
// 初始化来源:进程创建时为1(主线程),创建/终止线程时递增/递减
// 补充说明:任务管理器"线程数"列对应此字段
+0x384 ImagePathHash : 0xe9aef178
// 核心作用:进程可执行文件路径的哈希值(用于快速查找)
// 初始化来源:进程创建时由RtlHashUnicodeString计算路径哈希
// 补充说明:内核通过该哈希快速匹配进程路径(如策略管控)
+0x388 DefaultHardErrorProcessing : 0x8000
// 核心作用:进程默认的硬错误处理策略(0x8000=系统默认处理)
// 初始化来源:进程创建时继承父进程,可通过SetProcessErrorMode修改
// 补充说明:硬错误如磁盘读写失败、内存访问错误的处理方式
+0x38c LastThreadExitStatus : 0n0
// 核心作用:进程最后一个退出线程的退出码(0=正常退出)
// 初始化来源:线程退出时由PspExitThread更新,默认0
// 补充说明:GetExitCodeProcess可获取该值(进程退出前为最后线程的退出码)
+0x390 PrefetchTrace : _EX_FAST_REF
// 核心作用:指向进程的预取跟踪结构(SuperFetch使用)
// 初始化来源:SuperFetch模块初始化时创建,默认null
// 补充说明:用于记录进程的内存访问模式,优化预取策略
+0x398 LockedPagesList : (null)
// 核心作用:指向进程锁定的物理内存页链表
// 初始化来源:调用VirtualLock锁定内存时创建,解锁后置null
// 补充说明:锁定的内存页不会被换出到磁盘,仅限管理员权限使用
+0x3a0 ReadOperationCount : _LARGE_INTEGER 0x0
// 核心作用:进程累计的读IO操作次数
// 初始化来源:进程创建时为0,每次读IO完成时递增
// 补充说明:IO计数器由IO管理器维护,任务管理器"IO读取次数"对应此字段
+0x3a8 WriteOperationCount : _LARGE_INTEGER 0x0
// 核心作用:进程累计的写IO操作次数
// 初始化来源:进程创建时为0,每次写IO完成时递增
// 补充说明:任务管理器"IO写入次数"对应此字段
+0x3b0 OtherOperationCount : _LARGE_INTEGER 0x4d
// 核心作用:进程累计的其他IO操作次数(如控制码、设备IO)
// 初始化来源:进程创建时为0,非读写IO完成时递增
// 补充说明:如DeviceIoControl、管道通信等IO操作
+0x3b8 ReadTransferCount : _LARGE_INTEGER 0x0
// 核心作用:进程累计的读IO传输字节数
// 初始化来源:进程创建时为0,读IO完成时累加传输大小
// 补充说明:任务管理器"IO读取字节"对应此字段
+0x3c0 WriteTransferCount : _LARGE_INTEGER 0x0
// 核心作用:进程累计的写IO传输字节数
// 初始化来源:进程创建时为0,写IO完成时累加传输大小
// 补充说明:任务管理器"IO写入字节"对应此字段
+0x3c8 OtherTransferCount : _LARGE_INTEGER 0xb38
// 核心作用:进程累计的其他IO传输字节数
// 初始化来源:进程创建时为0,非读写IO完成时累加传输大小
// 补充说明:如管道通信、设备控制的字节传输量
+0x3d0 CommitChargeLimit : 0
// 核心作用:进程内存提交限制(字节),0=无限制(继承作业限制)
// 初始化来源:进程创建时从作业继承,无作业则为0
// 补充说明:超过该限制会导致VirtualAlloc失败(ERROR_NOT_ENOUGH_MEMORY)
+0x3d8 CommitCharge : 0x647
// 核心作用:进程当前内存提交量(单位:页,4KB/页 → 0x647×4K=6.28MB)
// 初始化来源:进程创建时为镜像提交大小,内存提交/释放时更新
// 补充说明:任务管理器"提交大小"列对应此字段
+0x3e0 CommitChargePeak : 0x686
// 核心作用:进程内存提交量的峰值(单位:页)
// 初始化来源:进程创建时为0,提交量超过当前值则更新
// 补充说明:用于监控进程的内存提交峰值
+0x400 Vm : _MMSUPPORT_FULL
// 核心作用:进程内存管理的核心结构,包含工作集、页表、内存策略等
// 初始化来源:进程创建时由MmInitializeProcessAddressSpace初始化
// 补充说明:内存管理器通过该结构管理进程的虚拟内存、工作集、页面置换
+0x540 MmProcessLinks : _LIST_ENTRY [ 0xffffc983`96e035c0 - 0xffffc983`94df35c0 ]
// 核心作用:将进程挂入内存管理器的进程链表(MmProcessList)
// 初始化来源:进程创建时插入链表,退出时移除
// 补充说明:内存管理器遍历该链表进行页面置换、工作集管理
+0x550 ModifiedPageCount : 7
// 核心作用:进程已修改但未写入磁盘的页面数量(脏页)
// 初始化来源:进程创建时为0,修改内存页时递增,写入磁盘时递减
// 补充说明:内存管理器定期将脏页写入磁盘,减少进程退出时的IO
+0x554 ExitStatus : 0n259
// 核心作用:进程的退出码(259=STILL_ACTIVE,进程未退出)
// 初始化来源:进程创建时为259,ExitProcess/终止进程时设置为实际退出码
// 补充说明:GetExitCodeProcess获取该值,259表示进程仍在运行
+0x558 VadRoot : _RTL_AVL_TREE
// 核心作用:进程虚拟地址描述符(VAD)的AVL树根节点
// 初始化来源:进程创建时创建空AVL树,VirtualAlloc时插入VAD节点
// 补充说明:VAD记录进程所有虚拟内存区域的属性(地址、大小、保护、类型),!vad命令遍历该树
+0x560 VadHint : 0xffffc983`96d105c0 Void
// 核心作用:VAD树的查找提示(加速VAD查找)
// 初始化来源:内存管理器访问VAD时更新,指向最近访问的VAD节点
// 补充说明:减少VAD树的查找时间,提升内存操作效率
+0x568 VadCount : 0x55
// 核心作用:进程VAD节点的数量(当前55个虚拟内存区域)
// 初始化来源:进程创建时为0,VirtualAlloc/VirtualFree时递增/递减
// 补充说明:VAD数量反映进程的内存区域复杂度(如加载的DLL越多,VAD越多)
+0x570 VadPhysicalPages : 0
// 核心作用:进程VAD关联的物理页面数量(仅嵌入式系统使用)
// 初始化来源:进程创建时为0,暂无公开用途
+0x578 VadPhysicalPagesLimit : 0
// 核心作用:进程VAD物理页面数量限制(仅嵌入式系统使用)
// 初始化来源:进程创建时为0,暂无公开用途
+0x580 AlpcContext : _ALPC_PROCESS_CONTEXT
// 核心作用:进程的ALPC(高级本地过程调用)上下文
// 初始化来源:进程创建时由AlpcInitializeProcessContext初始化
// 补充说明:ALPC是内核态/用户态进程间通信的核心机制,此字段管理进程的ALPC端口、消息队列
+0x5a0 TimerResolutionLink : _LIST_ENTRY [ 0x00000000`00000000 - 0x00000000`00000000 ]
// 核心作用:将进程挂入定时器分辨率链表(PsTimerResolutionListHead)
// 初始化来源:调用timeBeginPeriod时插入链表,timeEndPeriod时移除
// 补充说明:系统通过该链表管理所有修改过定时器分辨率的进程
+0x5b0 TimerResolutionStackRecord : (null)
// 核心作用:定时器分辨率的栈记录(嵌套调用timeBeginPeriod时使用)
// 初始化来源:嵌套调用timeBeginPeriod时创建,默认null
// 补充说明:记录每层调用的分辨率,保证timeEndPeriod匹配
+0x5b8 RequestedTimerResolution : 0
// 核心作用:进程请求的定时器分辨率(单位:100ns),0=系统默认(15.6ms)
// 初始化来源:调用timeBeginPeriod时设置,timeEndPeriod时恢复默认
// 补充说明:分辨率越小(如1ms),定时器精度越高,但CPU占用越高
+0x5bc SmallestTimerResolution : 0
// 核心作用:进程请求的最小定时器分辨率
// 初始化来源:调用timeBeginPeriod时更新为最小值,默认0
// 补充说明:系统取所有进程请求的最小分辨率作为全局定时器分辨率
+0x5c0 ExitTime : _LARGE_INTEGER 0x0
// 核心作用:进程退出的时间戳(100ns单位),0=进程未退出
// 初始化来源:进程退出时由KeQuerySystemTime赋值
// 补充说明:进程退出后可通过该值获取退出时间
+0x5c8 InvertedFunctionTable : 0xffffaa0b`e798b5c0 _INVERTED_FUNCTION_TABLE_KERNEL_MODE
// 核心作用:进程的反向函数表(用于栈回溯、异常处理)
// 初始化来源:进程创建时由RtlInitializeInvertedFunctionTable创建
// 补充说明:反向函数表将地址映射到函数名,调试器栈回溯依赖此字段
+0x5d0 InvertedFunctionTableLock : _EX_PUSH_LOCK
// 核心作用:保护反向函数表的并发访问
// 初始化来源:进程创建时初始化,修改反向函数表时加锁
// 补充说明:防止多线程同时更新函数表导致错乱
+0x5d8 ActiveThreadsHighWatermark : 4
// 核心作用:进程生命周期内活跃线程数的峰值(当前峰值4)
// 初始化来源:进程创建时为1,活跃线程数超过当前值则更新
// 补充说明:用于监控进程的线程峰值,排查线程泄漏
+0x5dc LargePrivateVadCount : 0
// 核心作用:进程大私有VAD的数量(大VAD=超过特定大小的内存区域)
// 初始化来源:进程创建时为0,创建大私有内存区域时递增
// 补充说明:内存管理器对大VAD采用特殊的页面置换策略
+0x5e0 ThreadListLock : _EX_PUSH_LOCK
// 核心作用:保护进程线程链表(ThreadListHead)的并发访问
// 初始化来源:进程创建时初始化,创建/终止线程时加锁
// 补充说明:防止多线程同时修改线程链表导致死锁
+0x5e8 WnfContext : 0xffffaa0b`e60e4b20 Void
// 核心作用:进程的WNF(Windows通知框架)上下文
// 初始化来源:进程使用WNF API时创建,默认null
// 补充说明:WNF用于进程间轻量级通知,此字段管理进程的WNF订阅/发布
+0x5f0 ServerSilo : (null)
// 核心作用:指向进程所属的服务器隔离容器(Silo)
// 初始化来源:进程加入Silo时赋值,原生进程为null
// 补充说明:Silo用于隔离服务器进程的资源(如命名空间、对象)
+0x5f8 SignatureLevel : 0x2 ''
// 核心作用:进程可执行文件的签名级别(0x2=微软签名)
// 初始化来源:PE加载器验证EXE签名时赋值
// 补充说明:用于进程的完整性验证,防止未签名程序运行
+0x5f9 SectionSignatureLevel : 0x2 ''
// 核心作用:进程节对象的签名级别(与ImageSignatureLevel一致)
// 初始化来源:节对象创建时从EXE签名级别复制
// 补充说明:验证节对象的完整性,防止篡改
+0x5fa Protection : _PS_PROTECTION
// 核心作用:进程的保护级别(如保护进程不被终止)
// 初始化来源:进程创建时继承父进程,可通过PsProtectProcess修改
// 补充说明:包含保护类型、签名级别、完整性级别等
+0x5fb HangCount : 0y000
// 核心作用:进程挂起计数(连续无响应的次数)
// 初始化来源:窗口管理器检测到进程无响应时递增,恢复后重置
// 补充说明:计数达到阈值时系统会弹出"程序无响应"提示
+0x5fb GhostCount : 0y000
// 核心作用:进程"幽灵"计数(已退出但资源未释放的次数)
// 初始化来源:进程退出但句柄未关闭时递增,默认0
// 补充说明:用于检测进程资源泄漏
+0x5fb PrefilterException : 0y0
// 核心作用:启用异常预过滤(内核先过滤异常再通知调试器)
// 初始化来源:调试器设置DEBUG_FILTER_EXCEPTIONS时置位
// 补充说明:减少调试器的异常处理开销
+0x5fc Flags3 : 0x40c008
// 核心作用:进程扩展标志位(第三代),补充Flags/Flags2的未覆盖属性
// 初始化来源:进程创建时继承父进程,部分位由系统策略设置
// 补充说明:以下是各子位的含义:
+0x5fc Minimal : 0y0 // 作用:标记进程为最小化进程(仅核心功能) | 来源:容器/轻量级进程创建时置位
+0x5fc ReplacingPageRoot : 0y0 // 作用:标记进程正在替换页根 | 来源:内存管理器低内存时置位
+0x5fc Crashed : 0y0 // 作用:标记进程已崩溃 | 来源:未处理异常导致进程终止时置位
+0x5fc JobVadsAreTracked : 0y1 // 作用:作业跟踪进程的VAD | 来源:作业启用VAD跟踪时置位
+0x5fc VadTrackingDisabled : 0y0 // 作用:禁用VAD跟踪 | 来源:内存管理器调试时置位
+0x5fc AuxiliaryProcess : 0y0 // 作用:标记进程为辅助进程(如浏览器子进程) | 来源:父进程创建时置位
+0x5fc SubsystemProcess : 0y0 // 作用:标记进程为子系统进程(如csrss.exe) | 来源:会话创建时置位
+0x5fc IndirectCpuSets : 0y0 // 作用:使用间接CPU集 | 来源:NUMA架构下调度模块设置
+0x5fc RelinquishedCommit : 0y0 // 作用:进程放弃部分内存提交 | 来源:内存管理器低内存时置位
+0x5fc HighGraphicsPriority : 0y0 // 作用:进程拥有高图形优先级 | 来源:显卡驱动/游戏进程设置
+0x5fc CommitFailLogged : 0y0 // 作用:记录内存提交失败事件 | 来源:内存提交失败时置位
+0x5fc ReserveFailLogged : 0y0 // 作用:记录内存保留失败事件 | 来源:内存保留失败时置位
+0x5fc SystemProcess : 0y0 // 作用:标记进程为系统进程(如smss.exe) | 来源:系统启动时置位
+0x5fc AllImagesAtBasePristineBase : 0y0 // 作用:所有镜像加载在原始基址 | 来源:PE加载器未重定位时置位
+0x5fc AddressPolicyFrozen : 0y1 // 作用:进程地址策略已冻结 | 来源:内存保护策略设置后置位
+0x5fc ProcessFirstResume : 0y1 // 作用:进程首次恢复运行 | 来源:进程从挂起恢复时置位
+0x5fc ForegroundExternal : 0y0 // 作用:进程是外部前台进程 | 来源:窗口管理器切换前台时置位
+0x5fc ForegroundSystem : 0y0 // 作用:进程是系统前台进程 | 来源:系统进程获取前台时置位
+0x5fc HighMemoryPriority : 0y0 // 作用:进程拥有高内存优先级 | 来源:内存管理器设置
+0x5fc EnableProcessSuspendResumeLogging : 0y0 // 作用:启用进程挂起/恢复日志 | 来源:ETW审计开启时置位
+0x5fc EnableThreadSuspendResumeLogging : 0y0 // 作用:启用线程挂起/恢复日志 | 来源:ETW审计开启时置位
+0x5fc SecurityDomainChanged : 0y0 // 作用:进程安全域已变更 | 来源:安全策略修改时置位
+0x5fc SecurityFreezeComplete : 0y1 // 作用:进程安全冻结完成 | 来源:LSASS完成安全初始化后置位
+0x5fc VmProcessorHost : 0y0 // 作用:进程是VM处理器宿主 | 来源:Hyper-V虚拟化时置位
+0x5fc VmProcessorHostTransition : 0y0 // 作用:VM处理器宿主切换中 | 来源:Hyper-V切换VM时置位
+0x5fc AltSyscall : 0y0 // 作用:启用替代系统调用表 | 来源:调试/安全模块设置
+0x5fc TimerResolutionIgnore : 0y0 // 作用:忽略进程的定时器分辨率请求 | 来源:系统电源管理时置位
+0x5fc DisallowUserTerminate : 0y0 // 作用:禁止用户终止进程 | 来源:安全策略设置
+0x5fc EnableProcessRemoteExecProtectVmLogging : 0y0 // 作用:启用远程执行保护日志 | 来源:ETW审计开启时置位
+0x5fc EnableProcessLocalExecProtectVmLogging : 0y0 // 作用:启用本地执行保护日志 | 来源:ETW审计开启时置位
+0x5fc MemoryCompressionProcess : 0y0 // 作用:标记进程为内存压缩进程 | 来源:内存管理器创建时置位
+0x5fc EnableProcessImpersonationLogging : 0y0 // 作用:启用进程模拟日志 | 来源:ETW审计开启时置位
+0x600 DeviceAsid : 0n0
// 核心作用:进程的设备ASID(地址空间标识符),仅ARM64/特殊设备使用
// 初始化来源:进程创建时置0,设备驱动赋值
// 补充说明:ASID用于隔离设备的地址空间,x64架构暂无用途
+0x608 SvmData : (null)
// 核心作用:指向进程的SVM(安全虚拟机)数据结构
// 初始化来源:Hyper-V/SVM启用时创建,默认null
// 补充说明:用于进程的虚拟化安全隔离
+0x610 SvmProcessLock : _EX_PUSH_LOCK
// 核心作用:保护SVM数据的并发访问
// 初始化来源:SVM启用时初始化,默认无锁
// 补充说明:修改SVM数据时加锁,防止并发冲突
+0x618 SvmLock : 0
// 核心作用:SVM的自旋锁(轻量级锁)
// 初始化来源:SVM启用时初始化,默认0
// 补充说明:快速访问SVM数据时使用,比EX_PUSH_LOCK更轻量
+0x620 SvmProcessDeviceListHead : _LIST_ENTRY [ 0xffffc983`94a116a0 - 0xffffc983`94a116a0 ]
// 核心作用:进程SVM设备链表头
// 初始化来源:SVM设备附加到进程时插入链表,默认空链表
// 补充说明:管理进程关联的所有SVM设备
+0x630 LastFreezeInterruptTime : 0
// 核心作用:进程最后一次冻结的中断时间
// 初始化来源:进程冻结(如休眠)时由KeQueryInterruptTime赋值
// 补充说明:用于恢复进程时计算时间偏移
+0x638 DiskCounters : 0xffffc983`94a118c0 _PROCESS_DISK_COUNTERS
// 核心作用:进程的磁盘IO计数器(细分读/写/其他IO)
// 初始化来源:进程创建时由IoInitializeProcessDiskCounters初始化
// 补充说明:比基础IO计数器更精细,包含每个磁盘的IO统计
+0x640 PicoContext : (null)
// 核心作用:指向Pico进程的上下文结构(仅Pico进程使用)
// 初始化来源:Pico进程创建时由PspCreatePicoProcess初始化
// 补充说明:Pico进程是轻量级容器进程,原生进程为null
+0x648 EnclaveTable : (null)
// 核心作用:指向进程的Enclave(机密计算)表
// 初始化来源:进程创建Enclave(如SGX)时创建,默认null
// 补充说明:Enclave用于安全存储敏感数据,防止内存窥探
+0x650 EnclaveNumber : 0
// 核心作用:进程的Enclave数量
// 初始化来源:创建/销毁Enclave时递增/递减,默认0
// 补充说明:限制进程的Enclave数量,防止资源滥用
+0x658 EnclaveLock : _EX_PUSH_LOCK
// 核心作用:保护Enclave表的并发访问
// 初始化来源:进程创建时初始化,修改Enclave表时加锁
// 补充说明:防止多线程同时创建/销毁Enclave导致错乱
+0x660 HighPriorityFaultsAllowed : 0
// 核心作用:允许进程的高优先级页面错误(如实时进程)
// 初始化来源:进程设置为REALTIME_PRIORITY_CLASS时置1,默认0
// 补充说明:高优先级错误优先处理,减少延迟
+0x668 EnergyContext : 0xffffc983`94a118f8 _PO_PROCESS_ENERGY_CONTEXT
// 核心作用:进程的能耗上下文(电源管理)
// 初始化来源:进程创建时由PoInitializeProcessEnergyContext初始化
// 补充说明:电源管理器通过该结构统计进程的能耗,优化电源策略
+0x670 VmContext : (null)
// 核心作用:指向进程的VM上下文(如WSL2/虚拟机进程)
// 初始化来源:VM进程创建时由VmInitializeProcessContext初始化
// 补充说明:管理VM进程的虚拟硬件、内存映射等
+0x678 SequenceNumber : 0x1a2
// 核心作用:进程的序列号(系统全局递增)
// 初始化来源:进程创建时由PspNextProcessSequenceNumber赋值
// 补充说明:用于唯一标识进程实例(即使PID重用,序列号不同)
+0x680 CreateInterruptTime : 0x00000006`04f37a33
// 核心作用:进程创建时的中断时间(系统启动以来的时钟周期)
// 初始化来源:进程创建时由KeQueryInterruptTime赋值
// 补充说明:比CreateTime更精细,用于高精度时间计算
+0x688 CreateUnbiasedInterruptTime : 0x00000006`04f37a33
// 核心作用:进程创建时的无偏中断时间(排除系统挂起时间)
// 初始化来源:进程创建时由KeQueryUnbiasedInterruptTime赋值
// 补充说明:用于准确计算进程的实际运行时间
+0x690 TotalUnbiasedFrozenTime : 0
// 核心作用:进程累计的无偏冻结时间(系统挂起时进程暂停的时间)
// 初始化来源:系统挂起/恢复时更新,默认0
// 补充说明:用于修正进程的运行时间统计
+0x698 LastAppStateUpdateTime : 0x00000006`04f37a33
// 核心作用:进程最后一次应用状态更新的时间
// 初始化来源:进程状态(前台/后台)变化时更新
// 补充说明:电源管理器根据该时间调整进程的资源分配
+0x6a0 LastAppStateUptime : 0y0000000000000000000000000000000000000000000000000000000000000 (0)
+0x6a0 LastAppState : 0y000
// 核心作用:进程最后一次的应用状态(0=后台,1=前台)
// 初始化来源:窗口管理器切换前台/后台时更新
// 补充说明:前台进程获得更高的CPU/IO优先级
+0x6a8 SharedCommitCharge : 0x428
// 核心作用:进程的共享内存提交量(单位:页)
// 初始化来源:进程创建时为0,加载共享DLL/内存映射文件时更新
// 补充说明:共享内存由多个进程共享,不计入单个进程的私有提交量
+0x6b0 SharedCommitLock : _EX_PUSH_LOCK
// 核心作用:保护共享提交量的并发修改
// 初始化来源:进程创建时初始化,修改共享提交量时加锁
// 补充说明:防止多线程同时加载/卸载共享DLL导致计数错乱
+0x6b8 SharedCommitLinks : _LIST_ENTRY [ 0xffffaa0b`e5ae50a8 - 0xffffaa0b`e6a24e98 ]
// 核心作用:将进程挂入共享提交链表(PsSharedCommitList)
// 初始化来源:进程使用共享内存时插入链表,释放时移除
// 补充说明:内存管理器遍历该链表管理共享内存的提交/释放
+0x6c8 AllowedCpuSets : 0
+0x6d0 DefaultCpuSets : 0
+0x6c8 AllowedCpuSetsIndirect : (null)
+0x6d0 DefaultCpuSetsIndirect : (null)
// 核心作用:进程允许/默认的CPU集(NUMA架构下的CPU核集合)
// 初始化来源:进程创建时继承父进程,可通过SetProcessDefaultCpuSets修改
// 补充说明:限制进程只能在指定的CPU核上运行,提升NUMA架构的性能
+0x6d8 DiskIoAttribution : (null)
// 核心作用:指向进程的磁盘IO归因结构(细分到具体文件/设备)
// 初始化来源:IO管理器初始化时创建,默认null
// 补充说明:用于精细统计进程对每个磁盘/文件的IO开销
+0x6e0 DxgProcess : 0xffffaa0b`e8588c10 Void
// 核心作用:指向进程的DXG(DirectX图形)上下文
// 初始化来源:进程使用DirectX时由Dxgkrnl.sys创建,无图形操作时为null
// 补充说明:管理进程的显卡资源、GPU内存、图形命令队列
+0x6e8 Win32KFilterSet : 0
// 核心作用:进程的Win32k过滤器集(窗口/消息过滤)
// 初始化来源:进程创建时为0,安装Win32k过滤器时设置
// 补充说明:用于过滤窗口消息、钩子等操作
+0x6ec Machine : 0x8664
// 核心作用:进程的目标CPU架构(0x8664=AMD64/x64)
// 初始化来源:PE加载器解析EXE的PE头时赋值
// 补充说明:0x14c=x86,0x8664=x64,0xaa64=ARM64
+0x6ee MmSlabIdentity : 0xff ''
// 核心作用:进程的内存Slab标识(内存分配器使用)
// 初始化来源:进程创建时置0xff(无标识),Slab分配器使用时赋值
// 补充说明:Slab分配器用于高效分配小内存块,内核内部使用
+0x6ef Spare0 : 0 ''
// 核心作用:系统预留字段
// 初始化来源:进程创建时置0,暂无公开用途
+0x6f0 ProcessTimerDelay : _PS_INTERLOCKED_TIMER_DELAY_VALUES
// 核心作用:进程的定时器延迟值(用于调整定时器精度)
// 初始化来源:进程创建时初始化,定时器操作时更新
// 补充说明:系统通过该值平衡定时器精度和CPU开销
+0x6f8 KTimerSets : 0
// 核心作用:进程创建的内核定时器(KTIMER)数量
// 初始化来源:创建/销毁KTIMER时递增/递减,默认0
// 补充说明:内核定时器用于内核态延迟操作(如KeSetTimer)
+0x6fc KTimer2Sets : 0
// 核心作用:进程创建的第二代内核定时器数量
// 初始化来源:创建/销毁第二代KTIMER时递增/递减,默认0
// 补充说明:第二代定时器支持更高精度
+0x700 ThreadTimerSets : 3
// 核心作用:进程线程创建的用户态定时器数量
// 初始化来源:创建/销毁SetTimer/CreateTimerQueueTimer时递增/递减
// 补充说明:用户态定时器数量反映进程的定时任务复杂度
+0x708 VirtualTimerListLock : 0
// 核心作用:保护进程虚拟定时器链表的自旋锁
// 初始化来源:进程创建时置0,操作虚拟定时器时加锁
// 补充说明:虚拟定时器是线程挂起时仍运行的定时器
+0x710 VirtualTimerListHead : _LIST_ENTRY [ 0xffffc983`94a11790 - 0xffffc983`94a11790 ]
// 核心作用:进程的虚拟定时器链表头
// 初始化来源:创建虚拟定时器时插入链表,销毁时移除
// 补充说明:管理进程所有的虚拟定时器,定时器到期时触发回调
+0x720 WakeChannel : _WNF_STATE_NAME
+0x720 WakeInfo : _PS_PROCESS_WAKE_INFORMATION
// 核心作用:进程的唤醒通道/唤醒信息(电源管理)
// 初始化来源:进程进入休眠/挂起时初始化,唤醒时更新
// 补充说明:系统通过该信息唤醒进程(如定时器到期、IO完成)
+0x750 MitigationFlags : 0x20
+0x750 MitigationFlagsValues : <unnamed-tag>
// 核心作用:进程的安全缓解标志(第一代),如DEP、ASLR、CFG等
// 初始化来源:进程创建时从EXE的PE头/系统策略初始化
// 补充说明:0x20=启用CFG(控制流保护),防止代码注入
+0x754 MitigationFlags2 : 0x40000000
+0x754 MitigationFlags2Values : <unnamed-tag>
// 核心作用:进程的安全缓解标志(第二代),补充MitigationFlags
// 初始化来源:进程创建时从系统策略/EXE配置初始化
// 补充说明:0x40000000=启用强制完整性检查,防止低权限进程篡改
+0x758 PartitionObject : 0xffffc983`8b691360 Void
// 核心作用:指向进程所属的分区对象(_PARTITION)
// 初始化来源:进程创建时从父进程继承,默认指向系统分区
// 补充说明:分区用于隔离进程的资源(如内存、CPU),仅服务器版Windows使用
+0x760 SecurityDomain : 0x00000001`00000063
// 核心作用:进程的安全域ID(用于安全策略隔离)
// 初始化来源:进程创建时由LSASS分配,默认继承父进程
// 补充说明:安全域用于限制进程间的资源访问
+0x768 ParentSecurityDomain : 0x00000001`00000063
// 核心作用:父进程的安全域ID
// 初始化来源:进程创建时从父进程EPROCESS复制
// 补充说明:用于安全策略的继承验证
+0x770 CoverageSamplerContext : (null)
// 核心作用:指向进程的代码覆盖采样上下文(调试/测试)
// 初始化来源:启用代码覆盖采样时创建,默认null
// 补充说明:用于统计进程的代码执行覆盖率
+0x778 MmHotPatchContext : (null)
// 核心作用:指向进程的内存热补丁上下文
// 初始化来源:启用内存热补丁时创建,默认null
// 补充说明:热补丁允许不重启进程修改代码,用于漏洞修复
+0x780 DynamicEHContinuationTargetsTree : _RTL_AVL_TREE
// 核心作用:进程的动态异常处理续传目标树
// 初始化来源:进程加载带动态EH的模块时创建,默认空树
// 补充说明:用于异常处理时查找续传目标,提升异常处理效率
+0x788 DynamicEHContinuationTargetsLock : _EX_PUSH_LOCK
// 核心作用:保护动态EH续传目标树的并发访问
// 初始化来源:进程创建时初始化,修改树时加锁
// 补充说明:防止多线程同时加载模块导致EH树错乱
+0x790 DynamicEnforcedCetCompatibleRanges : _PS_DYNAMIC_ENFORCED_ADDRESS_RANGES
// 核心作用:进程的动态CET(控制流强制技术)兼容地址范围
// 初始化来源:进程加载CET兼容模块时创建,默认null
// 补充说明:CET用于防止跳转/调用到非法地址,提升进程安全性
+0x7a0 DisabledComponentFlags : 0
// 核心作用:进程禁用的组件标志(如禁用Win32k、禁用COM)
// 初始化来源:进程创建时由系统策略设置,默认0
// 补充说明:用于沙箱/容器进程,限制进程的功能
+0x7a4 PageCombineSequence : 0n1
// 核心作用:进程的页面合并序列号(内存压缩)
// 初始化来源:内存管理器合并页面时递增,默认1
// 补充说明:页面合并将多个小页面合并为大页面,提升内存效率
+0x7a8 EnableOptionalXStateFeaturesLock : _EX_PUSH_LOCK
// 核心作用:保护进程可选XState功能的并发访问
// 初始化来源:进程创建时初始化,修改XState时加锁
// 补充说明:XState包含CPU的扩展状态(如AVX、MPX)
+0x7b0 PathRedirectionHashes : (null)
// 核心作用:进程的路径重定向哈希表
// 初始化来源:启用路径重定向时创建,默认null
// 补充说明:路径重定向用于将文件访问重定向到指定目录(如UAC虚拟化)
+0x7b8 SyscallProvider : (null)
// 核心作用:指向进程的系统调用提供程序(自定义syscall)
// 初始化来源:进程注册自定义syscall时赋值,默认null
// 补充说明:仅内核模式/特殊进程使用,原生进程为null
+0x7c0 SyscallProviderProcessLinks : _LIST_ENTRY [ 0x00000000`00000000 - 0x00000000`00000000 ]
// 核心作用:将进程挂入系统调用提供程序链表
// 初始化来源:注册自定义syscall时插入链表,注销时移除
// 补充说明:系统遍历该链表管理所有自定义syscall的进程
+0x7d0 SyscallProviderDispatchContext : _PSP_SYSCALL_PROVIDER_DISPATCH_CONTEXT
// 核心作用:进程的系统调用提供程序调度上下文
// 初始化来源:注册自定义syscall时创建,默认null
// 补充说明:管理自定义syscall的调度、参数解析、返回值处理
+0x7d8 MitigationFlags3 : 0
+0x7d8 MitigationFlags3Values : <unnamed-tag>
// 核心作用:进程的安全缓解标志(第三代),补充前两代未覆盖的缓解策略
// 初始化来源:进程创建时从系统策略初始化,默认0
// 补充说明:包含最新的安全缓解措施(如Shadow Stack、CET)
+0x7dc Flags4 : 1
// 核心作用:进程扩展标志位(第四代),补充前三代标志
// 初始化来源:进程创建时继承父进程,运行时动态修改
// 补充说明:以下是各子位的含义:
+0x7dc ThreadWasActive : 0y1 // 作用:标记进程至少有一个线程曾活跃 | 来源:第一个线程启动时置1
+0x7dc MinimalTerminate : 0y0 // 作用:标记进程是否以"最小化终止"方式退出(仅释放核心资源,延迟清理非关键资源) | 来源:进程终止时由PspExitProcess根据系统负载/策略置位 | 补充说明:高负载场景下启用,减少进程退出的瞬时IO/CPU开销
+0x7dc ImageExpansionDisable : 0y0 // 作用:禁用进程可执行镜像的地址空间自动扩展 | 来源:进程创建时通过内核扩展属性设置,默认不禁用 | 补充说明:防止进程因镜像扩展占用过多虚拟内存,仅沙箱/受限进程启用
+0x7dc SessionFirstProcess : 0y0 // 作用:标记进程是所属会话创建的第一个进程(如会话的csrss.exe) | 来源:会话初始化时由PspCreateSessionProcess专属置位 | 补充说明:该进程退出会触发整个会话的终止逻辑
+0x7e0 SyscallUsage : 0 // 核心作用:进程的系统调用使用统计(按类型计数) | 初始化来源:进程创建时置0,每次调用syscall时按类型递增对应计数 | 补充说明:内核通过该字段监控进程的syscall行为,检测异常调用模式
+0x7e0 SyscallUsageValues : <unnamed-tag> // 作用:SyscallUsage的位段化存储(细分不同syscall类别:文件/内存/进程/线程等) | 来源:与SyscallUsage同步更新 | 补充说明:每个子位对应一类syscall的调用次数,便于快速统计
+0x7e4 SupervisorDeviceAsid : 0n0 // 核心作用:进程的超级visor模式设备ASID(地址空间标识符) | 初始化来源:仅ARM64/虚拟化场景下由设备驱动赋值,x64架构置0 | 补充说明:用于隔离虚拟化场景下进程对设备的地址空间访问
+0x7e8 SupervisorSvmData : (null) // 核心作用:指向进程的超级visor模式SVM(安全虚拟机)数据结构 | 初始化来源:仅Hyper-V/虚拟化场景下创建SVM时赋值,原生进程为null | 补充说明:管理超级visor模式下进程的虚拟化安全隔离属性
+0x7f0 NetworkCounters : 0xffffc983`94a118e8 _PROCESS_NETWORK_COUNTERS
// 核心作用:进程的网络IO计数器(细分TCP/UDP/ICMP等协议的收发字节/包数) | 初始化来源:进程创建时由Ws2_32.sys初始化,网络操作时更新 | 补充说明:比基础IO计数器更精细,可定位进程的网络资源消耗
+0x7f8 Execution : _PROCESS_EXECUTION
// 核心作用:进程的执行上下文(包含调度优先级、CPU时间片、执行模式等) | 初始化来源:进程创建时继承父进程执行属性,调度器动态更新 | 补充说明:内核调度器核心依赖此字段决定进程的CPU调度优先级和执行策略
+0x800 ThreadIndexTable : (null) // 核心作用:指向进程的线程索引表(快速查找线程ID对应的_ETHREAD) | 初始化来源:进程线程数超过阈值时由PspCreateThread创建,线程数较少时为null | 补充说明:替代遍历ThreadListHead,提升高线程数进程的线程查找效率
+0x808 FreezeWorkLinks : _LIST_ENTRY [ 0x00000000`00000000 - 0x00000000`00000000 ]
// 核心作用:将进程挂入系统的冻结工作链表(进程休眠/暂停时) | 初始化来源:进程被冻结(如系统休眠/手动暂停)时插入链表,恢复时移除 | 补充说明:内核冻结管理器通过该链表统一管理所有待恢复的冻结进程
总结:
1.通过PspCidTable得到 _HANDLE_TABLE
2.然后查看 _HANDLE_TABLE里的TableCode值
3.通过查看最后一位的数字来决定内存页存放的是内存地址还是_HANDLE_TABLE_ENTRY,如果非0表示存放的是内存地址
4.然后内存页可以存放512个内存地址或256个_HANDLE_TABLE_ENTRY
5.然后得到一个进程的pid,通过除以1024(256乘以4)得到第几个内存地址,
6.pid减去1024乘以第5步pid除以1024的结果(如果结果是大于1的话,如果是0这一步就不需要了)
7.通过第5步得到内存页的首地址
8.内存页首地址+4乘以第6步得到的偏移



