首页 > 解决方案 > 某些进程的注册表限制

问题描述

是否可以阻止某些进程打开/读取特定的注册表项?一个用例是使逆向工程应用程序变得更加困难。

标签: c++winapiregistrykernel-module

解决方案


是和不是。

注册表使用正常的 Windows 访问控制模型,因此您可以为注册表项设置安全描述符。

https://docs.microsoft.com/en-us/windows/desktop/sysinfo/registry-key-security-and-access-rights

但是,正常的 Windows 安全模型将安全性与用户帐户相关联,而不是与进程相关联。在一个用户的安全凭证下运行的任何进程都将具有与同一帐户上的任何其他进程相同的注册表访问权限。

根据您要完成的工作,这可能就足够了。当您确实需要基于进程而不是基于用户的身份验证时,您通常会得到类似 Windows 服务的东西,该服务只能由某些特殊的“用户”帐户访问。然后,该服务提供自己的身份验证机制来验证它是否被正确的进程访问。这通常仍然相当脆弱 - 它通常以某种嵌入“正确”过程的密钥结束,因此逆向工程可以找到密钥并使用相同的密钥创建另一个过程。


推荐阅读