主流操作系统安全_Windows

Winodws系统结构

Windows引导过程:

  • BIOS
  • MBR
  • 引导扇区(引导分区的第一个扇区)
  • 引导扇区后续扇区
  • ntldr(实模式部分):切换至保护模式
  • ntldr(保护模式部分:os loader)

ntldr的工作:

构造内存描述符数组;映射页面,设置页目录寄存器,打开内存页面映射机制;处理boot.ini;执行ntdetect.com;加载内核模块ntoskrnl.exe、hal.dll和SYSTEM储巢;加载引导驱动程序和必要的文件系统驱动程序;构造LOADER_PARAMETER_BLOCK参数块;将控制交给内核模块ntoskrnl.exe的入口函数

内核初始化:

  • 0阶段初始化:在进程中进行。初始化CPU和一部分kernel的数据机构。
  • 1阶段初始化:在线程中进行,可并发。初始化绝大多数的模块。

操作系统内核与驱动开发

内核与驱动的关系

功能角度,驱动在内核的下层。硬件=>驱动=>内核=>应用。代码角度,驱动和内核开发实际融为一体。

驱动开发需要考虑问题:同步异步/共享独占/缓冲区管理/设备状态管理。

驱动属于IO系统的一部分,向下是HAL或硬件。

驱动开发

什么是驱动程序?

驱动程序是一个软件组件,可让操作系统设备彼此通信。 例如,假设应用程序需要从设备中读取某些数据。 应用程序会调用由操作系统实现的函数,操作系统会调用由驱动程序实现的函数。

并非所有驱动程序都直接与设备通信。堆栈中直接与设备通信的一个驱动程序称为“函数驱动程序” ;执行辅助处理的驱动程序称为“筛选器驱动程序” 。

软件驱动程序:未与设备关联的驱动程序 。可以访问核心操作系统数据结构。

扩展定义:驱动程序是观察或参与操作系统和设备之间通信的任何软件组件。

Windows驱动开发模型:

DDK(Driver Developer Kit)=>WDK(Windows Driver Kit)

操作系统与驱动程序之间遵循容器插件模型。Driver是一种被动的软件模块。驱动程序是一个回调函数的集合体,类似于DLL程序。

驱动程序可以调用Windows内核API、WDK运行时间库和其他驱动程序。不能调用用户模式API和ISO规定的C/C++标准函数库。

驱动对象与设备对象:

一个驱动对象下可能有多个设备对象,一个设备对象只能对应一个驱动对象。

IRP(I/O Request Package):

上层应用程序与下层设备进行IO时,利用IRP进行通信。

1

0%