如果你现在或者将来的主要工作平台为Windows,但还没有接触过Process Explorer,那你应该反思一下了。

官网:

https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer

  • 顾名思义,Process Explorer 就是一个功能强大的进程资源管理器。Windows 自带的任务管理器功能太过简陋,对于一个专业的开发人员来说,一个强大的进程资源管理器十分必要。

功能介绍

    1. 更详尽的进程列表


其中以缩进方式显示进程父子关系,不同的进程颜色显示不同的进程属性,且其颜色可自定义,菜单->Options->Configure Colors

列条目是可选的,可以定制自己所需显示的信息,我常用的就是两项,Image Type 和 User Name

    1. 详细的进程信息(以可怜的calc.exe 为例)

双击或者选中calc 进程后双击(或者通过类似spy++的小靶子选中可视的窗口)出现如下窗口:


窗口最上方显示了可以选择的进程信息。当前选择为Threads,途中显示了线程的ID,起始地址,以及其起始时间、优先级、占用了系统及用户空间的时间、状态等信息,下方按钮提供了可对线程进行的操作:主要就是暂停/恢复,kill,查看线程权限等操作。
Module 按钮显示的是线程当前执行所在的模块的信息。

查看线程栈
点击Stack,效果同双击线程,将会显示线程的调用栈,其实现方式是dbghelp.dll模块及其相关的函数,如果想了解相关内容可以查看我之前介绍栈回溯的文章,或自行百度。
这里比较特别的一点是:当我们UAC 运行Process Explorer,此时选择查看线程调用堆栈时将可以显示内核模块的信息。

  • TCP/IP—-显示进程的TCP/IP 活动
  • Security—进程安全相关
  • Environment—进程环境变量,顺便提一句,此工具以及Sysinternals 的所有的工具的列表显示有的是可以排序的,另外,在主窗口对应的选项卡点击以排序后,会丢失父子关系信息,如果想恢复显示,可以按下Ctrl+T,或者选择菜单:View->Show Process Tree。Process Hacker 比这个工具好的地方就在于,其提供了进程搜索功能,可以搜索进程名,进程ID等,另外其显示列表可排序的程度更大,对于显示不太全的信息,双击后可以显示,总体来说功能更加强大,更好用。后面将会介绍。
  • Strings

字符搜索功能,包括镜像文件中的字符搜索以及内存中的字符搜索。可以说很贴心了。

  • Image
    进程完整路径,签名,版本号,生成时间,命令行,当前路径,父进程,用户,起始时间, 镜像类型,DEP 状态,ASLR 状态等等。

  • performance 和 performace Graph 是其执行性能方面的信息

  • Disk 和 Network 显示网络I/O 和 磁盘I/O 的量。
  • 对于Job 中的进程可以显示Job 信息。

进程详细信息中的信息大概就是上面这些了。但是我们发现它的信息是不全的,其中我们进程需要了解的模块信息,句柄,等信息是没有的。后来经过查看菜单选项,发现其模块信息和句柄信息是可选择的显示在主窗口上的。可能作者考虑这两项是经常需要使用的功能,就放在了这里。相反,Process Hacker 的作者将它放到了进程的详细信息中,哪个位置比较好就看个人的洗好了,用起来其实差别不大。
选择显示模块和句柄的方法:
快捷键:Ctrl+D 显示DLL,Ctrl+H显示句柄。Ctrl+L 选择显示或者不显示下层的信息。
菜单按钮:
点击图中6号可以切换显示DLL 和 句柄。
菜单:View->Show lower Pane设置。

如果想选择显示未命名的句柄、内存映射:
View->Show Unnamed Handles And Mappings

文件及句柄查找:强大且使用的功能,查找文件占用、模块占用很有效果。Ctrl+F 即可召唤。

其他福利功能:自行探索吧。

实例解决问题。

  • 问题描述,在开发一个防火墙功能时,为了测试“对指定路径的应用程序添加规则”的功能时,选择了internet Explorer(IE).exe。之后添加规则,但是发现其仍然可以上网。然后查看log发现文件路径以及函数调用都是成功的,之后想,是不是自己的路径传入错了,然后想起自己平时使用chorme 时,进程列表中常常有很多的chorme 进程,IE 会不会也是这样的。此时打开Process Explorer,发现如下信息:

目标系统为X64,为什么运行IE 会同时有X64、X86两种进程存在,之后查看进程详细类型发现IE分别运行了X64和X86两个版本,我们传入给下层的进程的路径是X64版本IE 的路径。当我们在IE 中打开多个标签页时,会新增一些X86 版本的IE,后来我猜想,IE 是不是通过X86版本的进程进行的网络操作,X64版本进行的行为控制等等信息?后来通过选取X86版本的IE 的路径设置防火墙,IE 确实无法进行网络连接了。
之后更进一步,查看IE的更多细节如下:

在我们使用Process Explorer 的靶子分别选择IE的1,2号区域时,Process Explorer 分别指向了X64 IE和 X86 IE。
再看下面的实验:分别选择不同的选项卡:

由此可猜测IE 的选项卡的机制,具体的内容不清楚,留给有兴趣的同学吧。

  • 顺便说一句,如果没有对于这个工具的很好的利用,没有自己的猜想和实验,估计问题的解决时间是不确定的。由此可见经验和工具对于工作效率的重要性。

题外话:可以通过Process Explorer 查看一下Process Explorer 自己的实现机制。它对应平台的镜像是怎么安排的?都是X86?都是X64?当以UAC 权限运行时是否有驱动?如果有,驱动的路径在哪里?

Sysinternals---Process Explorer相关推荐

  1. Process Explorer 进程树丢失问题的解决

    不知什么原因,导致Process Explorer 的进程树丢失了. View菜单下的 show process tree(Ctrl+T)选项变为灰色,按Ctrl+T也无效. 估计是安装的其它软件的快 ...

  2. 使用Process Explorer查看托管进程的性能记数器

    使用Process Explorer查看托管进程的性能记数器 .net中性能记数器,能让我们监视.net应用程序运行状况,以便我们进一步对程序进行调整. Process Explorer 一个进程管理 ...

  3. Process Explorer 15.2:微软增强型任务管理器

    Process Explorer 是一款免费的增强型任务管理器,同时也是微软著名工具包Sysinternals下的组件之一. Process Explorer 能让使用者了解看不到的在后台执行的处理程 ...

  4. [原]排错实战——使用process explorer替换任务管理器

    前言 一般,我们会使用任务管理器查看系统中有哪些进程在运行,强制杀掉某个进程.可是系统自带的任务管理器功能有限,process explorer是一个功能更强大的工具.它可以让我们查看更多更详细的信息 ...

  5. Process Explorer工具介绍

    Process Explorer是由Sysinternals开发的一个高级的Windows系统和应用程序监视工具,目前已并入微软旗下.此版本的Process Explorer 不仅结合了Filemon ...

  6. windows进程管理器_探究 Process Explorer 进程树选项灰色问题

    本文为看雪论坛优秀文章 看雪论坛作者ID:jishuzhain 前言 Process Explorer是由SysInternals创建的用于Microsoft Windows的免费任务管理器和系统监视 ...

  7. 电脑技巧:进程管理工具Process Explorer介绍

    目录 1.介绍 2.常用功能介绍 2.1 替代微软自带的任务管理器 2.2 查看当前系统中运行的进程 2.3 查看进程的详细信息 2.4 检索进程 2.5 监控操作系统的性能指标 2.6 获取Dump ...

  8. 超强任务管理器Process Explorer的使用

    文章目录 一.关于Process Explorer 二.下载地址 三.如何使用 1.Process Explorer主界面 2.显示进程的系统信息 3.显示当前进程所加载的DLL 4.显示当前进程所占 ...

  9. Process Explorer使用图文教程

    这是一款由Sysinternals开发的Windows系统和应用程序监视工具,目前Sysinternals已经被微软收购,此款不仅结合了文件监视和注册表监视两个工具的功能,还增加了多项重要的增强功能, ...

  10. 【开发工具集】Process Explorer——进程资源管理器

    进程资源管理器 特性 Process Explorer 是 Sysinternals 出品的工具,其在功能方面的独特之处有以下几点: 显示进程安全令牌(比如安全组列表.特权,以及虚拟化状态). 加亮显 ...

最新文章

  1. 死锁的必要条件及避免
  2. 九爷带你了解 nginx 日志配置指令详解
  3. 如何确认mongodb数据插入是否成功_go连接mongodb
  4. 内存屏障在硬件层面的实现原理
  5. jquery动态加载问题
  6. PHP的var_dump(‘1‘==‘1e0‘)的结果为true
  7. 对勾函数_对勾函数?2020福建省中考压轴题分析
  8. Ubuntu 16.04安装教程及虚拟机设置
  9. HDU 1253 胜利大逃亡 题解
  10. 中文域名销售平台_中国开关网.商城被搭建为南京某公司官网,这样的域名你喜欢吗?...
  11. svn java注释_svn 强制用户添加注释 和 允许用户修改注释
  12. STM32CubeMX中文用户手册下载方法
  13. 咖啡种类、做法和历史来源
  14. 2013年8个存储热点话题总结及高端存储发展趋势
  15. 前端实例1——blog页面(css样式)
  16. Codeforces 1324D Pair of Topics
  17. 篆刻小站之设计与开发
  18. 浅析Windows通信编程
  19. PHP每循环5次换行,怎么用换行来做循环
  20. 【Delphi】Android 桌面图标添加快捷菜单功能

热门文章

  1. Linux下更新curl版本
  2. 0基础手把手教你弄寝室指纹识别开门装置(arduino uno,as608)
  3. 黑客专访:天才黑客Gabriel Bergel的黑客人生
  4. Java中八大基本数据类型详解
  5. Micro SD卡(TF卡)封装和原理图总结
  6. 计算机cpu的发展历程,CPU发展历程
  7. 【论文笔记+代码解读】《ATTENTION, LEARN TO SOLVE ROUTING PROBLEMS!》
  8. 使用PhantomJS将html转换为PDF
  9. 2006年11月30日,IT大事,新闻!
  10. 实现ls -l 与进程