Windows进程分析工具

文章介绍了Windows平台上的性能分析工具,包括使用性能监视器进行数据采集和对比,解决CPU/内存测试结果不一致的问题。对于工程诊断,推荐了VisualStudio的诊断工具来查看函数调用栈。此外,文章还提到了ProcessHacker用于行为分析,如线程、API调用、DLL依赖和网络请求等。
摘要由CSDN通过智能技术生成

一、前言

1 背景

客户端优化分析,需要采集数据,对比竞品;用什么工具(方法)采集数据,如何绘图对照呢?你给出的CPU/内存测试结果,和其它测试电脑上表现不一致啊,怎么办?又要手动记录任务管理器进程信息,写入excel生成曲线图吗?

然后,发现了客户端确实存在着问题,比如内存上涨过多、CPU占用高于竞品;如何进行工程诊断,最好具体到函数调用栈呢?

然后,如何深入竞品的行为分析呢?

2 策略

针对应用优化不同阶段,策略如下:
在这里插入图片描述

本文基于应用优化的背景,逐点介绍下各个策略对应的工具(方法)及其使用。

二、数据采集

“性能监视器”,基本可以满足windows上应用各项数据的采集、绘制、对比。

1 工具启用

如小标题所示,就是我要介绍的这个工具,打开它:

Win + R 输入命令“perfmon”
在这里插入图片描述

或者

搜索框搜“性能监视器”。
在这里插入图片描述

看下性能监视器概述吧,接下来具体讲下操作。

2 实时监测

监视工具——性能监视器,默认可以看到系统总的CPU占用百分比(%Processor Time)。
在这里插入图片描述

工具栏中可以修改 性能监视器 属性、图形类型(线条、直方图条、报告)、添加/删除监视对象(指定某进程或系统)。
在这里插入图片描述

其中,属性可以修改图中数据的来源(实时数据改为用户保存数据)、数据比例(比如内存大小,以BYTE作为单位数值太大,可以按比例减小数值)、曲线颜色/宽度/样式等,还可以增加标题、坐标轴标题、显示垂直/水平格线等。
在这里插入图片描述

关于添加监视对象,既可以是本地计算机(或所属进程),也可以是拓扑内能访问到的计算机,比如选择监视类型为CPU占比,指定如下:
在这里插入图片描述

点击 添加,然后 确定 即可。
通过上述“性能监视器”,在下方监视对象列表选中一个对象,可以右键导出当前截图,但不能保存当前计数器(指定监视对象、数据类型)数据。通过左侧列表第2个选项“数据收集器集”,能够保存自定义的监视对象数据。

3 数据收集

首先,需要右键“数据收集器集”——“用户定义”,点击“新建”——数据收集器集,可以选择“手动创建”,
在这里插入图片描述

然后,可以选择“创建数
据日志”,勾选“性能计数器”,添加指定名称类型的监视对象。
示例间隔建议改成1秒,默认15秒跟你在资源管理器或者一般想要绘制的曲线图直观感受上不一致。

在这里插入图片描述

上面一顿操作后,你就创建好了你的数据收集器集,可以右键“开始”或“停止”,
在这里插入图片描述

每次“停止”,都会在左侧第3条下属目录中生成1条新的报告:
在这里插入图片描述

与“性能监视器”不同,在“数据收集器集”报告中,你还能额外以“区域”、“堆积面积图”形式查看你的数据,“特别适合”(个人体验)展示内存上涨,如下:

在这里插入图片描述

你甚至能从本地或他人计算机,拷贝(剪切)数据,
在这里插入图片描述

从此,可以在不同电脑间直接拷贝测试数据,你可以进行下面讲的“数据对比”。

4 数据对比

有多个应用的CPU占用数据需要分析,最好是绘制到同1张图上,这样可以清晰的看到应用之间的差异。比如下面这样:
在这里插入图片描述

不同应用、计数器,可以设置不同的颜色加以区分。
但是要想将不同应用的数据呈现到同一张图进行对比,似乎不是显而易见的事。观察到性能监视器图形中横坐标会发现,要想将两个应用的CPU占用率摆在一起形成对比,得保证时间段一致。难道要同时操作两个应用?
或许对于那种操作稳定的功能(启动、退出、拉流等),可以同时操作;但如果要监测稍微复杂的操作,比如列表的手动下拉、窗口数量的切换,同时操作就不太科星。
在实际使用中,通过修改Windows系统时间,分别对不同应用进行操作,这样收集到的监测数据的时间段就是一致的。

三、工程诊断

Visual Studio的诊断工具非常强大,可以清晰的看到具体函数栈CPU占用、内存申请,可以截取快照对比不同时刻的CPU/内存差异。

1 工程升级

如果你的Visual Studio项目停留在2015以前,可能就无法充分利用诊断工具,比如堆栈分析。
关于如何升级到Visual Studio2015以及相关问题,可以在博文下评论交流。

2 内存监测

观察内存曲线
在这里插入图片描述

3 CPU监测

观察CPU曲线
在这里插入图片描述

4 内存快照

截取当前内存状态,可以截取N个快照,随意选取其中两个状态进行对照。
在这里插入图片描述

5 CPU快照

中断程序后,在CPU监测曲线上任意选取某时刻,可以查看该时刻各函数占用CPU时间和百分比。
在这里插入图片描述

6 堆分析

6.1 堆栈视图

查看内存上涨调用栈
在这里插入图片描述

6.2 类型视图

查看内存上涨类型
在这里插入图片描述

我在另1篇博文里详细讲述了Visual Studio诊断工具的使用 。

四、行为分析

Process Hacker是一款针对高级用户的安全分析工具,它可以帮助研究人员检测和解决软件或进程在特定操作系统环境下遇到的问题。除此之外,它还可以检测恶意进程,并告知我们这些恶意进程想要实现的功能。

这里讲的应用行为分析,包括线程情况、系统API调用栈、dll依赖情况、文件读写、网络请求等。Process Hacker作为一个开源项目,对上述需求提供了全面的支持。

1 下载/安装工具

官网链接:
https://processhacker.sourceforge.io/
可以上官网下载安装包

Github地址:https://github.com/PKRoma/ProcessHacker
可以下载源码,提供Visual Studio工程文件,目前已升级至Visual Studio 2022

2 观察各项属性

在“Processes”页面,双击指定应用(比如EzvizStudio.exe),可以看到应用的各项属性,包括handle、线程、系统API调用栈、GPU、磁盘、网络、内存、环境变量、依赖dll等。

2.1 属性界面

在这里插入图片描述

2.2 线程界面

在这里插入图片描述

2.3 依赖dll

在这里插入图片描述

3 网络通信/请求

想观察竞品应用网络请求的起始IP、端口、协议、状态等,可以打开“Network”窗口
在这里插入图片描述

4 文件读写/加载

想观察竞品应用数据库位置、文件读写、动态库加载情况,可以打开“Disk”窗口(需要重启Process Hacker)
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
全面分析系统环境 适用于手工杀毒XueTr(简称XT)是一个强大的系统信息查看软件,也是一个强大的手工杀毒软件,用它可以方便揪出电脑中的病毒木马,目前它支持32位的2000、XP、2003、Vista、2008、Win7系统。 XueTr的主要功能 1.进程、线程、进程模块、进程窗口、进程内存、定时器、热键信息查看,杀进程、杀线程、卸载模块等功能 2.内核驱动模块查看,支持内核驱动模块的内存拷贝 3.SSDT、Shadow SSDT、FSD、Keyboard、TCPIP、Classpnp、Atapi、Acpi、SCSI、Mouse、IDT、GDT信息查看,并能检测和恢复ssdt hook和inline hook 4.CreateProcess、CreateThread、LoadImage、CmpCallback、BugCheckCallback、Shutdown、Lego等Notify Routine信息查看,并支持对这些Notify Routine的删除 5.端口信息查看,目前不支持2000系统 6.查看消息钩子 7.内核模块的iat、eat、inline hook、patches检测和恢复 8.磁盘、卷、键盘、网络层等过滤驱动检测,并支持删除 9.注册表编辑 10.进程iat、eat、inline hook、patches检测和恢复 11.文件系统查看,支持基本的文件操作 12.查看(编辑)IE插件、SPI、启动项、服务、Host文件、映像劫持、文件关联、系统防火墙规则、IME 13.ObjectType Hook检测和恢复 14.DPC定时器检测和删除 15.MBR Rootkit检测和修复 16.内核对象劫持检测 17.其它一些手工杀毒时需要用到的功能,如修复LSP、修复安全模式等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值