第二章 Windows 核心概念通俗解析
第二章 Windows 核心概念通俗解析
- 📑 目录
- 1. 管理员权限与 UAC
- 2. 进程、线程与作业
- 3. 用户模式与内核模式
- 4. 句柄(Handle)
- 5. 应用隔离:MIC 与 App Container
- 6. 受保护进程(Protected Processes)
- 7. 调用栈与符号
- 8. 会话、窗口站与桌面
- 9. 窗口消息与 UIPI
- ✨ 总结
Windows 核心概念通俗学习笔记
(基于《Sysinternals 工具使用指南》第 2 章)
学 Windows 工具,不只是会用命令,更要理解背后的原理。掌握操作系统核心概念,能让我们真正看懂 Sysinternals 工具展示的复杂数据。本文带你从「权限、进程、内核模式、句柄、应用隔离」等核心知识出发,用通俗语言理解 Windows 内核世界。
📑 目录
- 管理员权限与 UAC(User Account Control)
- 进程、线程与作业(Processes, Threads, Jobs)
- 用户模式与内核模式
- 句柄(Handle)与对象管理
- 应用隔离:MIC 与 App Container
- 受保护进程(Protected Processes)
- 调用栈与符号(Call Stack & Symbols)
- 会话、窗口站与桌面(Sessions & Window Stations)
- 窗口消息与 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 工具实际演示 → 理论 + 实践更牢固。