Windows操作系统----进程与线程----内核层对象----KPROCESS

typedef struct _KPROCESS
{
     DISPATCHER_HEADER Header;
     LIST_ENTRY ProfileListHead;
     ULONG DirectoryTableBase;
     ULONG Unused0;
     KGDTENTRY LdtDescriptor;
     KIDTENTRY Int21Descriptor;
     WORD IopmOffset;
     UCHAR Iopl;
     UCHAR Unused;
     ULONG ActiveProcessors;
     ULONG KernelTime;
     ULONG UserTime;
     LIST_ENTRY ReadyListHead;
     SINGLE_LIST_ENTRY SwapListEntry;
     PVOID VdmTrapcHandler;
     LIST_ENTRY ThreadListHead;
     ULONG ProcessLock;
     ULONG Affinity;
     union
     {
          ULONG AutoAlignment: 1;
          ULONG DisableBoost: 1;
          ULONG DisableQuantum: 1;
          ULONG ReservedFlags: 29;
          LONG ProcessFlags;
     };
     CHAR BasePriority;
     CHAR QuantumReset;
     UCHAR State;
     UCHAR ThreadSeed;
     UCHAR PowerState;
     UCHAR IdealNode;
     UCHAR Visited;
     union
     {
          KEXECUTE_OPTIONS Flags;
          UCHAR ExecuteOptions;
     };
     ULONG StackCount;
     LIST_ENTRY ProcessListEntry;
     UINT64 CycleTime;
} KPROCESS, *PKPROCESS;

Header:

        表明是分发器对象,可用于等待。进程退出时,此对象为有信号状态。

ProfileListHead:

        进程参与性能分析时,作为节点加入全局性能分析进程链表。

DirectoryTableBase:

        两个成员的数组,第一个指向页目录表地址,第二个指向超空间的页目录表地址。

LdtDescriptor:

        LDT的描述符

Int21Descriptor:

        为了兼容DOS,通过int 21h调用系统功能。

IopmOffset:

        指定IOPM(IO权限表,IO Privilege Map)位置。控制进程的用户模式IO访问权限。

Iopl:

        IO优先级(IO Privilege Level)。

ActiveProcessors:

        记录进程正在哪些处理器上运行。

KernelTime:

        在内核模式运行所花时间。

UserTime:

        在用户模式运行所花时间。

ReadyListHead:

        一个双向链表的表头。保存进程中处于就绪状态但未被加入全局就绪链表的线程。每一项是KTHREAD的WaitListEntry域。

SwapListEntry:

        单链表项,进程要被换出时,通过此域加入到KiProcessOutSwapListHead为头的单链表。要被换入内存时,通过此域加入KiProcessInSwapListHead为头的单链表。

VdmTrapcHandler:

        VDM环境下运行16位程序时,处理Ctrl+C中断的函数。

ThreadListHead:

        指向一个链表头,链表中包含该进程的所有线程。

ProcessLock:

        一个自旋锁对象。保证对进程数据结构中成员的互斥访问。

Affinity:

        指定该进程的线程可以在哪些处理器上运行。

BasePriority:

        该进程的线程的基本优先级。

QuantumReset:

        进程中线程的基本时限重置值。

State:

        说明进程是否在内存中。

ThreadSeed:

        该进程的下一个创建线程的理想处理器。创建一个线程后,该值会改变。

PowerState:

        电源状态。

IdealNode:

        进程优先选择的处理器节点。这里是NUMA(非一致的内存访问)。

ExecuteOptions:

        NX执行选项。

StackCount:

        当前进程中有多少个线程的栈位于内存中。

ProcessListEntry:

        当前系统中所有具有活动线程的进程通过这个域串成一个链表。(执行体中EPROCESS有一个总进程链表)

欢迎关注我的微博:大雄_RE。专注软件逆向,分享最新的好文章、好工具,追踪行业大佬的研究成果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值