博客 | 见解 2018 年 10 月 30 日

欢迎来到公海710 使用进程监视器进行应用程序调查

使用进程监视器进行应用程序调查

什么是进程监视器 (ProcMon)?您为什么要关心?

如果您曾经需要了解某个应用程序正在做什么以及正在做什么,但您自己对所述应用程序没有任何了解,那么 ProcMon 就是适合您的发现工具。

ProcMon(奇怪的是)是一个进程监视器。也就是说,它实际上监视并记录系统上每个进程所采取的每个操作。虽然结果非常详细,但结果往往是压倒性的而不是有帮助的。任何运行过进程监控工具的人都已经看到了它会产生的数以万计的结果,而您甚至不需要尝试引起任何结果。

可以直接从 Microsoft 下载,并定期更新:https://docs.microsoft.com/en-us/sysinternals/downloads/ProcMon

为了使进程监视器有用,过滤器需要发挥杠杆作用。

假设您的应用团队向您提供了一份应用程序,用于集成到 Citrix 或 Horizon 环境中。作为平台的所有者,您需要确保在用户会话中捕获并保留此新应用程序的设置。问题是,奇怪的是,大多数应用程序团队对应用程序的内部工作原理并没有太多“幕后”知识。在应用程序设置保留或个性化的情况下,我们需要知道应用程序在哪里存储所有与用户相关的设置。

有许多方法和工具可用于此任务,但利用 Process Monitor 是迄今为止最完整和彻底的。我们将使用我最喜欢的应用程序 PuTTY(一个简单的 ssh/终端客户端)作为示例。

但是它在哪里存储数据!?快速浏览一下 AppData 和注册表,没有发现任何明显与“PuTTY”相关的内容:

ProcMon 来救援!启动 ProcMon 后,机器立即陷入困境,捕获发生的一切,几乎不考虑人或动物。尽快停止捕获并清除现有结果:

停止捕获并清除现有结果后,打开过滤器对话框:

这里存在许多预先填充的过滤器,主要用于排除 ProcMon 本身的操作。然而,出于我们的目的,我们不需要任何这些现有的过滤器;一一选择,然后单击“删除”,直到没有为止。

现在我们有了一个完全空白的石板,我们可以添加新的过滤器来专门针对我们感兴趣的应用程序 (PuTTY)

通过查看任务管理器,我们可以看到 PuTTY 是一个名为“putty.exe”的单个进程,因此我们将从一个过滤器开始,仅包含该进程中的操作。

使用该过滤器后,如果您运行捕获并运行 PuTTY,我们只会看到该进程中的操作,但您会注意到这些操作的数量仍然在 3,000 左右 - 这还只是应用启动时的情况!

这是因为它包含该进程中的所有操作,包括我们不特别关心的操作,例如 DLL 加载和系统查询。为了了解应用程序在保存会话时执行的操作,我们将添加三个过滤器,如下所示:

前两个事件类过滤器包括 所有文件系统和注册表操作。绝大多数在本地存储设置的应用程序将它们存储在注册表或文件系统中。

最后一个类别过滤器限制了写入操作显示的内容 - 应用程序正在主动进行的更改。这对于清除大多数应用程序在初始化过程中执行的所有系统注册表和文件系统读取的噪音非常有用。

使用我们的最后一组过滤器,点击“应用”和“确定”,重新启动 ProcMon 捕获并启动 putty。

但是等等!这里什么都没有!啊,是的,因为我们只捕获 WRITE,所以我们过滤掉了现有 PuTTY 会话的所有 READS。此时,我们可以关闭写入​​过滤(这会带来大量噪音),或者通过更改程序中的会话来触发写入。让我们做后者;

啊哈!通过添加新连接并单击“保存”,PuTTY 会创建一个写入 将会话数据发送到注册表。具体来说,在 HKEY_Current_UserSoftwareSimonTatham 下...。不管那是谁。

快速查看注册表可以确认 ProcMon 所显示的内容 – PuTTY 的所有存储会话都存储在此注册表项中:

现在,显然 PuTTY 并不是世界上最复杂的应用程序。它表现良好,并将其设置存储在一个简单的位置。然而,这仍然是一个很好的例子,手动检查文件系统和注册表并不总是能找到答案——因为谁会知道查看这位先生的名字呢?

作者

作者头像 贾勒特·巴里尔
分享

更多文章

见解
2026 年 4 月 27 日

当 Glean 需要 Snowflake 时:为什么企业 AI 仍然依赖于分析平台

安迪·奎林头像 安迪·奎林
公司
2026 年 4 月 23 日

Alchemy 技术集团收购 Iovations

皮特·唐宁头像 皮特·唐宁
见解
2026 年 4 月 11 日

Glasswing 项目和多样化代理 AI 策略的案例