Windows内核
文章平均质量分 84
分析windows内核源码以及ReactOS的源码, 长期记录。
Kiopler
这个作者很懒,什么都没留下…
展开
-
[Windows内核源码分析6] 引导过程(执行体管理器初始化在Phase1部分的分析)
查看内部具体做了什么, 首先它根据是否是NT系统以及系统的大小来决定要创建的工作线程数量。接下来对这个工作线程队列数组进行初始化, 其中的。查看一下其内部做了什么, 其内部主要做了2件事。看一下这个结构体的内容, 其中最重要的就是。是指代数组中各项的队列类型的数组下标枚举。是3,即这个数组的总数, 其他的。为每个工作线程队列创建工作线程。阶段1的执行体初始化主要调用了。这个字段是一个双向循环队列。初始化工作线程队列数组。看一下这个数组的类型是。原创 2022-10-12 17:41:03 · 691 阅读 · 0 评论 -
[Windows内核源码分析5] 引导过程(对象管理器初始化在Phase1部分的分析)
其内部执行的操作很简单,一个是创建一个目录对象, 接着将该目录对象插入到全局名字空间中。**目录对象并创建了3个指向它的符号链接。如果存在但是并非是我们需要定位的对象类型,就不能重复插入,确认具体的原因后返回。如果定位到了该对象, 并且是我们需要插入的对象类型,首先需要做一些安全方面的工作。所以其内部创建了对应类型的对象后,返回指代该对象的句柄。成功创建了该对象后, 为其制定DACL并再其中加入了ACE规则。来通过句柄引用了这个对象, 获取指向该对象的指针。为该对象在进程中创建句柄表项,并获取该句柄。原创 2022-10-11 18:46:50 · 715 阅读 · 0 评论 -
[Windows内核源码分析4] 引导过程(Phase1部分分析)
后查看当前处理器的线程链表中是否有需要运行的线程,如果没有就让当前处理器运行Idle线程。接着就返回准备执行阶段1的初始化工作线程。后首先调用HalAllProcessorsStarted通过HAL硬件抽象层所有处理器已经初始化完,接着就对对象管理器, 执行体管理器, 调试器管理器, 安全管理器的阶段1的初始化以及调用。下面来继续分析,首先来看看现在的调用栈, 当我们从Phase0的初始化返回时的调用栈如下。由于阶段1的初始化内容比较多,这里仅做对整体的流程分析,其中的细节之后会写文章继续分析。原创 2022-10-10 19:08:27 · 861 阅读 · 0 评论 -
[Windows内核源码分析2] 引导过程(进程线程管理器初始化在Phase0部分的分析)
的整个流程, 刚开始都是一些初始化工作, 这些工作中需要提一嘴的是对进程线程以及模块加载卸载监控的回调的初始化,熟悉反游戏外挂的人肯定对这几个接口非常熟悉。来创造一个进程句柄表, 即CID句柄表。由于这个函数会使得该表位于之前创建的全局内核句柄表链表上, 而这个CID表示属于进程拥有的。本文章记录分析进程线程管理器在windows系统引导的阶段0中的初始化工作。主要是PsInitSystem函数。接下去初始化了一个工作队列中PsReaperWorkItem类型的回调函数。把该表从全局内核句柄表链表上摘除。原创 2022-10-07 14:46:33 · 498 阅读 · 0 评论 -
[Windows内核源码分析3] 引导过程(安全管理器初始化在Phase0部分的分析)
本文章记录分析安全管理器在windows系统引导的阶段0中的初始化工作。主要是SeInitSystem函数。进入后内部调用的实际上是。原创 2022-10-07 14:06:40 · 591 阅读 · 0 评论 -
[Windows内核源码分析1] 引导过程(对象管理器初始化在Phase0部分的分析)
本文章记录分析对象管理器在windows系统引导的阶段0中的初始化工作。沿着该目录下的链表进行遍历,如果找到了HASH值相等的对象,则获取其HASH值对应对象的头部, 并获取其中的。利用该HASH值找到对应的全局名字空间中特定的对象目录,并获取其结点的指针, 接着锁住该目录。的创建过程, 其主要调用了ExCreateHandleTable函数。其将新的对象插入到对应的目录下的链表中,这样就完成了插入目录的操作。实际上都是初始化system进程的EPROCESS结构体中的对象。接下来仔细查看一下这个。原创 2022-10-05 15:31:02 · 591 阅读 · 0 评论 -
[Windows内核源码分析0] 引导过程(Phase0部分分析)
看了下之后加载了APCI.sys, pci.sys, isapnp.sys, compbatt.sys, intelide.sys, MountMgr.sys, ftdisk.sys等等。该函数的主要目的是初始化内核数据结构, 初始化空闲线程和处理器对象, 初始化PCB结构即进程控制块, 并调用执行体层的初始化例程, 并且也用于新处理器上线时的初始化。上面的描述说该例程会被调用2次, 首先在Phase0阶段初始化执行体层和所有它的子组件, 接着在Phase1阶段再次执行初始化工作。原创 2022-09-29 16:13:39 · 1122 阅读 · 0 评论