直到今天,Windows仍然是软件历史上最复杂的操作系统,深入理解这个操作系统对于任何软件工程师来说都是一个巨大的挑战。本培训借助调试器这把利剑,深入Windows系统内部,以生动鲜活的方式,解读IRQL、IRP、设备栈等诸多难以理解的概念,领略NT内核的博大精深,感悟软件的真谛。
第一部分:Windows NT核心特征 (1.5 hours)
特殊的FS段,TEB,PCR,地址空间,虚拟内存原理,系统调用,系统组件,HAL、内核、执行体、系统进程(IDLE、SMSS.EXE、WinLogon.EXE),子系统、Linux子系统、会话
第二部分:WinDBG精要(1.5 hour)
WinDBG的命令类型,常用命令,命令语法,调试符号,符号文件的种类,符号服务器,定制调试事件的方法和重要的调试命令,软件断点、硬件断点,复杂的断点命令,x86寄存器和反汇编技巧
第三部分:内核调试引擎(1.5 小时)
两种软件哲学,内核调试引擎(结构,重要的函数全局变量,工作原理),五种连接方式, 启用方法,PCR,双机用户态调试(Debug WinLogon and CSRSS)
第四部分:调试启动过程 (1.5 hours)
现场跟踪Windows系统的启动过程,解析其中的重要步骤和关键细节:内核初始化,CPU初始化,执行体的阶段0和阶段1初始化,SMSS,CSRSS和WinLogon,UserInit以及Shell。
第五部分:内存管理器 (1.5 hours)
内存管理的多级架构,内存管理器,大内存页及其使用,6大工作线程,内核池,分页内核和非分页内核池,PFN数据库,虚拟地址空间的管理(VAD)
第六部分:内核态栈 (1.5 hours)
栈的创建,栈帧的组织方法,用户态栈 v.s. 内核态栈、WoW栈,演示栈溢出攻击的原理,通过Windows 7系统的真实案例介绍基于Cookie的溢出检测机制,内核态栈溢出以及双误崩溃
第七部分:I/O子系统和内核态驱动 (1.5 hours)
I/O子系统架构,I/O管理器,驱动程序类型,设备树,ACPI,理解ACPI脚本,PCI总线概要,PnP,I/O子系统的建立过程,设备栈,PDO,FDO,IRP,常用的调试命令;驱动验证器:验证原理,验证项目,启用方法,使用WinDBG分析验证失败,WHCK测试,实例分析
试验:分析双误异常导致的系统崩溃转储文件(0.5小时)
第八部分:存储和文件系统 (1 .5 hours)
磁盘端口驱动,分区管理,卷,磁盘过滤驱动,Smart Card Reader的设备栈 文件系统,文件系统的过滤驱动,Mini Filter,实际案例分析:因为文件过滤驱动而导致的系统死锁
第九部分:网络(1.5 hours)
背景,NT的网络架构,WinSock API,LSP (Layered Service Provider),AFD,Kernel Socket,TCP/IP,NDIS,硬件厂商的驱动程序,Windows Filter Platform (WFP)
第十部分:系统崩溃和转储 (1.5 hour)
系统崩溃概览,Windows蓝屏崩溃(BSOD)的过程,系统转储,转储文件的产生过程,转储失败的原因,分析系统转储的方法,自动分析,自动分析的局限,真实案例解析:双误导致的崩溃,挂死在DPC,回退到错误现场的方法,从栈上寻找线索
第十一部分:转储分析(1.5 小时)
分析系统转储的方法,自动分析,自动分析的局限,手工分析,真实案例解析:系统挂死在 DPC,回退到错误现场的方法,从栈上寻找线索
第十二部分:系统死锁和系统调优(1.5 小时)
系统挂死,典型原因,解决方法,窗口子系统挂死,资源锁,!locks,IRQL,挂死在高IRQL,中断风暴。WPT 概览,调优基础,采样和 Instrumentation,WPR 和 WPA,实例讨论:高 CPU 占用率,GPU 调优
讲师介绍:
张银奎,微软全球最有价值技术专家(MVP),同济大学电子与信息工程学院特邀讲师,前英特尔亚太研发有限公司软件架构师。 《软件调试》、《格蠹汇编》的作者,新版《十万个为什么》电子分册撰稿人之一,《程序员》杂志调试之剑栏目作者 。1996年毕业于上海交通大学信息与控制工程系,在软件产业工作20年,在多家跨国公司历任开发工程师、软件架构师、开发经理、项目经理等职务,对 IA-32 架构、操作系统内核、驱动程序、虚拟化技术、云计算、软件调优、尤其是软件调试有较深入研究。从2005年开始公开讲授“Windows内核及高级调试”课程,曾在微软的Webcast和各种技术会议上做过《Windows Vista内核演进》、《调试之剑》(全球软件战役研究峰会)、《感受和思考调试器的威力》(CSDN SD2.0大会)、《Windows启动过程》、《如何诊断和调试蓝屏错误》、《Windows体系结构——从操作系统的角度》(以上三个讲座都是微软“深入研究Windows内部原理系列”的一部分)等。翻译(合译)作品有《现代x86汇编语言编程》、《21世纪机器人》、《观止——微软创建NT和未来的夺命狂奔》、《数据挖掘原理》、《机器学习》、《人工智能:复杂问题求解的结构和策略》等。