【问题标题】:Easiest way to limit executable to running on a certain computer将可执行文件限制为在特定计算机上运行的最简单方法
【发布时间】:2011-11-12 08:25:57
【问题描述】:

我正在尝试创建一个只能在一台机器上运行的可执行文件。实现这一目标的最简单方法是什么?许可证文件?或者是否有一个机器地址很像网络连接的 MAC 我可以硬编码到可执行文件中?

【问题讨论】:

  • 您如何将“一台机器”与虚拟机中的精确副本区分开来?比特可复制这一发现已经花费了媒体行业 30 多年的时间......
  • @erickson:在我看来不像是复制品,许可证只适用于一开始就尊重许可证的人。如果 OP 能澄清他是否想保护墨菲或马基雅维利,那就太好了,但从我在这里推断马基雅维利的问题。
  • 基本上我正在为自己编写一个应用程序,并且我想避免我的 IT 部门的人跑掉它 - 他们部署了可执行文件。

标签: c++ security


【解决方案1】:

如果它只在一台机器上运行,那么……只需保护机器并只将可执行文件存储在这台机器上。

不幸的是,这是唯一可靠的方法。


更长的答案:

  • 位可以复制
  • 程序可以反汇编
  • 反汇编可以逆向工程(虽然有时很长)
  • 逆向工程的成本可能会高于程序产生的价值,可能成本会高于程序产生的价值。

如果您对软件行业的研究时间足够长:

  • DRM:失败
  • 许可证:失败
  • 带有网络激活的许可证:失败

如果值得破解,它就会被破解。

【讨论】:

    【解决方案2】:

    最简单的方法是通过许可使其非法。试图在技术上强制执行此操作是不可能的,而且只会伤害您的用户(用户?):如果他们重新安装操作系统、更换网卡或升级 CPU 会怎样?

    【讨论】:

      【解决方案3】:

      没有 100% 有效的解决方案,也没有“最简单”和“高效”的解决方案。通常有一个连续的“有效”和“让用户抓狂”,您需要非常小心。

      MAC 地址不是一个糟糕的起点。更改您的 MAC 地址并不难,但是如果您在同一子网上有多个相同 MAC 的实例,他们的机器将无法工作,因此这有助于防止同一子网上的许多人在没有许可证的情况下运行您的产品。 MAC的问题是,在台式机上,网卡变了,MAC就变了;打勾你的付费用户。

      许可证文件通常比修改二进制文件要好。但是,您应该对许可证文件进行签名,以免被轻易修改。

      您的应用程序本身始终是最薄弱的环节。专门的攻击者只会从您的应用程序中删除测试。这个问题没有通用的解决方案。一个好的方法总是围绕“保持诚实的人诚实”,通过使正确许可您的应用程序变得容易,并且用户容易确定他们是否这样做了。你可以很容易地花大笔钱来惹恼那些无论如何都不会付钱给你的人。

      【讨论】:

        【解决方案4】:

        我认为my answer 的另一个问题在这里适用。

        这是一个法律问题,而不是技术问题。您的目标应该是让想要确保他们拥有您的软件的有效许可证的人更容易。与其保护您的代码免受想要窃取它的人的侵害,不如专注于帮助那些担心在没有适当许可的情况下意外使用它的客户。

        我也会重复我来自yet another question:的评论

        我认为“让诚实的人保持诚实”是正确的心态 接近这个问题。没有什么是加密安全的,但是 每个许可证都有某种唯一的密钥或编号实际上可以 让商业客户更容易解释他们的软件, 并为您的产品增加价值。繁重的 DRM(不起作用) 旨在挫败犯罪分子(他们永远不会付钱)只是一个 付费客户的障碍。

        【讨论】:

          【解决方案5】:

          如果您只想创建一个可执行文件的副本,并且如果您有权访问必须安装该可执行文件的机器,则可以将 MAC 地址硬编码到您的可执行文件中。如果您想分发多个可执行文件的副本并且您无法访问所有机器,那么您可以对可执行文件进行编码以要求从机器的 MAC 地址生成的许可证文件。这是一种软件激活。

          【讨论】:

          • 当我的网卡出现故障时,我很生气。如果更换它会使我的软件停止工作,我会非常生气!
          • 您也可以使用主板编号。您可以同时获取主板和网卡编号,并每次检查两者中的至少一个是否匹配。
          猜你喜欢
          • 2014-05-18
          • 1970-01-01
          • 2013-03-04
          • 1970-01-01
          • 2013-10-07
          • 2012-01-27
          • 2023-03-19
          • 2021-02-02
          • 2018-01-06
          相关资源
          最近更新 更多