`
chinamming
  • 浏览: 151150 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

理解Windows内核模式与用户模式

 
阅读更多

内核层次架构

windows程序运行分为内核模式和用户模式,内核模式可以访问所有的内存地址空间, 并且可以访问所有的CPU指令。一般程序运行在用户模式, 通过系统调用切换到内核模式执行系统功能,Windows系统通过这种方式来确保系统的安全和稳定。



下面是内核的层次划分:

硬件抽象层(Hardware Abstraction Layer) (HAL) (hal.dll)
最底层隔离硬件的, 底层的第三方驱动程序就运行在这层。

内核 (Kernel)
实现操作系统的一些底层服务,比如线程调度, 多处理器的同步,中断/异常处理等。

执行体 (Executive)
实现基本的操作系统服务,比如基本的线程进程管理,内存管理, IO及进程间通讯等。

窗口图形子系统(Windows Graphics Subsystem)
由win32K.sys在内核层实现, 用户界面相关都依赖该层, User32.dll的大部分功能都由该层实现。

用户层关键进程

Windows系统在用户层有几个关键的系统进程:

Smss.exe (session manager Subsystem)
关于Session的概念可以参考我的这篇Sessions, Window Stations and Desktops, 在操作系统启动时会创建一个不与任何Session关联的Smss.exe管理者实例, 然后当有用户登录时它会为每个Sessin拷贝一份与之关联的Smss.exe实例,然后由该关联的Smss.exe实例启动winlogon.exe和csrss.exe.

WinLogon.exe
该进程管理用户的登录和注销, 我们按Ctrl+Alt+Del出现的界面和登录后出现的桌面窗口都是由它启动的。

Csrss.exe ( Client/Server Runtime Subsystem)
我们可以看到我们的桌面窗口(GetDesktopWindow)是由该进程创建的, 该进程主要负责Win32子系统的用户模式部分(内核模式部分由win32k.sys实现)。

Lsass.exe (Local Security Authority Subsystem)
WinLogon.exe通过该进程验证用户登录, 登录后产生安全访问令牌对象, 通过该令牌创建Explorer.exe, 我们其他用户进程都由Explorer.exe启动,并且继承了该令牌权限。

Services.exe
该进程简称为SCM (NT Service Control Manager), 该进程负责启动用户态一些特殊进程, 也就是我们通常所说的服务程序。

用户模式调用内核模式方式

由用户模式调用内核模式一般有2种方式 系统调用(system call) 和 IOCTL (IO Control Commands)


内核模式调用用户模式方式

可以通过IOCTL的上下文传递, 也可以通过APC (Asynchronous Procedure Call)直接调用。

进程间通讯方式

另外一种非常强大的用户模式与内核模式通讯方式, 同时也支持进程间通讯, 该方式就是ALPC (Advanced Local Procedure Call), 该方式被操作系统大量使用, WinRT中的Broker进程也用到了它 。
该方式实际上就4个核心函数:nt!NtAlpcSendWaitReceivePort, nt!NtAlpcCreatePort, nt!NtAlpcConnectPort, Nt!AplcAcceptConnectPort, 大概原理如下:



总结一下 ,通过上面Windows系统中一些关键概念的介绍, 加深我们对Windows系统的理解, 让我们对应用开发全局性的把握。

分享到:
评论

相关推荐

    Windows内核原理与实现.PDF

    《Windows内核原理与实现》是潘爱民大师的一部力作,该书深入浅出地解析了Windows操作系统的核心技术,帮助读者理解Windows内核的工作机制。作者通过结合实际的Windows内核源代码(WRK)来阐述理论知识,使得本书既...

    WINDOWS内核原理与实现(jb51.net).pdf

    首先,书中会详细介绍Windows内核的基础架构,包括内核模式与用户模式的划分,这是理解Windows操作系统运行机制的关键。内核模式下,操作系统拥有最高的权限,可以访问所有硬件资源;而用户模式则为应用程序提供了一...

    Windows内核安全与驱动开发 随书源码.rar

    随书源码rar文件提供了书中所讲解的各种实例代码,是学习和理解Windows内核安全以及驱动编程的重要辅助资源。这里我们将围绕这些关键概念进行详细阐述。 Windows内核是操作系统的核心部分,它负责管理系统的硬件...

    windows内核原理与实现 配套工具

    这本书涵盖了Windows内核的基础架构、系统调用、进程管理、线程调度、内存管理、设备驱动等多个关键领域,旨在帮助读者理解Windows操作系统如何高效地管理和协调系统资源。 源码在计算机科学中扮演着至关重要的角色...

    Windows内核安全与驱动开发光盘源码

    总之,Windows内核安全与驱动开发是一门深奥且实践性强的技术,结合源码学习,可以加深对操作系统底层原理的理解,提高系统级编程技能。通过深入研究,你将能够创建更高效、更安全的驱动程序,为Windows平台的稳定性...

    windows内核安全与驱动开发(pdf+源码).zip

    理解并掌握Windows内核安全与驱动开发,对于系统优化、性能提升、安全防护以及故障排查等方面都有着至关重要的作用。 内核安全主要涵盖以下几个方面: 1. **权限管理**:Windows内核采用强制访问控制(MAC)和 ...

    Windows内核 Windows内核

    《深入解析Windows内核》 Windows内核是微软操作系统的核心,它是系统运行、管理硬件资源、提供服务以及调度进程...深入理解Windows内核,不仅有助于提升系统优化和故障排查能力,也是成为优秀系统程序员的必经之路。

    Windows内核安全与驱动开发 随书代码

    1. 内核模式与用户模式:Windows操作系统采用两级权限模型,内核模式拥有最高权限,用于运行系统服务和驱动程序,而用户模式则为应用程序提供较低级别的访问权限。理解这两种模式的区别对于安全至关重要。 2. 保护...

    Windows内核原理与实现

    通过分析WRK代码,读者可以更深入地理解Windows内核的工作原理和实现细节,例如: - **源代码结构**:了解Windows内核的组织结构,包括不同模块之间的依赖关系。 - **关键函数和数据结构**:研究重要的内核函数如何...

    Windows内核安全与驱动开发 代码 谭文 陈铭霖

    《Windows内核安全与驱动开发》是一本深入探讨Windows操作系统内核安全机制和驱动程序开发的专业书籍。由谭文和陈铭霖两位作者共同撰写,旨在帮助读者理解并掌握Windows系统内部的工作原理,以及如何安全地进行驱动...

    Windows内核原理与实现.pdf

    Windows内核支持两种类型的驱动:用户模式驱动和内核模式驱动。内核模式驱动具有更高的权限,可以直接访问硬件,而用户模式驱动则运行在较低的权限级别,通常用于与硬件通信的简单任务。书中会详细讲解驱动开发过程...

    《Windows内核原理与实现》书内工具

    这些工具包括DPerfLite、EventHandler、IRPMon、MemMon以及ProcMon和SDTViewer等,它们在深入理解Windows内核的工作机制时扮演着重要角色。 首先,DPerfLite(Dynamic Performance Light)是一款轻量级性能计数器...

    Windows内核安全与驱动开发随书光盘

    《Windows内核安全与驱动开发》一书的随书光盘包含了丰富的案例代码,旨在帮助读者深入理解Windows内核安全机制以及驱动程序的开发过程。这些案例代码主要围绕Windows驱动编程展开,为学习者提供了宝贵的实践素材。...

    Windows内核安全编程

    2. **内核模式与用户模式** - Windows操作系统分为内核模式和用户模式。内核模式拥有最高的权限,可以直接访问硬件;用户模式则有较低的权限,需要通过系统调用来请求内核服务。 - 这种设计能有效防止用户程序误...

    Windows内核安全与驱动开发 源代码

    在深入探讨Windows内核安全与驱动开发的主题之前,我们首先要理解什么是操作系统内核以及它在计算机系统中的核心地位。Windows内核是操作系统的核心组件,负责管理系统的硬件资源、进程调度、内存管理和系统调用等...

    windows内核部分源码分析

    深入理解Windows内核,对于开发者来说,不仅可以提升对操作系统底层原理的认知,也能在系统优化、驱动开发等方面提供宝贵的理论支持。以下是对Windows内核部分源码的分析。 一、Windows内核架构概述 Windows内核...

    Windows内核设计思想 光盘源代码

    8. **设备驱动程序**:驱动程序是操作系统与硬件之间的桥梁,Windows支持两种类型的驱动程序:用户模式驱动和内核模式驱动,后者直接在内核空间运行,具有更高的权限。 9. **安全性与权限**:Windows内核采用了访问...

    寒江独钓--windows内核安全编程光盘源码_寒江独钓windows内核安全编程_

    首先,我们要理解Windows内核是操作系统的核心部分,它负责管理硬件资源、调度进程、提供系统服务等。内核安全编程则尤为重要,因为任何在内核层面上的漏洞都可能导致严重的系统崩溃或被恶意利用。因此,对于驱动...

    Windows内核安全与驱动开发源码

    6. **内核模式与用户模式**:了解这两种模式的区别和交互方式,能帮助开发者更好地设计和实现驱动,避免权限提升攻击。 7. **内存管理**:在内核层面上,驱动开发者需要熟悉如何分配、释放和管理内存,以及如何处理...

Global site tag (gtag.js) - Google Analytics