第1章 Sysinternals工具入门

第1章 Sysinternals工具入门

Sysinternals工具是一套用于微软Windows平台,免费的高级管理、诊断和排错工具,由Sysinternals的创始人我本人(Mark Russinovich)和Bryce Cogswell[1]共同开发而来。2006年7月被微软收购后,这些工具已可通过微软TechNet网站下载。

为数众多的Sysinternals工具可以:

  • 满足IT专业人员和开发者的各类需求
  • 操作直观,易于使用
  • 已打包为一个单一可执行文件,无需安装即可随处运行,甚至可以从网络位置或可移动存储设备运行
  • 运行后不会在系统中留下太多痕迹

虽然Sysinternals经费有限无法成立正规的产品组,但我依然会快速发布新的功能、工具以及瑕疵修复。某些情况下我可以在一周内根据用户建议提供某些实用,并且易于实现的功能。

然而由于不具备完善的产品组以及正规的测试部门,这些工具只能“依原样”提供,无法得到微软产品支持部门的官方支持。Sysinternals团队在自己的网站上维护了一个专用的社区支持论坛,下文将介绍这个论坛,我会尽可能及时地修复用户汇报的各种问题。

工具概述

Sysinternals工具针对Windows操作系统的不同领域提供了各种类型的功能。虽然有一些涵盖各类操作、功能极为全面的工具,例如Process Explorer和Process Monitor,但也有一些只专注于特定某个领域的工具,例如“进程工具”以及“文件工具”。很多工具包含图形用户界面(GUI),但也有一些只提供各类命令行接口的控制台工具,这些工具主要是为了实现自动化操作或方便用户在命令行下使用。

本书将重点介绍4个重要工具(Process Explorer、Autoruns、Process Monitor以及ProcDump),每个工具将用一章专门介绍。后续章节将各用一章介绍同属于一个类型的其他工具。表1-1列出了这些章节的内容,并简要介绍了每一章将会涉及的工具。

表1-1 章节主题

工具

描述

第3章,Process Explorer

 

Process Explorer

任务管理器的代替品,可显示有关进程和线程的详细信息,包括父子关系、加载的DLL以及打开的对象句柄,例如使用中的文件

第4章,Autoruns

 

Autoruns

通过分组的方式显示会在系统启动时、用户登录时以及运行Internet Explorer时自动运行的软件,并可供用户启用或禁用这些内容

第5章,Process Monitor

 

Process Monitor

实时记录有关文件系统、注册表、网络、进程、线程以及映像加载活动的细节信息

第6章,ProcDump

 

ProcDump

在满足特定条件,例如呈现CPU使用尖峰或窗口不响应的情况下为进程创建内存转储

第7章,PsTools

 

PsExec

远程执行进程,或以Local System身份执行进程并对结果输出进行重定向

PsFile

远程列出或关闭打开的文件

PsGetSid

显示计算机、用户、组,或服务等安全主体的安全标识符(SID)

PsInfo

列出有关系统的信息

PsKill

按照名称或进程ID(PID)终止进程

PsList

列出有关进程和线程的详细信息

PsLoggedOn

列出本地登录或通过远程连接登录的账户

PsLogList

转储事件日志记录

PsPasswd

为用户账户设置密码

PsService

列出并控制Windows服务

PsShutdown

关闭、注销本地或远程系统,或更改其电源状态

PsSuspend

挂起并恢复进程

第8章,进程和诊断工具

 

VMMap

显示有关进程虚拟和物理内存使用情况的细节信息

DebugView

监视本地或远程计算机生成的,用户模式和内核模式的调试输出信息

LiveKd

在无需重启动至调试模式的前提下,针对运行中的本地系统或Hyper-V来宾系统快照运行标准的内核调试器,并可用于对运行中的系统创建内存转储

ListDLLs

在控制台窗口中显示已载入系统的DLL的详细信息

Handle

在控制台窗口中显示被系统中进程打开的对象句柄的详细信息

第9章,安全工具

 

SigCheck

验证文件签名,显示版本和与映像有关的其他信息,通过VirusTotal.com查询反恶意软件引擎

AccessChk

搜索为特定用户或组授予权限的对象,提供有关所授权限的详细信息

Sysmon

监视并报告系统活动,借此发现攻击行为

AccessEnum

搜索文件或注册表层次结构,找出权限可能有变化的位置

ShareEnum

枚举网络中的文件和打印机共享,并显示可访问这些共享的人

ShellRunAs

重新提供类似于Windows Vista中以不同用户身份运行程序的能力

Autologon

配置用户账户在系统启动后自动登录

LogonSessions

枚举计算机上活跃的本地安全机构(Local Security Authority,LSA)登录会话

SDelete

安全地删除文件或目录结构,对硬盘上所有未分配区域执行数据擦除操作

第10章,Active Directory工具

 

AdExplorer

显示Active Directory对象并启用对这些对象的编辑

AdInsight

追踪Active Directory轻型目录访问协议(LDAP)API调用

AdRestore

枚举并还原已删除的Active Directory对象

第11章,桌面工具

 

BgInfo

在桌面墙纸上显示计算机配置信息

Desktops

在单独的虚拟桌面上运行应用程序

ZoomIt

放大屏幕上显示的内容,并提供屏幕画面标注功能

第12章,文件工具

 

Strings

在文件中搜索嵌入的ASCII或Unicode文本

Streams

找出包含可选数据流的文件系统对象,并删除这些数据流

Junction

列出并删除NTFS目录交接点

FindLinks

列出NTFS硬链接

DU

列出目录层次结构的逻辑大小和磁盘空间占用大小

PendMoves

查看计划在下一次系统重启动时执行的文件操作

MoveFile

安排在下一次重启动系统时所要执行的文件操作

第13章,磁盘工具

 

Disk2Vhd

针对物理磁盘创建虚拟硬盘(VHD)映像

Sync

将磁盘缓存中未写入的改动写入至物理磁盘

DiskView

以图形化方式显示卷中每个簇的映射信息,帮助用户查看每个簇保存了哪个文件,以及特定文件使用了哪些簇

Contig

对特定文件执行碎片整理,或显示特定文件的碎片化程度

DiskExt

显示有关磁盘范围的信息

LDMDump

显示逻辑磁盘管理器(LDM)数据库中有关动态磁盘的详细信息

VolumeID

更改卷ID(也叫做卷序列号)

第14章,网络和通信工具

 

PsPing

测量TCP或UDP数据包的单向和轮循时间、延迟以及带宽

TCPView

列出活跃的TCP和UDP端点

Whois

查看互联网域名注册信息或执行反向DNS查找

第15章,系统信息工具

 

RAMMap

提供有关物理内存使用情况的详细视图

RU

列出所选注册表键的注册表空间使用情况

CoreInfo

查看处理器和Windows系统是否可以支持各种功能,例如“不可执行”内存页,并可显示逻辑处理器与核心、处理器插槽、非一致内存访问(NUMA)节点以及处理器组之间的映射关系

WinObj

显示Windows的对象管理器名称空间

LoadOrder

显示Windows加载各类设备驱动并启动不同服务的大致顺序

PipeList

列出正在侦听的命名管道

ClockRes

显示系统时钟的当前、最大和最小精度

第16章,其他工具

 

RegJump

启动注册表编辑器并直接定位至指定的注册表路径

Hex2Dec

在十六进制和十进制之间进行双向转换

RegDelNull

搜索并删除名称中包含嵌入式NUL字符的注册表键

Bluescreen Screen Saver

可以逼真模仿“蓝屏死机”界面的屏幕保护程序

Ctrl2Cap

将Caps Lock键击键事件转换为Control键击键事件

Windows Sysinternals网站

若要访问Sysinternals网站(如图1-1所示),最简单的方法是浏览http://www. sysinternals.com,随后将自动重定向至微软TechNet网站Sysinternals首页,目前该首页的地址是http://technet. microsoft.com/sysinternals。除了所有Sysinternals工具,该网站还提供了很多相关资源与链接,包括培训、图书、博客、文章、网络广播、即将举办的活动以及Sysinternals社区论坛。

图1-1 Windows Sysinternals网站

下载工具

用户可以只下载自己需要的Sysinternals工具,或下载名为Sysinternals Suite,包含所有工具的压缩(.Zip)文件。Sysinternals首页上的链接可以直接打开特定工具的下载页面。工具索引页列出了所有工具的清单,并包含到每个类别的链接,例如文件和磁盘工具,或网络工具,单击后即可查看该类别下包含的所有工具。

下载的每个工具都被打包为压缩(.Zip)文件,其中包含了一个或多个可执行文件以及最终用户许可协议(EULA)文本文件,此外部分工具可能还包含联机帮助文件。

 

注意 每个PsTool工具只能以PsTools工具套件或Sysinternals Suite套件的形式打包下载。

本书的合著者Aaron习惯于创建一个“C:\Program Files\Sysinternals”目录,将整个Sysinternals Suite套件内容提取到这个文件夹中,这样其他非管理员用户就无法修改其中的内容了。随后他会将这个位置加入Path系统环境变量中,这样即可从任何位置,包括从Windows 7开始菜单的搜索框,以及从Windows 8.1开始界面的搜索框随时启动所需的工具,如图1-2所示。

图1-2 在Windows 7开始菜单(左)或Windows 8.1开始界面(右)的
搜索框中,通过路径搜索启动Procmon

提取文件前取消对.Zip文件的“锁定”

 

在从下载的.Zip文件中提取内容之前,首先应移除会让Windows将该内容视为不可信,并显示类似图1-3和图1-4所示警告和错误信息的标记。Windows附件执行服务会为.Zip文件增加一条代表该文件来自互联网的可替换数据流(ADS),通过Windows资源管理器从中提取文件时,这样的ADS会被附加至提取的所有文件中。

图1-3 打开互联网上下载的文件时Windows会显示警告信息

图1-4 如果被标记为来自互联网,编译后的HTML帮助(CHM)文件将无法正确显示内容

移除ADS的方法之一是在Windows资源管理器中打开该.zip文件的属性对话框,单击常规选项卡底部的【解锁】按钮,如图1-5所示。另一种方法是使用本书第12章“文件工具”中介绍的Sysinternals Streams工具。

图1-5 对于下载的文件,其属性对话框的底部会显示【解锁】按钮

直接通过网络运行工具

Sysinternals Live是一个可以帮助用户无需事先查找、下载并提取,即可直接从网络上运行Sysinternals工具的服务。Sysinternals Live的另一个优势在于可以确保用户始终能够运行最新版的工具。

要在Internet Explorer中通过Sysinternals Live运行工具,请在地址栏输入http://live.sysinternals.com/工具名.exe(例如http://live.sysinternals.com/procmon.exe)。或者使用UNC形式的Sysinternals Live路径,例如\live.sysinternals.com\tools\工具名.exe(请注意UNC格式中增加了一个“Tools”子目录,直接在浏览器中输入URL时无需输入该子目录)。例如运行\live.sysinternals.com\tools\procmon.exe可启动最新版Process Monitor。

 

注意 使用Sysinternals Live启动工具所用的UNC语法要求系统中运行了WebClient服务。在新版Windows中,该服务可能并未配置为自动启动。直接启动该服务(例如运行net start webclient)要求用户具备管理员权限。用户可以在不具备管理员权限的情况下间接启动该服务,为此只需要在命令行中运行net use \live.sysinternals.com或在Windows资源管理器中浏览\live.sysinternals.com 即可。

用户还可以为\live.sysinternals.com\tools 添加盘符,或在Windows资源管理器中以远程共享的形式打开该目录,如图1-6所示。同理,用户也可以在浏览器中访问http://live. sysinternals.com 以查看整个Sysinternals Live目录。

图1-6 Windows资源管理器中显示的Sysinternals Live

单一可执行映像

为了在无需安装的情况下更简单地进行打包、分发和转移,所有Sysinternals工具都是一个可直接启动的32位可执行映像。程序运行中所需的全部资源均已嵌入映像中,可在运行时自动提取至文件所在目录,如果该目录不可写(例如文件位于只读介质上),则会保存在当前用户的%TEMP%目录中。当不再需要时,程序会自动删除提取出的文件。

通过这种技术Sysinternals工具可以更方便地使用,例如可同时支持32位和64位系统。对于在64位Windows上需要64位版本才能正确运行的工具,32位主程序可识别CPU体系结构,提取相应的x64或IA64库文件并启动。例如在x64系统中运行Process Explorer时,会看到一个Procexp64.exe以子进程的形式运行在Procexp.exe进程下面。

 

注意 如果程序文件提取至%TEMP%,在禁止从%TEMP%目录执行的情况下,程序将无法运行。例如AppLocker规则可能进行此类限制,或%TEMP%目录的权限通过修改取消了执行权限。

大部分使用内核模式驱动的Sysinternals工具会将驱动文件提取至%SystemRoot%\ System32\Drivers,随后加载所需驱动并删除驱动文件。在系统关机前,驱动映像会始终保持在内存中。当运行了包含新版驱动的新版工具后,可能需要重启动系统才能加载新版驱动。

Windows Sysinternals论坛

Windows Sysinternals论坛地址为http://forum.sysinternals.com(如图1-7所示),如果在使用Sysinternals工具过程中遇到疑问或希望报告问题,这里是首选,也是最适合的地方。用户可以在这里使用关键字搜索帖子和话题,查看他人是否遇到过类似情况。论坛中为每个主要的Sysinternals工具都设立了子论坛,此外还有用于提交想法和功能/工具更新建议的板块。用户还可以在论坛中讨论有关Windows内部原理、开发、排错以及恶意软件等问题。

图1-7 Windows Sysinternals论坛

论坛发帖前需要注册并登录,注册只需要提供最少量的信息。注册完毕后即可在特定板块中订阅话题回复或新帖子的通知,同时可通过私信与其他成员联系。

Windows Sysinternals网站博客

订阅Sysinternals网站讨论博客是在发布新工具,现有工具有更新,或Sysinternals网站新发布其他内容后获得通知的最佳方式。强烈建议大家尽量使用最新版工具,工具中存在的很多Bug都可以通过版本更新的方式解决。网站博客地址为http://blogs.technet.com/ b/sysinternals。虽然博客首页只列出了重要工具的更新,但其实所有更新,无论大小都会发布到这个博客中。

Mark的博客

我在自己的博客上探讨Windows内部原理、安全以及排错等话题的内容。这个博客上与Sysinternals有关的两个系列文章非常受欢迎:“案例”系列文章介绍了如何使用Sysinternals工具解决日常工作中遇到的问题,“挑战极限”系列文章介绍了Windows中的资源局限、监视方法,以及可能对用户产生的影响。我的个人博客的地址为:

http://blogs.technet.com/b/markrussinovich

在Sysinternals首页单击“Mark的博客”链接可以看到我发布的所有博客文章完整列表。

本书的合著者Aaron也通过自己的博客讨论Sysinternals、安全、应用程序兼容性,以及其他技术话题,他也会通过这些博客网站发布各种工具:

http://blogs.msdn.com/b/aaron_margosis

http://blogs.technet.com/b/fdcc

http://blogs.technet.com/b/secguide

Mark的网络广播

在Sysinternals首页单击“Mark的网络广播”可以看到一个列表,其中列出了我在TechEd和其他技术大会上做过的演讲,所有内容均可免费点播,内容涵盖“最受欢迎的‘无解案例’讲座”、Sysinternals排错方法讲座、Channel 9访谈以及我主持过的Springboard虚拟圆桌讨论会。

Sysinternals许可信息

Sysinternals工具是免费提供的。用户可以在自己的计算机以及公司计算机上安装并使用任意数量的软件副本。然而这些软件的使用需要遵守第一次启动工具时显示的许可条款,以及链接到Sysinternals首页的软件许可页面中所列出条款的要求。

最终用户许可协议以及/accepteula参数

用户在系统上运行每个工具前必须接受最终用户许可协议(EULA)。首次在一台计算机上运行某个特定工具时,哪怕运行的是控制台工具,都会看到如图1-8所示的EULA对话框。用户必须单击【同意】按钮该工具才能启动。

图1-8 PsGetSid的最终用户许可协议

由于该对话框的显示会对自动化操作或其他非交互式使用场景产生干扰,大部分Sysinternals工具可接受命令行参数/accepteula,使用该参数意味着用户同意许可条款。例如下列命令可以在非交互式上下文中使用PsExec(将在第7章介绍)在server1上运行LogonSessions.exe(将在第9章中介绍),其中LogonSessions.exe命令行的/accepteula参数可以防止执行该命令过程中因为等着按下同意按钮而陷入无尽的等待中:

PsExec \\server1 logonsessions.exe /AcceptEula

但要注意,某些Sysinternals工具由于尚未更新,还不能支持/accepteula参数。对于这些工具,用户可能需要手工设置标记以代表接受协议。为此可在命令行中执行下列操作,该操作可在server1注册表的HKEY_CURRENT_USER\Software\Sysinternals分支下为每个工具创建EulaAccepted注册表键:

psexec \\server1 reg add hkcu\software\sysinternals\pendmove /v eulaaccepted /t reg_dword /d 1 /f

有关Sysinternals许可的常见问题

  • 在公司提供的计算机上,我最多可以安装或使用多少Sysinternals工具副本?

对于你所拥有的,或由你提供支持的设备,可安装和使用的软件数量无限制。

  • 我能否在我自己的软件,我的网站,或我的杂志中分发Sysinternals工具?

不可以。微软并未提供任何分发许可,因此第三方哪怕免费分发也是不允许的。微软鼓励大家从微软下载中心获取这些工具,或可直接通过网络运行,这样即可始终用上最新版的工具。

  • 我能否许可或重新使用任何Sysinternals源代码?

Sysinternals源代码已经不再提供下载或许可了。

  • Sysinternals工具是否继续保持免费?

是的。微软目前并不准备撤销这些工具或对其收费。

  • Sysinternals工具是否提供技术支持?

所有Sysinternals工具完全“依原样”提供,不提供微软的官方支持。不过微软提供了专门的Sysinternals社区支持论坛(http://forum.sysinternals.com),用户可以在这里汇报问题或提交新功能建议。


[1]  Bryce于2010年从微软退休,已经不再承担有关Sysinternals工具的相关工作。

目录

  • 版权
  • 版权声明
  • 内容提要
  • 序言
  • 前言
  • 关于作者
  • 第1部分 入门
  • 第1章 Sysinternals工具入门
  • 第2章 Windows核心概念
  • 第3章 Process Explorer
  • 第4章 Autoruns
  • 第2部分 使用指导
  • 第5章 Process Monitor
  • 第6章 ProcDump
  • 第7章 PsTools
  • 第8章 进程和诊断工具
  • 第9章 安全工具
  • 第10章 Active Directory工具
  • 第11章 桌面工具
  • 第12章 文件工具
  • 第13章 磁盘工具
  • 第14章 网络和通信工具
  • 第15章 系统信息工具
  • 第16章 其他工具
  • 第3部分 排错——“难解之谜”
  • 第17章 错误信息
  • 第18章 崩溃
  • 第19章 挂起和性能迟钝
  • 第20章 恶意软件
  • 第21章 理解系统行为
  • 第22章 开发者排错

相关技术

推荐用户