工具描述

Process Explorer使用个轻量级的进程管理器,是由Sysinternals出品的免费工具,请猛击这里下载最新版本使用。

以下是官方介绍的翻译: “想知道是那个程序打开了某个文件或者目录么?现在可以找出它了。PorcessExplorer将会显示出进程打开或者加载了哪些的句柄(handles)或者动态链接库(Dlls)。 ProcessExplorer的显示区包含由两个子窗口组成。上部的窗口显示了当前系统的活动进程、以及这些进程的是属于哪个用户的。同时,上部的窗口依据ProcessExplorer的显示“模式”决定着底部窗口显示的内容:如果选择的是句柄模式,那么你将会在底部的窗口中显示的是上部窗口中选中进程所打开的句柄;如果选择的是Dll模式,那么你将看到进程所加载的动态链接库文件dlls以及内存映射文件。ProcessExplorer还具有强大是搜索功能,帮助你找出特定的某个句柄或者dll正在被哪个进程所加载。 ProcessExplorer的功能使得它在跟踪Dll版本问题或者句柄泄露方面起到很好的作用,并且向用户展示了Windows系统以及应用程序内部是如何工作的”。

典型应用场景

使用PE查看文件句柄和Dll加载情况

PE中可以在下方窗口显示指定进程的打开的句柄加载的DLL等,方法:View-->Lower Pane View-->DLls/Handls,也可以使用查找的方式来定位(Ctrl+F)

  • 场景:删除USB设备的时候提示“无法停止”,如同:

  • 可能的原因:USB磁盘中的文件句柄被某个进程占用时,有可能会导致这个问题

1         解决方法:启动PE,按住Ctrl+F打开查找dll(handle)的对话框,输入USB设备的分区名称比如L:\,然后点查找

1         这个时候会显示出L:\分区上被打开的句柄,这个时候点击某个句柄,PE会打开上下窗口,并且指出是哪个进程占用了哪个句柄。

1         右键点击下方handle视图中的这个句柄,选择Close Handle

1         再次尝试停止USB设备,应该就ok了

检查进程和线程(堆栈)的详细信息

  • 场景:有段时间发现MSN在登录后CPU长时间占用达到50%以上

1  问题定位:打开PE双击MSN的进程打开对话框显示进程详细信息,找到Thread线程tab页,发现一个线程占用了大量CPU,且线程切换次数最高。如下面左图:

1  点击Stack,看看这个线程在做什么,如右图:

2   发现Flash.OCX模块在工作最为可疑。所以怀疑系统的flash控件有问题,推断原因。MSN主程序下方的Flash显示有可能造成了这个问题。后来用Shell禁用Flash广告后没有再出现CPU占用过高的情况。

上述右图中如果需要通过配置Symbols来显示系统模块使用的函数名称,而Flash属于第三方模块所以显示不到函数。配置方法如下:在Options菜单选择Configure Symbols。对话框中第一个选择windbg安装目录下的dbghelp.dll,第二个选择本地的symbols符号路径,这里我选择从微软的公共符号服务器下载符号到本地的固定文件夹

观察进程细节的Tips

  • 进程可以显示成为树状结构,可以清晰的看到哪个进程的父进程是谁,子进程是谁;

可以显示进程更为详细的信息,比如vista下的“强制完整性级别”、是否虚拟化。虚拟内存、工作集等信息。通过菜单View->Select Columns可以定制自己想要显示的关于进程相关的各种信息

  • 有些子进程或父进程退出速度很快,无法查看关系,可以设置Difference Highlight Duration的时间为最长的9秒,这样进程退出后也还会继续显示9秒的;

  • 进程的颜色代表了不同的含义:如图

  • Own Process用淡紫色表示,代表和以当前登录用户身份启动的进程
  • Services用粉色表示,代表系统服务类的进程
  • .Net的进程用黄色表示,比如我的移动飞信的进程是.net进程
  • Packed Images指的是捆绑的进程,很多病毒流氓软件为了避便被杀毒软件进行特征检查对自己的进程文件进行Pack.当然,也有很多正常的进行也是Packed类型的,比如我的TC和Foxmail。
    • 红色、绿色分别表示新创建的和销毁的对象(注意:对象可以是加载的dll打开的句柄也可以是进程对象 本身)当观察进程启动的顺序或者加载模块的先后讯息等细节的时候注意观察红色和绿色
    • 一个进程一闪而过的创建起来,我还没有来得及看。怎么办?可以配置上述高亮颜色的“滞留时间”:使用Options--Different Highlight Duration 将这个时长设置为更长的时间就可以了。
  • 最后要说的是Jobs作业对象用咖啡色表示,举例说明,如Google浏览器,下面具体分析一下其中部分的安全特性:

场景1:Google浏览器安全特性分析

2         步骤使用PE查看进程特性在vista下tab的进程运行在低MIC级别,见Integrity列为Low:这类似于在vista系统下IE7的“IE保护模式”,因为默认情况下高MIC级别的进程不响应低MIC级别进程的窗口消息,从而避免一些核心进程在浏览器遭到劫持后,被攻击,如窗口粉碎工具。同时低MIC级别的进程在vista下不能修改一些vista系统关键对象,如敏感注册表和文件位置。chrome充分利用vista系统的安全性。

3         不过chrome的主进程和插件进程是运行在Medium级别的,chrome将插件做为独立的进程来维持,有助于提高浏览器稳定性,插件或者tab挂掉不会导致整个浏览器崩溃。(这是题外话,下面是Chrome自己的进程管理器显示的信息)

4  打开进程管理器你会发现,chrome的每个tab进程实际上是个作业job(简单来讲就是一个可以容纳多个进程的容器),从开发角度来说,对于job可以进行一个更有效的权限限制程序“边界”的限定。每个tab的作业只容纳了一个进程。用PE打开该job查看详细信息。我们打开一个tab进程,查看权限标签页:发现进程没有特权,而权限列表中很多被设置为Deny。这说明当被访问资源(注册表,文件)的ACL中如果明确要求具有管理员或者高权限才可以操作的情况下,tab进程是不能修改这些资源的。

如何做到的呢?我们前面说了,这是通过作业来实现的,windowsAPI在创建作业进程的时候可以使用参数将job这个单位的一些特定权限进行限制(可配置的),同样,我们打开一个tab进程,切换到job标签页(普通进程是没有的),查看下面limited的列表,发现该job的很多行为被限制了,包括:仅运行一个活跃进程工作;不允许进程创建Desktop对象;不允许修改显示设置;不允许进程使得windows退出、关机等;用户对象读取限制;对于剪贴板的读写操作的限制,管理员权限操作限制等,从而实现这个沙盒

场景2:恶意软件侦查和逆向工程

使用进程属性中是String标签页信息:

  • 进程属性的String标签也通常能够显示这个进程在运行的时候可能会使用到的一些字符串,比如网址、路径名、注册表信息等等蛛丝马迹。如果是病毒或者恶意软件通过包含着一个远程的地址用来下载病毒或者将窃取的信息上传。这里通常还会包含其他信息,对于不同的场合来说,总有一些是有用的。通常有些杀毒软件也会从这里提取病毒特征码的。

ProcessExplorer使用分享的更多相关文章

  1. 2018-2019-2 20165330《网络对抗技术》Exp4 恶意代码分析

    目录 基础问题 相关知识 实验目的 实验内容 实验步骤 实验过程中遇到的问题 实验总结与体会 实验目的 监控你自己系统的运行状态,看有没有可疑的程序在运行 分析一个恶意软件,就分析Exp2或Exp3中 ...

  2. VC一些经验系列: 《分享泄漏检测工具:内存、DC、GDI、Handle... 》

    分享下自己工作中用到的一些用于泄漏检测的工具 后面的是DC的一些定义和注意事项.(不喜勿看) //=================================================== ...

  3. .net点选验证码实现思路分享

    哈哈好久没冒泡了,最进看见点选验证码有点意思,所以想自己写一个. 先上效果图 如果你被这个效果吸引了就请继续看下去. 贴代码前先说点思路: 1.要有一个汉字库,并按字形分类.(我在数据库里是安部首分类 ...

  4. Hangfire项目实践分享

    Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget jobs) 延迟任务执行(De ...

  5. 【分享】标准springMVC+mybatis项目maven搭建最精简教程

    文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...

  6. 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付

    前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...

  7. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  8. 干货分享:SQLSERVER使用裸设备

    干货分享:SQLSERVER使用裸设备 这篇文章也适合ORACLE DBA和MYSQL DBA 阅读 裸设备适用于Linux和Windows 在ORACLE和MYSQL里也是支持裸设备的!! 介绍 大 ...

  9. Java8实战分享

    虽然很多人已经使用了JDK8,看到不少代码,貌似大家对于Java语言or SDK的使用看起来还是停留在7甚至6. Java8在流式 or 链式处理,并发 or 并行方面增强了很多,函数式的风格使代码可 ...

随机推荐

  1. iOS - 提示用户升级版本并跳转到AppStore

    一.问题:自己做提示用户升级? 由于苹果做了自动升级,所有只要在应用程序中出现从AppStore检查版本更新,或者出现任何有关升级的提醒都会被拒,但是如果必须添加升级提示的话,可以配合后台通过添加AP ...

  2. 从unity丢图标到unity进不去桌面

    现象1: 用了一年多的unity的右上角的网络图标和网易云音乐的图标消失不见了,我也不记得最近有update或upgrade过,然而这两个功能还是可以正常用 解决1: 安装Gnome,果然相应的图标就 ...

  3. Linux i2c子系统(二) _通过i2c-dev.c访问设备的方法

    另外一种驱动 应用层除了使用上述的使用i2c_driver接口来访问i2c设备,Linux内核还提供了一种简单粗暴的方式--直接通过虚拟i2c设备驱动的方式,即上一篇中的i2c-dev提供的方式,这种 ...

  4. Golang, 以 9 个简短代码片段,弄懂 defer 的使用特点

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  5. Spring的事务管理基础知识

    1.数据库事务基础知识     1)数据库事务有严格的定义,它必须同时满足4个特性:原子性(Atomic).一致性(Consistency).隔离性(Isolation)和持久性(Durability ...

  6. 11.8Django中的组件content_type

    2018-11-8 18:59:11 在Django中已经有一个contenttype这个组件,并且在python manage.py makemigrations 和migrate的时候,一起在数据 ...

  7. js监听手机端点击物理返回键或js监听pc端点击浏览器返回键

    之前在项目中遇到一个问题,就是在微信网页上面本来是有返回按钮的,但是大多数人都为了方便,会使用安卓手机自带的物理返回键,这个返回键按下后,就会按照你浏览器的栈存储的路径来一层一层返回,就不执行你页面上 ...

  8. Linux命令vi/vim 使用方法讲解

    vi/vim 基本使用方法 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的 ...

  9. python全栈开发 * 11知识点汇总 * 1806011

    一.函数名的运⽤, 第⼀类对象 函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量 1. 函数名的内存地址def func(fn): print(fn)print(func) # ...

  10. Q: Is Consul eventually or strongly consistent?

    强一致  最终一致 Frequently Asked Questions - Consul by HashiCorp https://www.consul.io/docs/faq.html Q: Is ...