|
本来偶在学习内核线程调度的东西,发现里面有关于HANDLE_TABLE的知识.于是参照WRK把附带的一些东西深入学习了一下子--关于PsLookupProcessByProcessId的执行流程[写点心得存档,供以后学习的同学参考.老鸟飘过~] PsLookupProcessByProcessId-> ExMapHandleToPointer-> ExpLookupHandleTableEntry 第2个参数传进来进程ID (它被赋予给 EXHANDLE 结构体中的 GenericHandleOverlay 变量)
这个检查是确保 2~10这9位存在,即3层表的0级的索引存在. 它会调用ExpLockHandleTableEntry 来锁定当前的 handle table entry (InterlockedCompareExchangePointer ---->InterlockedCompareExchange) .如果不成功或者ExpLookupHandleTableEntry返回结果为0,则可能是进程句柄处于被调试状态, 通过 HANDLE_TABLE 结构中的 DebugInfo 来判断当前句柄是否处于被调试状态. 否则返回NULL,调用失败.
------------------------------------------------------------------------------------- |
PsLookupProcessByProcessId的执行流程
最新推荐文章于 2025-12-24 02:23:30 发布
本文详细介绍了PsLookupProcessByProcessId函数的工作原理及其在内核线程调度中的作用。通过对函数调用流程的剖析,揭示了如何通过进程ID获取对应进程的EPROCESS结构。
本来偶在学习内核线程调度的东西,发现里面有关于HANDLE_TABLE的知识.于是参照WRK把附带的一些东西深入学习了一下子--关于PsLookupProcessByProcessId的执行流程[写点心得存档,供以后学习的同学参考.老鸟飘过~]





3761

被折叠的 条评论
为什么被折叠?



