保护单个程序中的数据

时间:2011-03-08 11:50:57

标签: c++ windows copy-protection

在Windows中,是否可以保护单个程序中的数据?我一直在研究CryptProtectData,但是基于用户,我想要一些类似的东西但是在程序的基础上。我的程序将有多个用户需要访问相同的数据,但数据是可传递的,我不希望任何用户阅读它。

3 个答案:

答案 0 :(得分:0)

CryptProtectData(间接)使用用户凭据加密数据。

在Windows(以及大多数其他通用计算机平台)上,无法基于每个应用程序加密数据,因为计算机属于用户,而用户是主服务器,而不是应用程序。

如果您不希望用户(以及在用户帐户下运行的其他应用程序)可以访问数据,则需要将此数据移出计算机,将其存储在远程系统上并控制用户对此的访问权限数据。

答案 1 :(得分:0)

首先,如果您的用户具有管理员权限,则没有明确的方法可以阻止他们。

其次,即使他们没有,你也必须在ring 0实施部分软件,因此它拥有比用户更高的权限,这将使他们更难获得访问权限进程的内存或可执行文件。然后,您可以加密数据并在向用户提供数据时对其进行解密。

如果无法满足上述所有条件,您可以采用与软件开发人员用于破解相同的混淆技术。

这通常归结为阻止调试或阻止修补。这里有一些建议:http://www.woodmann.com/crackz/Tutorials/Protect.htm

答案 2 :(得分:0)

如果您的用户没有管理员权限,那么我要做的就是让您的程序为自己的目的创建一个帐户。当您的程序创建其数据文件时,它将在这些文件上设置ACL,以便它创建的帐户是唯一可以访问这些文件的帐户。每当您的程序需要读/写这些文件时,它需要使用其特殊帐户临时登录。问题是保持该帐户的登录凭据机密。这完全是另一个问题。