2

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

  1. 使用次数(执行)
  2. 天数

现在,如果我想一想,计算机中一定有某个地方存储了“应用程序已使用的次数”或“已使用的天数”。在这里,我假设使用这些机制之一保护的应用程序不需要它以管理权限运行。而且我知道具有正常用户权限的应用程序不能修改影响其他用户的地方。这意味着如果用户 A 的应用程序过期,它仍然会为用户 B 运行(这看起来很愚蠢)。我想知道这些方案可能会将其信息隐藏在什么地方以使其发挥作用?

4

6 回答 6

3

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

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

也就是说,大多数好的软件之所以卖得好是因为它好,而不是因为它受到保护。

于 2009-02-19T14:37:29.110 回答
2

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

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

于 2009-02-19T13:47:55.360 回答
1

“而且我知道具有正常用户权限的应用程序不能修改影响其他用户的地方” - 这句话是您误解的地方。

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

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

于 2009-02-19T13:48:01.303 回答
1

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

于 2009-02-19T13:54:08.170 回答
0

我想知道这些方案可能会将其信息隐藏在什么地方以使其发挥作用?

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

于 2009-02-19T13:41:17.060 回答
0

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

于 2011-01-19T02:43:23.740 回答