前言

经常用到SYSINTERNALS SOFTWARE的几个经典工具.

对软件行为监控首选SYSINTERNALS SOFTWARE出品的系列工具:

regmon—可以监控系统注册表读写

filemon—用于监控文件读写

ProcessExplorer—用于监控进程以及进程关系

tcpview—监控进程监听端口,网络连接行为

鉴于以上软件功能上互有交集,SYSINTERNALS SOFTWARE收归微软后,以上工具除了ProcessExplorer和tcpview,文件和注册表监控工具都已不支持vista以上版本系统,取而代之的是集以上软件功能为一体的ProcessMonitor.

今天就稍微详细点介绍下以上几个工具中的ProcessExplorer和ProcessMonitor

下载地址

每列提取码与链接对应,如为空表示直接点进去链接不需要提取码,无链接则表示对应软件只需要提取码即可

项目 地址一 地址二 地址三
链接 百度网盘 备用网盘 BitTorrent Sync
提取码 rtki

ProcessExplorer

ProcessExplorer这个工具如果经常折腾系统或者做软件调试的人应该接触较多.

相比Windows系统自带的任务管理器,其优秀之处在于很方便地查看进程相关信息,如进程路径,参数,线程等,还可以查看TCPIP连接,进程关系,占用情况等.

工具虽小,但作用很大,是一款软件爱好者必备利器.

查看进程相关信息

启动ProcessExplorer.exe后,我们可以在你需要查看的进程上右键>属性查看,也可以直接双击或点击工具栏上方的手势按钮,打开后我们可以看到程序的路径,参数,线程等等信息,如图2所示:

此处我们可以查看一个进程的文件版本,加载线程,网络连接等各方面信息,其中有个比较有用的功能是校验程序的真伪.

我们知道目前网络上病毒猖狂,伪造的或者被人修改的系统文件比比皆是,在这么多文件里面我们根本难以区分哪些文件真正属于微软原版文件,指不定一个外表看上去微软得不能再微软的程序,实际上跟微软一点关系也没有,甚至是植入了恶意程序.

当一个程序签名是微软的信息,而实际上被注入第三方线程或者干脆非微软时,软件默认会以紫色醒目提示.同时,我们可以查看该进程属性,点击”verify”按钮,程序会自动与微软提供的程序符号表校对,如果确系微软文件,将会在版本信息处标识已校验通过.

反之,如果非微软的文件,则肯定无法与微软提供的符号表相匹配,软件将会提示无法验证.如果签名信息为微软,而又无法在此处通过验证,那么此时你就要多留意此文件的安全性了.

查看程序调用关系

一个程序往往由很多组件组成,程序通过各种调用关联完成一系列的功能.当然,现在的程序编写多采用标准库,查看到的也包含系统提供的相关模块.

我们可以点击工具栏上的面板按钮,也可以按快捷ctrl+l或者ctrl+d,一般多用ctrl+d,软件将自动展开程序的下级调用查看面板,我们选择一个程序,可以在下方看到相应的调用关系.

比如我要查看浏览器都加载了哪些插件,那么可以启动浏览器,然后选择浏览器进程,查看起调用的所有动态链接库.可能大部分都是微软的公司签名,那么我们可以点击公司名称标签排序,这样就可以快速地筛选出非微软的程序了.当然,纯粹公司名是可以任意伪造的,要验证真伪请参考前文.

在进程调用关系上,我们经常可以用于定位某些弹窗软件.

我们经常会发现右下角多出个小窗,小窗内播放着各种诱惑的东西,这种广告多如牛毛,还不知道是谁弹的,那么此功能就派上用场了.

左键点住工具栏上的雷达图标(一般是最后一个),拖到弹出的小窗上再松开,程序自动定位到窗口程序,其程序间的父子关系一目了然,父进程就是罪魁祸首了,该怎么办您自己看着办.

做了个简单的示范录像,有兴趣的可以查看下,更多使用技巧请自己下载使用中体验

查找文件占用

其实是查看程序调用功能的延伸,本身程序能检查到各个文件之间的相互调用关系,那么就很好理解此功能的来源了.

我们平常可能会经常用到unlock这种工具删除被占用的文件,原理也类似,我们可以利用ProcessExplorer查找占用,然后将占用的程序结束掉再删文件,就不用装unlock了.

有一种程序一启动就会占用的文件,此时我们可以将进程结束,然后点击菜单>file>run/save等功能任意选一个,打开Windows的对话框,在此找到要删除的文件,右键能看到explorer下一样的菜单,将文件删除即可.

ProcessMonitor

前面说过了,SYSINTERNALS SOFTWARE收归微软后,除了ProcessExplorer和tcpview,文件和注册表监控工具都已不支持vista以上版本系统,取而代之的是集文件,进程,注册表,网络监控功能为一体的ProcessMonitor.

ProcessMonitor集成了:

  • filemon和diskmon的文件读写监控功能
  • regmon的注册表读写监控功能
  • tcpview的网络连接监控功能
  • ProcessExplorer的进程监控功能


process monitor的界面延续了其集成软件的风格,菜单按钮基本一致,在最右侧提供了功能过滤区,当不需要某个监控功能时将其置于非按下状态,则不会在下方信息显示框中显示该功能信息.

展示区默认展示进程名,pid,操作项,路径,操作结果和相信信息显示,通过这些信息组合,我们可以知道一个程序到底做了什么.

这么个工具抓到的信息量是惊人的,每秒钟估计可以抓到系统中事件成百上千个,如果直接一个个去看,那么将是个难以想象的工程量.

对此,我们需要对抓到的信息进行过滤,最终只显示我们需要的信息.

点击菜单栏上的漏斗图标进入过滤设置菜单.在此我们可以设置过滤条件,点击上端下拉三角,选择我们要过滤的类别,包括公司名称,PID,进程名,路径等,后面继续选择表达式,规则包括等于,不等于,小于,大于等…在此不一一枚举

示例

以一实例示范.

需求:需要监控前面说的进程浏览器的行为.

分析:进程名称随文件名固定,默认为ProcessExplorer.exe

那么我们可以设定规律规则process name is ProcessExplorer.exe include就是上面选择规则添加后的结果,如果是排除不显示则选择exclude,添加完后为红叉显示.规则设定好后点击确定即开始了新规则过滤显示了,信息显示框只展示进程名为ProcessExplorer的监控信息.

可能我们只需要某个时刻的信息就行,那么你可以点击菜单栏上的搜索模样的图标停止捕捉.

也许过滤后我们看到的信息仍然很多,我们可以对已经过滤的信息再次进行过滤.

程序集成的四大功能我们可以首先进行过滤掉,如我只需要文件监控信息,那么将其他三个功能块都取消,则会只展示文件监控事件.

针对文件监控结果,你可以再次进入过滤规则设置那添加条件,也可以在选择的事件上右键设置过滤规则.如不需要关闭操作的事件,那么在关闭操作上右键>排除关闭文件,那么对应的关闭操作都将不展示.

一系列过则过滤后,最终呈现的将是我们需要的信息,从这些信息中我们可以得知该程序做了什么操作,结果如何等.

右键设置规则对初学者来说十分有用,在哪右键就可以针对哪设置包含,排除,高亮等规则,具体可以自己进行尝试.

这里需要说明下,其实ProcessMonitor是将所有的时间都捕获,所以设置各种过滤规则只是显示的问题.由于捕获了大量的事件,时间久了可能出现机器卡的情况,请适时将时间做清除操作.当然,我们也可以将时间保存成文本,便于后续分析或者转交他人查看.