2023年12月11日发(作者:)

维普资讯

Technology 软件调试>>> 如何调试W i n d ows子系统的 服务器进程(C S R S S.EX E) 口文/张银奎 Windows环境子系统进程(CSRSS EXE.简称 二个参数是该进程的EPROCESS ̄构指针第三个参数指向的是 CSRSS)是Windows子系统的服务器进程。尽管从NT4开始.窗 进程的映像名称 第四个参数指向的是包含解释信息的字符串。 口管理I包括屏幕输出 用户输入和消息传递)和GDI的主体 使用WinDbg进行内核调试或分析DUMP文件可以观察这些信息。 实现移入到内核(win32k sys)中.但CSRSS仍然是Windows子 尽管CSRSS在Windows系统中地位重要.但关于它的介绍 系统的灵魂.它监管着系统内运行着的所有Windows进程和线 却如凤毛麟角。就连著名的Windows内幕一书对它的介绍也如 程.每个进程在创建后都要到它这里注册登记后方能运行.退 蜻蜓点水。微软的文档中也从未见过关于CSRSS原理和设计的 出时也要到此报告注销 除了掌管着各个进程的 生死存亡”. 正式介绍.在MSDN中搜索一下.找到的大多都是与CSRSS有关 CSRSS在桌面管理、终端登录 控制台管理、HardError}E告和DOS 的系统故障信息。因此 可以说CSRSS是Windows世界中被”保 虚拟机等方面也起着重要作用。总之.把CSRSS称为Windows 密”的最好的模块之一。这种神秘性使得很多Windows领域的 系统的“大内总管”不算为过。CSRSS身担如此多的重任.所 老将也不大熟悉CSRSS这个名宇.更不知道它长什么样.有时 以Windows系统真的离不开它.如果尝试强行杀死CSRSS进程 竟还以为它是病毒呢。不过不管你是否熟悉它.CSRSS始终在 (使用kiII或其它工具).那么系统便会以蓝屏(BSOD.Blue Screen 每一个Windows系统(不包括3 X或更早的Windows)中运行 Of Death)结束(图1). 着.而且起着不可替代的作用。 那么是不是真的没有必要了解CSRSS呢7 NO.因为其地位 的重要性,要了解某些Windows机制(如进程管理、控制台窗 口 用户态调试 HardError等),探索它又变得无法回避。 没有文档.没有代码,如何了解CSRSS呢7对于这样的难 题,调试跟踪无疑是最佳利刃.然而这也不是件容易的事。 首先.因为CSRSS是Windows系统的关键进程,关乎系统 安全之大计.所以缺省状态下.系统是禁止CSRSS被调试的。另 外对于Windows 2000或之前的版本.CSRSS是调试子系统的一 部分.所以如果不启动特别选项.调试对话也是无法建立和工 作的。 其次.不要以为这个大内总管很悠闲.在一个典型的Win- dows XP系统中 CSRSS通常有十几个工作线程在打理着系统 图1:CSRSS意外退出会导致系统蓝屏终止(BSOD) 的日常工作.虽然它们总共占用的CPU资源通常也就在1~2% 左右,使用pstat观察一下(表1】.你会发现它们大多都是在忙 从图1中可以看到,蓝屏的停止码(StopCode)为F4.好时 碌着的,模式切换次数很高.说明它们频繁奔走在内核态和用 髦的代号.不过在这里的含义是CRITICAL—OBJECT_TERMINATION 户态之间。更严重的是.当我们在调试器调试CSRSS时.那么 一一”生死攸关的”系统对象被终止f停止码后面括号中是 中断到调试器必然导致CSRSS进程被挂起(Windows系统还不 BSOD的参数,第一个参数 3 代表被终止的是进程对象;第 允许以线程为单位建立调试会话).那么它的所有线程也就被挂 116一疆序员