Wednesday, August 31, 2011

Windows内核学习-2.4

硬件抽象层(HAL, Hardware Abstraction Layer):
实现可移植性的关键,向Windows运行的硬件平台提供低层接口,使得对Windows来说隐藏了I/O接口,中断控制等细节。程序通过调用HAL例程来获得与平台相关的信息。
设备驱动(Device Driver):
处在I/O管理器和相关硬件之间的的可装载内核模块,在以下三种环境之一运行(内核模式):
  • 发起I/O功能的用户线程中
  • 内核模式的系统线程中
  • 由中断发起
有以下类型的驱动:
  • Hardware device driver,使用HAL向硬件设备写入或读取
  • File system driver, 接受面向文件的I/O请求并转换成针对特定设备的I/O
  • File system filter driver, I/O请求传递给下一层前,截获I/O请求并进行附加处理
  • Network redirector and server, 将系统的I/O请求转发至网络
  • Protocol driver,实现网络协议
  • Kernel streaming filter driver, 相互链接以处理数据流
WDM(Windows Driver Model):
Windows NT Driver Model
的扩展,同时增加了对PnPPower Options的等的支持。
WDM
定义了三种驱动:
  • 总线驱动(bus driver), 为总线控制器,适配器,桥等其他拥有子设备的设备提供服务。任何总线都有总线驱动。
  • 功能驱动(function driver), 提供对特定设备的接口,唯一可以访问设备专用寄存器的驱动。
  • 过滤驱动(filter driver), 为设备提供附加功能,可以改变I/O请求
WDM中,总线驱动将设备报告给PnP管理器,功能驱动控制硬件。单一的驱动程序无法完成控制设备的所有功能。
下层过滤驱动哦负责改变I/O请求,上层过滤驱动负责增加附加功能。

Ntdll.dll
中的函数列表:windows为用户模式子系统DLL提供的所有系统服务以及相对于每个子系统暴露出的子集。也含有部分未文档化的API

Windows
系统例程的命名规范:
<
前缀><操作><对象>
常用前缀:
Prefix
Component
Cc
Cache manager
Cm
Configuration manager
Ex
Executive support routines
FsRtl
File system driver run-time library
Hal
Hardware abstraction layer
Io
I/O manager
Ke
Kernel
Lpc
Local procedure call
Lsa
Local security authentication
Mm
Memory manager
Nt
Windows system services (most of which are exported as Windows functions)
Ob
Object manager
Po
Power manager
Pp
PnP manager
Ps
Process support
Rtl
Run-time library
Se
Security
Wmi
Windows Management Instrumentation
Zw
Mirror entry point for system services (beginning with Nt) that sets previous access mode to kernel, which eliminates parameter validation, because Nt system services validate parameters only if previous access mode is user

系统进程(System Process):
  • Idle process, 每个CPU中一个线程,占用CPU空闲时间
  • System process,包含大部分内核模式系统线程
  • Session managersmss.exe
  • Windows subsystem, csrss,exe
  • Logon process,winlogon.exe
  • Service control manager, services.exe及其建立的子进程
  • Local security authentication server, lsass.exe
Idle processSystem process在系统中没有实际对应的镜像文件。
进程树表明了进程之间的父子关系。
进程相关的工具:
Task Manager, taskmgr.exe
Process Viewer, pviewer.exe
Process Status, pstat.exe,
唯一可以显示模块在系统空间中的加载地址
Process Explode, pview.exe
Task List, tlist.exe
Quick Slice, qslice.exe
中断(interrupt)与延迟过程调用(DPC)
任务管理器会将中断与延迟过程调用时间包含在系统空闲时间中。
系统进程(system process)与系统线程(system thread)
系统进程(Windows 2000中的ID8Windows XP2003中的ID4)是只能运行在内核模式的内核模式系统线程的母体。
内核模式系统线程(kernel-mode system thread)只在内核模式下的系统空间中加载代码,通过PsCreateSystemThread在系统初始化阶段创建。
系统线程有:
balance set manager,
每秒唤醒一次,发出与调度有关的事件
cache manager,
实现先读后写的I/O
file server device driver(srv.sys),
向磁盘上对网络共享的文件数据发起网络I/O请求
系统线程默认属于系统进程,但设备驱动可以在任何进程中创建系统线程。
会话管理器(Session Manager):系统中第一个创建的用户模式进程。打开额外页面文件、执行延迟的文件改名和删除等操作、创建系统环境变量等。

Winlogon->LSASS->Userinit:
Winlogon,
处理交互式用户登陆界面和注销。可以通过SAS(Secure Attention Sequence)启动,Windows上的SASctrl+alt+del.Windows GINA(Graphical Identification and Authentication)(msgina.dll)提供默认的登陆界面。
Lsass,
本地安全服务器进程
Userinit,
执行该用户的初始化工作,查找注册表中的shell键值来执行系统外壳(默认explorer.exe)然后退出。因此Explorer.exe没有父进程。
服务控制管理器(SCM, Service Control Manager):
Services.exe,
负责启动、停止服务进程以及与服务进程交互。
服务有三种名称:进程名,注册表中的内部名称,SCM中的显示名。服务还可以有一个描述域。

No comments:

Post a Comment