【发布时间】:2014-06-20 08:21:07
【问题描述】:
在 Windows 中,唯一标识进程的正式方法是什么?我不是在谈论动态分配的 PID,而是一个唯一 ID 或对该进程永久的名称。我知道每个程序/进程都有一个安全描述符,但它似乎保存了登录用户和组(而不是进程)的 SID。我们不能使用进程开始的可执行文件的路径和名称,因为这可能会改变。
我的目标是在内核模式下识别一个进程并允许它执行某些操作。最简单、最好的方法是什么?
【问题讨论】:
-
我不认为有你所说的那样的唯一标识符,尽管我相信只要进程对象存在(即使进程已经退出)进程 ID 将保持唯一。允许特定进程执行特定操作的最佳方式取决于操作是什么,但我认为最简单的通用解决方案是提供一个或多个 IOCTL;设备驱动程序可以在代表用户模式进程采取适当的操作之前执行它喜欢的任何安全检查。
-
请记住,限制对特定进程而不是特定用户的访问并不能提供太多额外的安全性,因为拥有该进程的用户(或任何管理员)可以很容易地插入外部代码。跨度>
-
感谢您的回答(并对延迟响应表示抱歉):) 我打算做的是唯一标识一个二进制文件。如果二进制文件在存储中移动到不同的路径,我仍然应该能够识别它。某种 ID 直接内置在其中,因此普通用户无法更改它。这有助于识别某些第三方开发人员,甚至是内部二进制文件。
标签: windows process kernel access-control