软件保护在哪里存储其数据?

时间:2009-02-19 13:35:19

标签: licensing copy-protection

我正在为我的公司探索软件保护方案。果然,有很多替代品,几乎所有的替代品都有限制的设施:

  1. 使用次数(执行次数)
  2. 天数
  3. 现在,如果我考虑一下,那么计算机中必须存在某些位置,其中存储了“使用应用程序的次数”或“用于它的天数”。在这里,我假设使用这些机制之一保护的应用程序不要求它使用管理权限运行。我知道具有普通用户权限的应用程序无法修改影响其他用户的位置。这意味着如果用户A的应用程序过期,它仍将针对用户B运行(这看起来很愚蠢)。我想知道这些方案可以隐藏其信息以使其有效吗?

6 个答案:

答案 0 :(得分:3)

他们只是将其隐藏在难以找到的地方,例如应用程序的数据文件或注册表中的某个位置。因此,对于定时限制(运行到4月4日),您可以使用文件的日期或在注册表中的某处写入安装日期(不是通常的地方;他们将它写在驱动程序部分中的一个奇数键下面,你有很多随机的64个字符键)。然后可以额外保护这些密钥(删除任何人的写访问权限)。

但是,“次数”限制需要写入密钥,因此“受限访问”方案不起作用(或者不利于保护)。这些地方没有保护,但没有人知道信息的存储位置。一个好地方就在一个巨大的数据文件中间:这使得破解者很难找到,即使他们发现计数器必须在该文件中的某个位置。

也就是说,大多数好软件都是因为它很好而不是因为它受到保护而销售。

答案 1 :(得分:2)

我认为可靠地做这种事情的唯一方法是某种客户端 - 服务器方案。例如。贵公司有许可证服务器,客户端的软件每次运行时都会查询服务器。当然,这需要一个有效的互联网连接,并不总是可用......

当然你可以向注册表写一些内容,但没有什么能阻止用户修改它。

答案 2 :(得分:1)

“我知道具有普通用户权限的应用程序无法修改影响其他用户的地方” - 这句话是您误解的地方。

应用程序可以将这种信息存储在文件中,注册表中(在Windows下),甚至可能存储在自己的代码或数据文件中。

例如,用户可以保存文本文件,以便其他用户可以或可以阅读它。权限可以只对一个用户保密,但代码通常可以自由地使任何用户在几乎任何操作系统上都可以读取文件。

答案 3 :(得分:1)

我知道一些保护机制需要至少运行一次管理权限(例如在安装期间)。我假设他们在非特定于用户的位置(例如,在HKEY_LOCAL_MACHINE或ProgramFiles或甚至WinDir下)设置了一个位置,并且还为(经过身份验证的)用户设置了对该位置的写入权限。

答案 4 :(得分:0)

  

我想知道这些方案可以在哪些地方   可能隐藏他们的信息   让它工作?

至少在Windows下,注册表将是所有用户都可以访问的通用数据存储。

答案 5 :(得分:0)

软件保护将计时信息存储到注册表或文件中。您可以使用注册表和文件监视器等程序,以便快速了解从注册表或文件中读取此数据的尝试。 另一种方法是通过逆向工程。通过使用调试器,您可以在用于此范围的众所周知的win AP上放置断点,例如RegOpenKeyEx / RegQueryValueEx用于从注册表读取数据和CreateFile / ReadFile / GetFileSize等,以便从文件中读取信息。 您应该考虑在MSDN上阅读这些API的文档。