程序在哪里保存他们的秘密许可证?

时间:2010-02-09 17:03:27

标签: c# security licensing install

程序在哪里保存其秘密许可证或安装相关信息?我注意到,卸载程序时经常清除appdata引用,检查注册表以确保没有任何相关信息的残留。

如果您再次重新安装试用程序,它似乎知道它之前已安装。我不打算找到破解试用程序的方法,但实际上需要实现类似的东西,但却无法找到有关如何执行此操作的任何有用的信息。

6 个答案:

答案 0 :(得分:18)

  • 注册表
  • 在线
  • 文件夹Windows中的文件名称
  • 我甚至看到黑客攻击未使用的操作系统变量的应用程序将自定义数据存储在注册表中。
  • 但最简单的方法是为自定义的未使用文件类型注册一个处理程序,如.sof(如果存在,之前已安装)编辑1 您必须注册句柄才能打开已知系统上的可执行文件,而不是您的应用程序。因为清洁工将检测是否指向不再存在的应用位置。至于存储额外的参数,例如试用期限到期日,您可以将它们作为参数包含在路径中,例如:cmd.exe -o 2010-02-09

答案 1 :(得分:5)

我已经用两种方式解决了这个问题。首先,在Windows应用程序中,我输入了一个加密的注册表项,该注册表项不在标准位置,因此不容易找到。如果您不介意a)经常重新格式化删除所有注册表项或b)在虚拟机上使用您的软件可以快速恢复到预审状态(因此您的线索可以),这是一个很好的解决方案再次使用。)

更好的选择是拥有一个在线注册表组件,该组件可以捕获加载试用版的计算机的MAC地址。每当重新加载试用版时,软件都会检查Web服务以查看之前是否已查看过MAC地址。解决此问题的唯一方法是再次使用能够更改MAC地址的虚拟机。但是,如果您的用户达到了极限,他们就会使用您的试用版。

答案 2 :(得分:3)

可能最简单的许可方式(正确完成时)是通过用户实际拥有的东西 - 某种硬件加密狗。

  • 非常难以复制/复制
  • 不依赖于网络访问
  • 防篡改(与软件相比)
  • 用户友好(工作正常时)
  • 执行许可证计数(不能轻易将1个加密狗一次插入10台机器)

当然,它也有许多缺点:

  • 生产成本高昂
  • 难以修理/更换
  • 实际上要求您以加密安全方式与加密狗进行通信 - 任何类型的if(dongle_ok()) { do_stuff() }都是邀请破解者将其修补到if (1) { do_stuff() } ...
  • ......这需要特殊的司机......
  • ......甚至可能是一个特殊的界面(我还有一个LPT加密狗,但没有LPT端口; USB< - > LPT糟透了)
  • 甚至不想把它连接到虚拟机上(尽管现在虚拟机中的外围设备支持更好)
  • 支持地狱(它是否已连接?它是否已损坏?驱动程序未损坏?签名/键是否正确且未过期?)
  • 脆弱,尤指如果它伸出计算机和/或具有破坏​​性的防篡改机制
  • 可能会破坏与其他外围设备的通信(特别是那些“传递”的东西因此而臭名昭着)

对于大多数程序而言,其缺点远大于优点;但是,如果你正在制造昂贵,复杂的软件(想想“生产工厂控制”),那么你的客户对许可就比较狡猾(换句话说,“会购买一份副本(必要时可以破解)并在50台机器上运行如果他们可以逃脱它“),并且诉讼是不切实际的(花费太长时间,你没有太多证据,不确定的结果),这可能是有用的。 (我没说简单,是吗?)

答案 3 :(得分:2)

他们将它保存在任何地方,秘密文件,秘密注册表项。有商业产品提供这种保护,如asprotect,犰狳等。

答案 4 :(得分:1)

某些产品将使用ADS(备用数据流)并在各个地方隐藏数据。

其他人会留下“rootkits”咳嗽 SONY。

还有一些会创建无法轻易删除的特殊注册表项,例如name中包含NULL的条目。

有时候取决于开发人员的严谨程度。

答案 5 :(得分:0)

还可以尝试隐藏文件或文件夹 - 大多数用户不知道显示隐藏文件和文件夹。然后你可以把它放在任何地方。 C:/ WINDOWS有时是一个不错的选择,因为当你第一次点击它时显示的那个愚蠢的窗口显示“危险!不要编辑这个文件夹中的任何内容或你的操作系统会失败!”这将隐藏大部分人和外行人,但让我们面对事实,你并没有隐藏任何活跃在堆栈溢出上的人。 :)