当前位置: 首页 > ops >正文

第二章 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 内核世界。


📑 目录

  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 工具实际演示 → 理论 + 实践更牢固。
http://www.xdnf.cn/news/19802.html

相关文章:

  • Linux 的 swap 是什么
  • Vue3 警告:Runtime directive used on component with non-element root node 解决方案
  • 16k+ star! 只需要DDL就能一键生成数据库关系图!
  • 正运动控制卡学习-网络连接
  • Java 黑马程序员(进阶篇1)
  • 从BERT到RoBERTa、ALBERT:揭秘Encoder-only预训练模型的进化之路
  • 【常用SQL语句和语法总结】
  • 数据科学家如何更好地展示自己的能力
  • 项目中 Spring Boot 配置文件未生效该如何解决
  • JavaScript箭头函数与普通函数:两种工作方式的深度解析
  • 诊断服务器(Diagnostic Server)
  • Linux 字符设备驱动框架学习记录(三)
  • Spring Boot 全局异常处理问题分析与解决方案
  • PastePal for Mac 剪贴板历史记录管理器
  • prometheus+grafana搭建
  • 7.4Element Plus 分页与表格组件
  • js设计模式-装饰器模式
  • CI(持续集成)、CD(持续交付/部署)、CT(持续测试)、CICD、CICT
  • Few-Shot Prompting 实战:用5个例子让GPT-4学会复杂任务
  • (二)文件管理-基础命令-cd命令的使用
  • 中州养老:资源添加功能
  • gitlab推送失败,内存不足的处理
  • 深入浅出Spring IoC与DI:设计思想、实现方式与反射技术详解
  • Excel 电影名匹配图片路径教程:自动查找并写入系统全路径
  • PostgreSQL 中唯一索引的工作原理
  • 分布式AI算力系统番外篇-----超体的现实《星核》
  • Vue基础知识-重要的内置关系:vc实例.__proto__.__proto__ === Vue.prototype
  • 股指期货可以通过移仓长线持有吗?
  • AppInventor2 如何自定义包名?
  • 华为云云原生架构赋能:大腾智能加速业务创新步伐