我之前写过一个有关于对象管理的读书笔记.但是这篇文章与前面的不同,这是我个人对对象管理器到底是什么的一个分析,而且也是直接对WRK代码进行的阅读. 执行体对象即我们通常所言的内核对象,我们知道Windows内核中有许多“管理器”,然而管理器并不是一个实体的存在而是一个抽象的概念.它更像是一系列相关函数和数据结构的集合. <Windows Internals>中如此定义对象管理器:“本节将介绍Windows的对象管理器,即执行体内部负责创建.删除.保护和跟踪对象的组件”. 我们先从创建对象开始.…
内核版本:linux-2.6.11 在Linux中,有多种执行体(指令流.执行单位),它们是CPU调度和分配资源的基本单位,它们是内核态可见的,即内核态下,每一种执行体都有对应的唯一数据结构task_struct来存储它的执行上下文. 它们分别是进程.轻量级进程.内核线程,创建一个执行体的方法是基于调用clone()函数并指定flags参数来完成. 通过指定不同的flags参数,可以规定新建的执行体的共享资源量.执行状态等,也正是于此来区分不同的执行体并控制不同执行体的运行开销.切换开销. ta…
Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 逆向分析操作系统内核代码至少需要具备两项技能: 段页汇编代码非常懂. 至少掌握三个结构体:EPROCESS.ETHRAEAD.KPCR(注意:EPROCESS.ETHREAD是在R0,在R3的是PEB与TEB.) 一.KPCR结构体介绍 当线程进入0环时,FS:[0]指向KPCR(3环时 FS:[0] --> TEB,如果想了解这个信息,可以看这篇博客利用C++实…
windows是一个非常优秀的OS,从今天开始,我要和大家共同分享windows给我们带来的快乐!本人只所以将自己的学习笔记与大家分享,一是让自己更深入的理解windows,再就是有什么疏漏之处,望大家指正!!来吧,开始我们的windows之旅! 一,windows2000体系结构(1)系统模型   在大多数多用户的OS中,用户程序和系统程序是分开的---系统程序是一个比较高的优先级上运行(核心态),而用户程序是在一个较低的等级上运行.系统程序有对系统数据和硬件的操作权,而用户程序要想操作系统数…
引子 WRK 是微软于 2006 年针对教育和学术界开放的 Windows 内核的部分源码, WRK(Windows Research Kernel)也就是 Windows 研究内核, 在 WRK 中不仅仅只提供了 Windows 内核模块的部分代码,其还提供了编译工具, 也就是通过这个编译工具,你可以将你的 WRK 编译成一个 EXE 文件, 也就是内核可执行模块,然后你可以利用这个 EXE 文件来取代操作系统本身的内核, 这样的话,下次开机的时候操作系统所加载的内核就是您编译的那个 EXE …
本页主题:如何在windows内核驱动中对文件操作,实现对文件的拷贝.粘贴.删除.查询信息等,这是很常用也是很简单的方法. 部分内容参考:http://www.cppblog.com/aurain/archive/2009/12/31/104563.html 实现原理: 一.在Windows执行体中,通过文件对象来代表文件,该文件对象是一种由对象管理器管理的执行体对象.例如:目录也是由文件对象代表的. 内核组件通过对象名来引用文件,即在文件的全路径前面加\DosDevices.(在Windows…
引子 WRK 是微软于 2006 年针对教育和学术界开放的 Windows 内核的部分源码,WRK(Windows Research Kernel)也就是 Windows 研究内核,在 WRK 中不仅仅只提供了 Windows 内核模块的部分代码,其还提供了编译 工具,也就是通过这个编译工具,你可以将你的 WRK 编译成一个 EXE 文件,也就是内核可执行模块,然后你可 以利用这个 EXE 文件来取代操作系统本身的内核,这样的话,下次开机的时候操作系统所加载的内核就是您编译 的那个 EXE 了.…
第一章 Windows内核概述 这一章节描述了Windows内核知识中最重要的几个概念,这些话题在这本书之后会有更详细的描述,那些会与当前的主题密切相关.要确保你理解这个章节的概念,因为这些概念构成了任何驱动甚至用户底层模式的基础. 在这章中: 进程(processes) 虚拟内存(Virtual Memory) 线程(Threads) 系统服务(System Services) 系统架构(System Architecture) 句柄与对象(句柄和对象) 进程 进程是一个正在运行程序的容器和管…
Windows内部概述-2- 线程: 执行代码的实体是线程.一个线程的包含在进程里面的,线程使用进程提供的资源来运行代码. 一个线程拥有以下的内容: 1:明确的运行模式,用户态或者内核态. 2:执行的环境,包括寄存器和执行状态. 3:一个或两个栈空间,用来存放变量和调用管理. 4:Thread Local Storage(TLS) 线程本地存储数组,用来存储线程专用数据和提供统一的访问语法. 5:基本的优先级和当前(动态)的优先级. 6:和处理器关联,用来指示允许线程在那个一个处理器上运行. 线…
Windows内核开发-4-内核编程基础 这里会构建一个简单但是完整的驱动程序和一个客户端,部署内核执行一些平时user下无法执行的操作. 将通过以下内容进行讲解: 1 介绍 2 驱动初始化 3 Create和Close操作调度实例 4 DeviceIoControl操作调度实例 5 安装和测试驱动程序 整个完整源代码最后面 1 介绍 该驱动将解决Windows API设置线程优先级的不灵活性. 在User模式下,线程的优先级由其进程优先级类和基于每个线程的偏移量组合来确定,偏移量具有有限的级别…