C# 程序在哪里保存其机密许可证?

C# 程序在哪里保存其机密许可证?,c#,security,licensing,installation,C#,Security,Licensing,Installation,程序在哪里保存其机密许可证或安装相关信息?我注意到,通常在卸载程序时,清除appdata引用,检查注册表以确保没有任何相关信息的残留 如果重新安装试用程序,它似乎知道以前安装过。我不想找到破解试用程序的方法,但实际上需要实现类似的功能,并且找不到任何关于如何实现的好信息。他们将它保存在任何可以保存的地方,包括机密文件、机密注册表项。有一些商业产品可以提供这种保护,如防腐蚀剂、犰狳等。 登记处 在线 文件夹窗口中具有类似系统名称的文件 我甚至看到过一些应用程序,它们侵入未使用的操作系统变量,在注册

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


如果重新安装试用程序,它似乎知道以前安装过。我不想找到破解试用程序的方法,但实际上需要实现类似的功能,并且找不到任何关于如何实现的好信息。

他们将它保存在任何可以保存的地方,包括机密文件、机密注册表项。有一些商业产品可以提供这种保护,如防腐蚀剂、犰狳等。

  • 登记处
  • 在线
  • 文件夹窗口中具有类似系统名称的文件
  • 我甚至看到过一些应用程序,它们侵入未使用的操作系统变量,在注册表中存储自定义数据
  • 但最简单的方法是为自定义未使用的文件类型(如.sof)注册一个处理程序(如果有,它是以前安装的)Edit 1您必须注册该处理程序才能在系统上打开已知的可执行文件,而不是在应用程序上。因为清洁器将检测是否指向不再存在的应用程序位置。至于存储其他参数,如试用期满日期,您可以将其作为参数包含在路径中,如:
    cmd.exe-o 2010-02-09

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


      更好的选择是有一个在线注册表组件,它捕获加载试用的机器的MAC地址。无论何时重新加载试用版,软件都会检查web服务,以查看以前是否看到过MAC地址。唯一的解决办法是再次使用能够更改MAC地址的虚拟机。但是,如果你的用户走到了这个极端,他们会使用你的试用版。

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

      一些产品将利用ADS(备用数据流)并将数据隐藏在不同的地方

      其他人将留下“根工具包”

      还有一些会创建无法轻松删除的特殊注册表项,例如在注册表中包含空值的项


      有时这取决于开发人员的谨慎程度。

      可能最简单的授权方式(如果做得好)是通过用户实际拥有的某种硬件加密狗

      • 很难复制
      • 不依赖于网络访问
      • 防篡改(与软件相比)
      • 用户友好(工作正常时)
      • 许可证计数强制执行(不能一次轻松地将1个加密狗插入10台机器)
      当然,它也有许多缺点:

      • 生产成本高
      • 难以修理/更换
      • 实际上需要您以加密安全的方式与加密狗通信-任何类型的
        if(加密狗ok()){do_stuff()}
        都是邀请破解者将其修补到
        if(1){do_stuff()}
      • …这将需要特殊的驾驶员
      • …甚至可能是一个特殊的接口(我仍然有一个LPT加密狗,但没有LPT端口;USBLPT很烂)
      • 甚至不要考虑将其连接到虚拟机(尽管如今虚拟机中的外围支持更好)
      • 支持地狱(是否连接?是否断开?驱动程序是否断开?签名/密钥是否正确且未过期?)
      • 易碎品,特别是当它伸出计算机和/或具有破坏性的防篡改机制时
      • 可能会中断与其他外围设备的通信(尤其是那些“通过”的东西为此而臭名昭著)

      对于大多数项目来说,缺点远远大于优点;然而,如果你正在制作昂贵、复杂的软件(比如“生产工厂控制”),你的客户在许可方面就相当傲慢(换句话说,“如果他们能够侥幸逃脱的话,他们会购买一个副本(必要时破解),然后在50台机器上运行它”),诉讼是不切实际的(时间太长,你没有太多证据,结果不确定),这可能有用。(我没说简单,是吗?)

      有无数种方法可以做到这一点,没有一种是万无一失的。虽然没有完全相关,但可以告诉你一些遗留文件和注册表项。可能会对你有所帮助。有时候,这就像MSI遗留下来一样平凡——Revo不会触及这些。@Piskvor:这就是我要说的,开发者会为你的操作系统的任何部分装配设备,甚至更低的设备,只是为了实现它他们的程序“更难”被盗版,同时使你的系统不稳定。@Longpoke:这在这方面与现实世界的生态系统类似,特别是共生/寄生生态系统。嗯……IT安全公司应该开始雇佣生物学家吗?;)我建议注册一些更像
      .xxxxx notusedxxxxx
      的文件扩展名。每当我想使用
      .sof
      文件时,我不想让你的程序把它搞砸。@Earlz:当你安装其他东西时,它只会更新扩展名。奔腾只是建议检查它的存在。这一点都不聪明为了你自己的贪婪而撕毁别人的操作系统,我