仅使用一个用户即可保护高价值的C#应用​​程序

use*_*007 10 c# protection

我有一个应用程序 - 用C#编写 - 只有一个用户使用.我提供这个软件的月费很高(> 10,000美元).我想保护此应用程序不被任何其他用户使用,我希望能够阻止一个用户使用该应用程序,如果他们停止支付许可费用.

我知道没有完善的保护方案,我已经回顾了很多关于SO的类似问题,但我的问题有点不同,因为我只有一个客户端,我可以完全访问他们的硬件,我不介意每次安装甚至花费几个小时来大幅提高安全性.

Chr*_*isW 12

对于10K /月,您可以在您管理的硬件上运行它,而不是在硬件上运行它.您可以将硬件放在他们没有物理访问权限的数据中心中.


硬件必须在客户现场的硬件上运行.

所以,我猜他们对数据的位置很敏感.

有许多第三方许可解决方案(例如,Infralution,.Net Reactor,Oreans WinLicense,Armadillo,XHEO DeployLX,可能还有更多).如果您对Microsoft自己的解决方案感兴趣,请参阅InishTech 此处此处.


Rob*_*les 9

最好的解决方案可能是当今使用的流行策略的组合:

锁定应用程序

...到主机操作系统的MAC地址,硬盘序列号和Windows产品密钥(如果可用).在网站上收集后,您可以将其硬编码到应用程序中.如果检测到错误的硬件,则将其关闭.此外,在注册表中查找建议存在VMware或Virtual PC集成功能的项目,并在找到时拒绝运行.

模糊处理

...因此,逆向工程以及取消许可将更加困难.CIL非常容易进行逆向工程,因此无论您做什么,这都应该成为您应用程序的重点(如上所述).这可能需要花费大量时间才能正确,特别是如果您依赖序列化.如果可能,将所有程序集包装到一个加密的EXE文件中,该文件具有非托管引导程序.

发出心跳

...到异地服务器,具有硬件或站点特定数据.如果软件被复制并在另一台计算机上启动,您可能会收到提示.如果应用程序脱机,这也有可能提醒您.此外,您可以将应用程序配置为从服务器请求基本加密响应或关闭.

最后一点:不要过火.据推测,由于您的应用程序在可能的替代方案(无论是那些)上的经验,您的报酬是10,000美元.当您添加保护措施时,会增加可能(非常烦人)错误的数量,增加维护成本,并为您的客户带来麻烦.严重破坏性的许可方案可能会让您的客户反其道而行之.


Kal*_*see 8

真正保护您的代码并确保您可以为其收费的唯一方法是制作基于订阅的Web应用程序.除此之外,有几种选择可能有效:

  1. 在您控制的服务器上运行应用程序,更新应用程序以使其仅在该系统上运行,并授予它们远程桌面访问权限
  2. 使程序联系您控制的远程订阅和授权系统(尽管可以通过逆向工程代码来避免这种情况)

旁注:dang,我需要找一个客户,每个月我只需要支付1万美元的软件包!大声笑.


小智 3

安全是一个过程。

我质疑为什么有人愿意每月支付 1 万美元来申请。复制该应用程序的功能可能不会花费那么大的成本。那么,如果使用它的实体向另一个程序员描述它,他们可以复制它吗?大概。

无论如何,如果您有权访问他们的硬件并且控制他们的操作系统用户名/密码,只需让密码每月过期即可。

  • 如果应用程序从事的工作每月要花费超过 10k 的工资,那么这是一个完全合理的建议。 (3认同)