windows分层模型
硬件抽象层屏蔽了硬件实现功能的细节。
IRP为内核层重要的数据结构。
物理地址和虚拟地址
- x64的cpu仅仅支持64位地址中的前48位。其中若虚拟地址为内核,则前16位为ffff;若虚拟地址为用户模式,则前16位为0000。
- 用户能看到的所有地址都是虚拟地址,CPU当中的寄存器CR3,保存了页表基地址的物理地址
- 虚拟地址转换物理地址
Windows Token
访问令牌(Access Token)是WIndows操作系统用于描述进程、线程安全上下文的对象。不同用户登录OS后都会创建一个Access Token,用户在创建进程、线程时这个Token会被不断复制。
OS通过进程、线程的Token来辨识特权信息。
Windows体系结构
(Windows NT架构,WIn10的环境子系统发送变化了)
NTDLL.DLL:
- 将用户模式的请求转译为内核模式的服务
- 在这一层,处理器环境切换,如Context Switch、sysEnter/sysExit
子系统DLL:
包含Kernel32.dll、Advapi32.dll、User32.dll、Gdi32.dll等,都是核心windows子系统的dll
Ntoskrnl.exe:执行体和内核
win32k.sys:windows子系统的内核模式部分,(GUI相关,如窗口管理器、图像设备结构GDI等)
用户程序与系统交互方式:
三种方式:
- 用户程序通过子系统DLL,直接调用到执行体提供的函数
- 用户程序通过子系统调用到Win32k.sys (win32 User/GDI部分),直接从用户模式切换到内核模式
- 通过环境子系统调用到内核,需要4次环境切换
I/O管理器
Windows把各种I/O请求(网络IO、磁盘IO等)等抽象成了IRP结构。I/O管理器将IRP分发给对应的驱动程序,一个驱动程序处理完后,通过I/O管理器将IRP传递给下一个驱动程序或者返回。
(NtReadFile()可以是同步IO或者是异步IO,由用户决定)
Windows安全性
内核模式下有一个安全引用监视器。
用户模式下有其他安全引用组件:
- WinLogon:windows中负责登录的组件
- LSASS:负责本地安全策略管理,对活动目录管理、对SAM服务器(含账户数据、用户口令)管理
其他
基本工作方式
常用工具