Windows内核原理与实现之Windows研究内核(WRK)

article/2025/10/5 19:31:44

Windows并非一个开放源码的操作系统,但正如上一章所提,Microsoft开放了一份以Windows XP x64和Windows Server 2003 SP1为基础的内核源代码,它可以编译和运行,作为教育科研机构的教学实践和研究的平台使用,称为WRK(Windows Research Kernel,Windows研究内核)。

WRK重要目标是辅助教学,让计算机专业的学生能够通过Windows内核源代码来理解和掌握现代操作系统中的基本概念和各种机制。

1,WRK包含以下

WRK内核源代码,涉及进程、线程、内存管理、执行体、对象管理器、缓存管理器、本地过程调用(LPC)、注册表、I/O管理器、安全引用监视器,以及线程调度、APC(异步过程调用)/DPC(延迟的过程调用)、中断以及异常处理等。随源码一起提供的还有响应的编译工具,因此,无须额外的编译器即可将WRK编译成Windows Server 2003 SP1的可执行内核。

NT设计文档。这是一组早期的文档,但是,通过阅读这些文档一方面可以清楚地理解Windows NT背后的原始设计思想,另一方面也可以看出Windows在这十多年中是如何发展和进化的。这些文档涵盖了Windows操作系统的方方面面,甚至包括文件系统设计大纲和内核的调式结构等。

软件Virtual PC 2007,以及Windows Server 2003 SP1的虚拟机映像,此虚拟机系统已配置好WRK内核。利用此Virtual PC 2007和WRK系统映像,您可以方便地调试和跟踪WRK中的代码。

课程资源CRK(Curriculum Resource Kit),包括一整套Windows操作系统讲义,共15个单元。每个单元又包含一些专题讲义、习题和上机练习题。对于以Windows为教学和实验平台的课程,这是一份非常有帮助的课件。

ProjectOZ源代码。ProjectOZ是一个利用Windows内核的NTAPI建立起来的CPU、MMU和陷进机制的操作系统实验环境,其核心是CPU、MMU和陷进机制的SPACE抽象。由于此实验平台的下面是一个真实的Windows操作系统在处理和操纵硬件,所以,学生们更有机会学习和感受操作系统算法和数据结构的复杂性。

然而,Microsoft目前并非对所有人开放以上材料,而是以教学和科研为开放目标,仅限于大学的教职工使用。参见:

2,WRK源代码说明

Windows的内核模块文件是ntoskrnl.exe,位于Windows\System32目录下,它包含了Windows体系结构中的执行体和内核(微内核)部分。WRK提供的源代码可以编译得到这一内核模块文件,在WRK编译环境下针对Intel x86处理器的默认生成文件名为wrkx86.exe。Windows的引导选项/kernel可以指定不同于ntoskrnl.exe的内核模块文件。表2.2列出了WRK源代码的目录结构及其对应的内核组件。

WRK包含了编译ntoskrnl.exe内核模块所需要的绝大部分代码,未公开部分的代码主要包括即插即用设备管理、电源管理、设备驱动程序校验器和虚拟DOS机的实现。为了编译WRK源代码以及得到实际可运行的内核模块,缺失的这部分被以二进制目标代码的形式包含在WRK中,位于base\ntos\BUILD\PREBUILT\i386(或base\ntos\BUILD\PREBUILT\amd64)目录。该目录还包含了其他一些需要静态链接的目标文件。尽快如此,WRK对于学习和理解Windows的工作机理仍然是一份极佳的资源。

WRK的代码是当时最新的Windows产品代码中摘出来的,可以编译并运行于Windows Server 2003 SP1(x86处理器版本)和Windos XP SP2(AMD64版本)系统中,其内核版本为5.2。WRK代码与产品代码几乎一致,主要的变化在于去掉了对服务器的支持,比如与Intel IA 64有关的代码。

Windows源代码一致性较好,非常易读。代码本身的逻辑以及各种标识符基本上是自解释性的,重要的函数头部都有详细的注释说明,重要的代码片段也有专门的注释。总体上,代码组织较为清晰,如表2.2所示。内核模块内部的每个组件都提供了一些接口函数供其他组件调用,也有一些函数供该组件内部使用。表2.3列出了一些常用的标识性前缀。有一些组件内部函数也有规律可循:前缀第一个字母后面跟一个i,或者在前缀后面跟一个p,这里i代表internal,即内部的;p代码private,即私有的。

即使没有代码,也能够通过本书对Windows内核原理有很深的了解,远比代码更加的直观和有效


http://chatgpt.dhexx.cn/article/Vsq4BCj5.shtml

相关文章

Windows内核结构

Windows内核结构 第一篇博客,随便写下练练手:) Windows内核总共分为三层: 与硬件直接打交道的这一层叫做硬件抽象层简称HAL,这一层的用意就是把所有与硬件相关联的代码逻辑隔离到一个专门的模块中,从而做到尽可能的独立于硬件平…

WINDOWS内核对象及其理解

一.前言 Windows中有很多像进程对象、线程对象、文件对象等等这样的对象,我们称之为Windows内核对象。内核对象是系统地址空间中的一个内存块,由系统创建并维护,这个内存对象是一个数据结构,维护着与对象相关的信息&a…

windows内核——基石

友链 内存布局 用户内存空间和内核内存空间之间的gap是为了避免不经意的越界而导致安全问题 CPU的初始化 系统启动期间,会对所有的处理器进行初始化操作 大部分初始化操作我们都不必了解,因为你了不了解都不影响你的逆向,毕竟你又不是开发…

Windows内核原理与实现--Windows基本结构概述

一、Windows系统结构概述 1、Windows采用双模式来保护操作系统本身,内核模式和用户模式。在Windows中,用户代码和内核代码有各自的运行环境,而且它们可以访问的内存空间也并不相同。在x86中,内核代码可以访问当前进程的4GB虚拟地址空间,而用户代码只能访问底端2GB虚拟地址…

《Windows内核原理与实现笔记》(一)Windows系统结构和基本概念

Windows内核结构 上图是windows内核的组成结构 如图Windows内核分三层,与硬件直接打交道的是硬件抽象层HAL,这一层把所有与硬件相关代码逻辑隔离到一个专门模块中,从而是上层尽可能独立于硬件平台。HAL是一个独立动态链接库,wind…

windows内核基础

windows分层模型 硬件抽象层屏蔽了硬件实现功能的细节。 IRP为内核层重要的数据结构。 物理地址和虚拟地址 x64的cpu仅仅支持64位地址中的前48位。其中若虚拟地址为内核,则前16位为ffff;若虚拟地址为用户模式,则前16位为0000。用户能看到的…

WebService的工作原理

WebService的工作原理如下: 服务提供者WebService2和WebService3通过UDDI协议将服务注册WebService目录中服务消费者WebService1通过UDDI协议从WebService目录中查询服务,并获得服务的WSDL服务描述文件服务消费者WebService1通过WSDL语言远程调用WebSer…

WebService原理

1、WebService实际上就是两个应用程序之间的远程调用,而且这种调用是跨语言的。 2、应用程序调用WebService的接口,实际上就是解析XML语言。也就是说两个应用程序之间的交流实际上就是通过XML来交流的。 3、WebService内部的实现是基于HTTP协议的&…

Web Service 的工作原理

Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。…

JavaScript高级程序设计(第三版)pdf版 下载

分享关于JavaScript高级程序设计(第3版)[美] Nicholas C.Zakas著 李松峰 曹力 译 一书供大家学习!!! 链接: https://pan.baidu.com/s/1RD4EXuQnTqH3kUfHWFaOYw 提取码: vias 复制这段内容后打开百度网盘手机App&#…

JS高级程序设计(14)

DOM 文档对象模型(DOM)是HTML和XML文档的编程借口。DOM表示由多层节点构成的文档,通过它开发者可以添加、删除和修改页面的各个部分。 文章目录 DOM一、节点层级1.Node类型2.Document类型3.Element类型4.Text类型5.Comment属性6.CDATASectio…

javascript高级程序设计(红宝书)记录

故心故心故心故心小故冲啊 文章目录 第3章.语法基础第4章.变量作用域与内存第5章.基本引用类型第6章.集合引用类型第8章.对象、类与面向对象编程第10章.函数第11章.期约与异步函数第12章.BOM第17章事件第24章.网络请求与远程资源第25章.客户端存储 第3章.语法基础 undefined 值…

JavaScript高级编程

原文地址: http://www.onlamp.com/pub/a/onlamp/2007/07/05/writing-advanced-javascript.html Web应用程序(Web Applications) 从计算机纪元的黎明刚刚来临开始,不同平台间软件的互用性就一直是关注的焦点。为了尽可能实…

javascript高级程序设计 第三版

网盘地址 提取码&#xff1a;vh81 笔记 第二章 2.1script标签 <script>元素属性&#xff1a;async、charset、defer、language、src、type async和defer只对外部脚本有效&#xff0c;language已废弃&#xff0c;type默认为“text/javascript”defer属性可以让脚本在文…

js高级程序设计(一) —— js简介

学习《JavaScript高级程序设计》的知识总结&#xff0c;以及对部分内容的扩展~ 1、一个完整的js实现的三个部分 核心&#xff08;ECMAScript) 文档对象模型&#xff08;DOM) 浏览器对象模型&#xff08;BOM) 1-1&#xff1a;ECMAScript ECMA-262的近一版是第 5版&#xf…

JS高级程序设计(12)

BOM 浏览器对象模型BOM提供了与网页无关的浏览器功能对象。 文章目录 BOM一、window对象1.Global作用域2.窗口关系3.窗口位置与像素比4.窗口大小5.视口位置6.导航与打开新窗口7.定时器8.系统对话框 二、location对象1.查询字符串2.操作地址 三、navigator对象1.检测插件2.注册…

JavaScript 高级程序设计

理解原型对象 无论什么时候&#xff0c;只要创建一个新函数&#xff0c;就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。 在默认的情况下,所有的原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个包含一个指向prototyp…

js高级程序设计(第一章)

1.什么是JavaScript 1.1 简短的历史回顾 出现背景&#xff1a;当时&#xff0c;验证简单的表单&#xff0c;需要大量与服务器的往返通信成为用户的痛点。 出现时间&#xff1a;1997 年&#xff0c;JavaScript 1.1 作为提案被提交给欧洲计算机制造商协会&#xff08;Ecma&…

JavaScript高级程序

文章目录 1. JavaScript 实现1.1 ECMAScript1.2 DOM1.3 BOM1.4 小结 1. JavaScript 实现 虽然 JavaScript 和 ECMAScript 基本上是同义词&#xff0c;但 JavaScript 远远不限于 ECMA-262 所定义的那样。 完整的 JavaScript 实现包含以下几个部分:  核心(ECMAScript)  文档…

JavaScript高级程序设计——读书笔记

文章目录 第1章 JavaScript简介第2章 在HTML中使用JavaScript第3章 基本概念第4章 变量、作用域、内存问题第5章 引用类型第6章 面向对象的程序设计第7章 匿名函数第8章 BOM第9章 客户端检测第10章 DOM第11章 DOM2和DOM3第12章 事件第13章 表单脚本第14章 错误处理与调试第15章…