1
1
我知道一些保护机制需要至少以管理权限运行一次(例如,在安装期间)。我假设他们在非用户特定的位置(例如,在hkey_local_machine或programfiles,甚至windir下)设置了一个位置,并且还为该位置的(已验证的)用户设置了写权限。 |
2
3
它们只是将它隐藏在一些很难找到的地方,例如在应用程序的数据文件中或者注册表的深处。因此,对于定时限制(运行到4月4日),您可以使用文件的日期或将安装日期写入注册表中的某个位置(而不是通常的位置;它们将其写入驱动程序部分中一个奇数键的下面,其中您有许多随机的64个字符的键)。然后可以额外保护这些密钥(删除任何人的写访问权)。 但是,“次数”限制需要写入密钥,因此“有限访问”方案不起作用(或不起作用)。这些地方没有保护,但没有人知道信息存储在哪里。一个好的地方是在一个巨大的数据文件中间的某个地方:这使得破解者很难找到,即使他们发现计数器一定在那个文件的某个地方。 也就是说,大多数好的软件都是因为它是好的,而不是因为它是受保护的。 |
3
2
我相信可靠地完成这类工作的唯一方法是某种客户机-服务器方案。例如,您的公司有一个许可证服务器,客户机的软件每次运行时都会查询服务器。当然,这需要有效的互联网连接,但并不总是可用的… 当然,您可以将某些内容写入注册表,但是没有任何内容可以阻止用户修改它。 |
4
1
“我理解,具有正常用户权限的应用程序不能修改影响其他用户的位置。” -这句话就是你误解的地方。 应用程序可以将这类信息存储在一个文件、注册表(在Windows下)中,甚至可能存储在自己的代码或数据文件中。 例如,一个用户可以保存一个文本文件,这样另一个用户可以阅读它。权限只能对一个用户保密,但代码通常是免费的,可以让几乎任何操作系统上的任何用户都能读取文件。 |
5
0
至少在Windows下,注册表是所有用户都可以访问的公共数据存储区。 |
6
0
软件保护将时间试用信息存储到注册表或文件中。可以使用注册表和文件监视器等程序,以便快速了解从注册表或文件中读取此数据的尝试。 另一种方法是通过逆向工程。通过使用调试器,您可以在用于此范围的已知win API上放置断点,例如用于从注册表读取数据的regopenkeyex/regqueryvalueex和用于从文件读取信息的createfile/read file/getfilesize等。 您应该考虑在msdn上阅读这些API的文档。 |
Danijel · 如何保护C++动态库不被未经许可使用? 8 年前 |