保护可执行/应用程序以获得许可

时间:2012-07-09 21:31:20

标签: c++ distribution protection

当我想保护通用数据块以将这些原则应用于通用应用程序的分发时,我正在考虑各种选项。

  • 加密没有意义,就像为用户提供无法使用的内容,或者我必须同时提供加密文件和密钥,然后对其进行解密,这样做更有意义。
  • 生成熵没有意义,因为此过程只会以其他方式重新排列数据,而不会破坏应用程序的业务逻辑。
  • 将我的应用程序包装在需要用户密码的可执行文件中,我的真实应用程序和我的包装器是双链接的,如果我的包装器没有给出绿灯,我的应用程序将无法运行。
  • 基于Web的分发,如流行的“Steam”服务,根据一些登录/ ID验证为每个用户提供自定义编译。

还有哪些其他选择?我知道这不会以最终的解决方案结束,但至少我想避免用户只需通过简单的复制和粘贴来重新分发我的应用程序,并且我希望在软件分发系统上至少有一个优势。

1 个答案:

答案 0 :(得分:1)

通常的做法是使用用户系统上已有的一些信息作为密钥来加密数据;然后将数据键入该系统。例如,在Mac OS X上,您可以通过库调用获取系统序列号。 Sun系统有一个gethostid()库调用,这使得这很简单。一个适用于哑系统 cough Winders cough 的替代方法是使用以太网接口的MAC地址,或类似的东西。

这可能很棘手,你通常必须写一个小程序,它会在系统中徘徊并生成一个密钥,然后让客户通过电子邮件发送这个密钥给你,或者至少确定该程序通过电子邮件将密钥发送给你您。然后,您可以使用您获得的密钥信息加密受保护的数据,并让客户下载它。如果数据blob的大小合理,则可以将整个事务添加到应用程序安装程序。