在Windows注册表中隐藏秘密

时间:2011-08-12 09:55:18

标签: windows windows-7 windows-xp windows-vista registry

我知道注册表不是最好的隐藏内容的地方。

现在我正在编写一个许可软件,需要在注册表中保存试用用法信息,例如首次安装日期

Windows注册表中符合此条件的配置文件:

  1. 用户不小心发现。
  2. 可以在Windows用户之间共享该值。
  3. 没有弄乱Windows和Registry Cleaning Utility不将此值视为垃圾。
  4. 如果可以,它在Windows Vista和Windows 7上没有管理员权限的情况下工作
  5. 编辑:我排除了第4项,因为根据David Heffernan的答案,第2项是不可能的

3 个答案:

答案 0 :(得分:9)

注册表中没有可以在没有管理员权限的情况下写入的共享位置。所以你的条件2和4不能同时满足。你需要用我认为的文件来做这件事。

如果您准备放弃条件4,则需要将其存储在HKLM下以便共享。显而易见的地方是HKLM\Software\YourCompanyName\YourProductName。当然,您会加密数据以避免篡改。完成后,您并不关心用户是否发现它。

答案 1 :(得分:1)

你想要防守什么?听起来你正在付出很多努力“不要让人们改变他们的系统时钟来延长他们的试用期”,但根本没有“不要让人们编辑注册表密钥以延长他们的审判”或“不要不要让人们在机器之间共享注册表键,以便免费将试用版变成完整的密钥。我实际上认为那些更有可能。任何因我在自己的机器上更改时钟而大喊大叫的软件都会匆忙卸载。

我建议你不要自己尝试这样做。您可以使用许可库,这些库已经考虑了人们试图欺骗软件的各种方式。但是,如果你必须,因为你想尝试它,那么花一些时间来区分安装时发生的事情,这可能需要管理员权限,而不是在你运行和检查时发生的事情。除了每分钟一次向HKLM写入许可证信息之外,还必须运行升级的应用程序也会在我的机器的心跳中卸载。

因此,在安装时,将一些模糊/加密的内容写入HKLM下的注册表项。通过组合说出日期,电子邮件地址和其他一些信息,使它成为从机器复制到机器时非常有用的东西。在运行时,您的代码应该部分地查看不变的注册表项或条目,部分应该是可以轻松更改的其他内容,例如AppData下的文件,HKCU密钥或当前日期,以确定应用程序是否可以运行。 (在运行时,如果HKLM密钥不存在或未通过校验和或其他任何内容,请拒绝运行并要求重新安装。重新安装可能会担心此人是否正在尝试获得无限免费试用。)关注人们尝试的主要方式欺骗许可方案,也是一个可用的应用程序。在可用性方面,坚持提升或防止机器的一般使用失败。

答案 2 :(得分:1)

您可以在安装时更改HKLM中某处的权限,以便所有用户都具有写入权限。

如果您选择HKLM \ SOFTWARE \ Your Company Name以外的地方\而不是您的愚蠢。