gpt4 book ai didi

windows - 如何在windows上唯一标识一个进程?

转载 作者:可可西里 更新时间:2023-11-01 14:45:26 27 4
gpt4 key购买 nike

让我们以记事本为例。我如何才能在我的应用程序中 100% 确定记事本是否正在运行?我 100% 的意思是,如果有另一个名为“notepad.exe”的进程实际上不是一个真正的记事本,而是一个仿制品,我不想检测到它。只有真正的记事本。

我已经考虑过读取进程内存,但它比看起来更难,因为内存位移等。

标准方法是按名称,对吗?但对我来说,它真的很重要,它不是任何其他程序,因为我想与之交互,如果我发现错误的进程,将会严重失败。

有谁知道这样做的好方法吗?

PS:没有特定的编程语言可以做到这一点。如果可能的话,我更喜欢一个独立的解决方案。但如果需要,我会专门使用 .Net/C#。

最佳答案

要 99.9%1 确定您正在查看正确的可执行文件的唯一方法是验证文件的 digital signature .例如,您要确保所讨论的 notepad.exe 是由“Microsoft Corporation”签名的。

我会做这样的事情:

  1. 获取正在运行的进程列表。
  2. 过滤到感兴趣的名称 (notepad.exe)
  3. 获取每个进程的镜像 [可执行文件] 路径。
  4. 验证 Authenticode 签名有效且可信。
  5. 将签名者的姓名与期望值进行比较。
  6. 成功!您可以非常确定这是正确的文件。

此方法避免了诸如必须提前知道文件应该位于何处(这几乎是不可能的——记事本是 installed in two locations )、它的哈希值应该是什么(显然必然会更改)或奇怪的用户行为等问题(用其他文本编辑器替换记事本)。

1 - 当然,不可能 100% 确定。某人真的确定可以使用预期的签名者名称对可执行文件进行自签名,并将证书添加到他们机器的根存储中,从而使签名看起来有效。

关于windows - 如何在windows上唯一标识一个进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10984908/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com