代码之家  ›  专栏  ›  技术社区  ›  Hemant

软件保护在哪里存储数据?[关闭]

  •  2
  • Hemant  · 技术社区  · 15 年前

    我正在为我的公司探索软件保护方案。可以肯定的是,有这么多的替代方案,几乎所有的方案都提供了限制的便利:

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

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

    6 回复  |  直到 13 年前
        1
  •  1
  •   Oliver Giesen    15 年前

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

        2
  •  3
  •   Aaron Digulla    15 年前

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

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

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

        3
  •  2
  •   Joonas Pulakka    15 年前

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

    当然,您可以将某些内容写入注册表,但是没有任何内容可以阻止用户修改它。

        4
  •  1
  •   Nick Fortescue    15 年前

    “我理解,具有正常用户权限的应用程序不能修改影响其他用户的位置。” -这句话就是你误解的地方。

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

    例如,一个用户可以保存一个文本文件,这样另一个用户可以阅读它。权限只能对一个用户保密,但代码通常是免费的,可以让几乎任何操作系统上的任何用户都能读取文件。

        5
  •  0
  •   Jon Cram    15 年前

    我想知道这些计划能在什么地方 可能把他们的信息隐藏在 让它有效吗?

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

        6
  •  0
  •   Economou Kyriakos    13 年前

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