内与外的困惑:找出System进程占用100%CPU的元凶

来源: http://blog.cfan.com.cn/html/64/51964-32697.html
我的系统文件“内外兼修”
PS:发表于Cfan第17期,这是完整原文,上杂志时由于版面空间之限删减了一些文字和图片,如有错误敬请指正。
系统文件丢失或损坏导致系统无法启动,恐怕我们十有八九都碰到过……准备好了吗,一起来整整系统文件的“内核”(Kernel)带“外壳”(Shell),让我们的系统运行更安全高效。
一、简单脆弱的“外壳”进程:Explorer
Windows 给我们提供了一个亲切友好的界面,这要归功于Explorer.exe——Windows的“外壳”。和DOS的“外壳”COMMAND.COM相比,Explorer.exe让我们在Windows中自由地单击、双击、拖拽……这些无疑比DOS更加精彩。然而,Explorer.exe亦正亦邪:
1.当“利剑”掌握在正义手中
相信吗,我们可以轻而易举地重命名正在运行的Explorer.exe,因为它只是“外壳”。从Windows加载桌面之前到退出之后,系统登录管理器 Winlogon.exe就把“外壳”的职责交给了Explorer.exe。正常系统的中,注册表 [HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon]下“Shell”的键值应是“Explorer.exe”。
我们可以做一个“偷天换日” 的实验:将前面的“Shell”键值改为某个程序的完整路径,比如“C:/Program Files/Microsoft Office/OFFICE11/WINWORD.EXE”,或者先将Explorer.exe改名为Explorer.bak,再将这个程序(最好是绿色软件)相关文件复制到系统目录,将主程序名改为Explorer.exe。重启电脑后该程序将充当Windows的“外壳”与用户“对话”。利用这个原理,我们可以将Windows打造成专门用途的电脑,而不知其中奥妙是找不回Explorer.exe的。Windows中“带命令行提示的安全模式”也就是让cmd.exe代劳“外壳”的职责(见图1)。

2.警惕“披着羊皮的狼”
Windows的Shell调用了如此多的DLL应用程序扩展,以致恶意程序可以轻易侵袭Explorer.exe,轻则在文件(夹)右键添加某些选项菜单,重则Explorer.exe被恶意程序利用,甚至导致系统无法正常启动,成了“披着羊皮的狼”。
这些都是利用“外壳”的弱点,比较容易解决:先清除注册表中相关的Shell键值,如文件夹右键菜单就位于 [HKEY_CLASSES_ROOT/Folder/shell]以及[HKEY_CLASSES_ROOT/Directory/shell]下。通过进程、服务查看可以找出隐藏运行的进程,终止后即可删除、卸载。如果Explorer.exe有问题,可以进入“带命令行提示的安全模式”,用 replace命令替换为正常的系统文件(用“help replace”可查询用法),再搜索注册表修复与“Explorer.exe”相关的键值、改正被恶意程序关联的项,最后删除恶意程序相关的文件。
二、并不安全的“内核”进程:System
系统启动后,“任务管理器”中的几个系统进程(在“进程”列表中“用户名”显示为“SYSTEM”的进程)是按什么顺序启动的?System是位于系统底层的“内核”进程,其他一些系统进程都以它为基础,所以可以把它称为其他系统进程的“父进程”。这些系统进程启动的顺序是:System→smss.exe→csrss.exe→Winlogon.exe。
火速链接
关于系统进程的知识请参考本刊2006年第15期《 看透进程真面目》一文。
Windows中,作为底层的System进程可以调用上千个驱动程序(SYS系统文件)。而杀毒软件正是以驱动程序模块安装到系统中,才能在系统登录之前“抢先”运行保护系统安全;同样“与时俱进”的木马也“学会”了这一招,在System进程的保护下“暗渡陈仓”。这些有问题的“驱动”可能导致的后果就是System进程的高CPU占用。
下面我们来 揪出System进程占用100%CPU的“元凶”。
1. 运行“perfmon”打开性能管理,右击右窗格选择“添加计数器”,在“性能对象”下拉菜单中选择“Thread”,“从列表中选择范例”选中所有 Syetem的线程(如System/0、System/1),然后点击“添加→关闭”。查看CPU占用最高的线程对应的System实例,记下实例号。这里以25为例(见图2)。

2. 找一张XP的安装盘,将光盘目录SUPPORT/TOOLS/SUPPORT.CAB中的pviewer.exe、pstat.exe两个文件解压到 Windows/System32目录下。运行“pviewer”,在“Process”列表选择“System”,点击下面的“Threads”列表中 “25”一项,记住那个“Start Address”,如“0xf98b9f90”(见图3)。

小提示
无安装盘可以“ KB838079”为关键字搜索,下载微软SP2支持工具,解压后也能得到SUPPORT.CAB。
3. 打开命令提示行,键入“pstat”,查找最后的“ModuleName”(模块名)字段,对照“Load Addr”,找出与“f98b9f90”相似的内存地址,如“F9824000”,逐一排查即可找出有问题的系统文件(见图4),根据此文件创建的时间找出可疑的程序。

你可能感兴趣的:(Windows,&,Driver)