第二章 Windows 核心概念通俗解析

发布于:2025-09-04 ⋅ 阅读:(20) ⋅ 点赞:(0)


Windows 核心概念通俗学习笔记

(基于《Sysinternals 工具使用指南》第 2 章)

学 Windows 工具,不只是会用命令,更要理解背后的原理。掌握操作系统核心概念,能让我们真正看懂 Sysinternals 工具展示的复杂数据。本文带你从「权限、进程、内核模式、句柄、应用隔离」等核心知识出发,用通俗语言理解 Windows 内核世界。


📑 目录

  1. 管理员权限与 UAC(User Account Control)
  2. 进程、线程与作业(Processes, Threads, Jobs)
  3. 用户模式与内核模式
  4. 句柄(Handle)与对象管理
  5. 应用隔离:MIC 与 App Container
  6. 受保护进程(Protected Processes)
  7. 调用栈与符号(Call Stack & Symbols)
  8. 会话、窗口站与桌面(Sessions & Window Stations)
  9. 窗口消息与 UIPI

1. 管理员权限与 UAC

  • 权限模型

    • Windows 账户有「用户权限」和「管理员权限」。
    • 管理员几乎无限制,普通用户则被限制修改系统设置和访问其他人数据。
  • UAC 的引入

    • Vista 开始,默认即使是管理员组的用户也只获得 过滤后的普通用户令牌
    • 真正的管理员操作需要 UAC 提示 → 点击确认
  • 常见场景

    • 右键 → 以管理员身份运行
    • 程序带有 清单文件(manifest) 声明需要提升。
    • 系统识别老旧安装程序时自动提示。

📌 记忆技巧
UAC 提示分三类:
👉 静默提升(系统默认命令)、
👉 确认提示(管理员 Yes/No)、
👉 输入密码(普通用户或非管理员账号)。


2. 进程、线程与作业

  • 程序 ≠ 进程

    • 程序是磁盘上的代码。
    • 进程是执行时的容器,包含内存、句柄、令牌等资源。
  • 线程(Thread)

    • 真正执行代码的单位。
    • 每个线程有自己的寄存器、堆栈,但共享进程的虚拟内存。
  • 作业(Job)

    • 一种进程分组机制。
    • 可以统一限制内存、执行时间,也可一键终止整个进程组。

📌 口诀
👉 程序是静的,进程是动的,线程是跑的。
👉 作业像「任务打包」,一次性管控一群进程。


3. 用户模式与内核模式

  • 用户模式(User Mode):应用程序运行的普通模式,权限有限。
  • 内核模式(Kernel Mode):驱动、核心系统服务运行的特权模式,可访问全部硬件资源。

切换场景:
调用 API(如 ReadFile) → 进入内核模式 → 完成磁盘读写 → 返回用户模式。

📌 理解比喻

  • 用户模式像「前台窗口」,用户点按钮。
  • 内核模式像「后台仓库」,负责真实搬运。
  • 前台必须找后台办事,否则会违规。

4. 句柄(Handle)

  • Windows 一切资源(文件、注册表、线程、事件等)都被抽象成对象。
  • 应用程序通过 句柄(handle) 操作这些对象。
  • 句柄本质是「对象表里的索引」。

📌 口诀
创建 → 得到句柄 → 用句柄操作 → 用完关闭。
忘记关闭 → 内存泄漏。


5. 应用隔离:MIC 与 App Container

  • MIC(强制完整性控制):Vista 引入,区分 低/中/高 完整性级别。

    • 低级进程(如 IE 保护模式)不能修改高级进程资源。
  • App Container(Win8 引入):

    • 每个 UWP 应用都有自己独立的容器。
    • 资源访问需明确声明「能力(Capability)」。
    • 文件、注册表、对象命名空间完全隔离。

📌 理解
MIC 解决「用户进程互相干扰」。
App Container 解决「应用互相越界」。


6. 受保护进程(Protected Processes)

  • 初衷:防止音视频 DRM 被破解。
  • 发展:保护 反病毒软件进程凭据管理进程(Lsass.exe)
  • 即使是管理员,也不能随意调试、注入或终止这些进程。

📌 记忆点
保护链:父进程受保护 → 子进程自动继承保护。


7. 调用栈与符号

  • 调用栈(Call Stack):记录函数调用路径,帮助开发者找到「程序怎么走到这里的」。
  • 符号(Symbols):函数名、变量名、源代码行号。没有符号只能看到内存地址。

👉 配置符号服务器(https://msdl.microsoft.com/download/symbols
即可让 Sysinternals 工具显示更易读的函数名。

📌 口诀
没有符号 → 看不懂;
有符号 → 找根因。


8. 会话、窗口站与桌面

  • 会话(Session):支持多用户并发(远程桌面)。
  • 窗口站(Window Station):包含剪贴板、桌面等对象。
  • 桌面(Desktop):实际显示窗口的逻辑表面,如 Default、Winlogon。

📌 重点
Vista 以后,服务进程跑在 Session 0,用户进程跑在 Session 1+,避免安全攻击(Shatter Attack)。


9. 窗口消息与 UIPI

  • Windows GUI 应用通过消息循环(Message Loop)驱动。
  • 风险:低权限进程可伪造消息攻击高权限进程。
  • UIPI(用户界面权限隔离):阻止低完整性进程向高完整性进程发危险消息。

📌 例子
普通进程不能模拟「点击管理员确认按钮」。


✨ 总结

这章的核心目标是帮我们理解 Sysinternals 工具背后的数据语义

  • 为什么有些功能要管理员权限?
  • 为什么进程树里有些进程不能操作?
  • 为什么某些应用必须在独立容器里跑?
  • 为什么调试时必须加载符号?

学会这些概念后,用 Sysinternals 工具(Process Explorer、Process Monitor、AccessChk…)时就能更快定位问题,真正理解 Windows 的底层逻辑。


📌 学习技巧

  • 口诀记忆法(如「程序是静的,进程是动的,线程是跑的」)。
  • 类比生活场景(前台 vs 后台,仓库 vs 窗口)。
  • 多结合 Sysinternals 工具实际演示 → 理论 + 实践更牢固。

网站公告

今日签到

点亮在社区的每一天
去签到