【问题标题】:C++ let a program work just at one pcC++ 让程序只在一台电脑上运行
【发布时间】:2014-03-05 10:35:34
【问题描述】:

我想为某些人制作一个程序,所以我为每个人重新制作程序,如果有人将程序交给其他人,他就无法使用它。

我该怎么做? 没有任何互联网连接。

是否有任何 PC 有一些独特的 id 或类似的东西,我可以让他获得它的程序,所以他会发给我,在我的程序中我会检查是否相同,如果不是,程序会停下来。

像 hwid 这样的东西会起作用吗? 硬件 ID 是否唯一且无法更改? 如果是这样,我怎样才能得到它?我发现了很多问题,但没有任何好的答案..

【问题讨论】:

  • 由于连游戏行业都无法解决这个问题,在投入数百万研究资金寻找解决方案之后,其他人也无法解决。
  • 你唯一能做的就是让绕过你的保护有点烦人。问题是这对你来说是否足够,或者你是否需要证明它不起作用
  • 即使是最复杂的应用程序也无法实现这一点(autocad、steam、3dmax),而且还使用了在线元素,这使得它变得更加困难,只能阻止小偷这么久。
  • 您想为每个人编译一次程序吗?我不认为你真的想这样做。我建议使用硬件加密狗。您插入 USB 端口的东西,没有它,程序将无法运行。他们不能共享加密狗。
  • @MariusBancila autocad 在我们的 PC 上仍然有 COM 端口的日子里尝试过。不得不说,它失败得很惨。

标签: c++ copy-protection


【解决方案1】:

【讨论】:

    【解决方案2】:

    有几种方法可以识别运行程序的计算机:

    1. WMI - Windows 提供了一组可用于大多数硬件枚举和识别任务的类,称为 WMI 或 Windows Management Instrumentation。这些是 Windows 驱动程序模型 (WDM) 的扩展。

    2. CPU ID - 似乎是最佳选择的解决方案是对 CPU 唯一标识号(或 CPU ID)进行采样。但是,有几个问题使得无法依赖读取 CPU ID。

    首先,除了旧的 Pentium III 之外,大多数 CPU 都没有唯一的 CPU 序列号。出于隐私原因,英特尔已删除此功能。

    仍然可以从整个主板生成唯一 ID。这当然可行,但大量不同类型的主板和制造商使得生成涵盖所有这些的唯一 ID 几乎是不可能的。

    1. 基于 MAC 地址的硬件 ID 获取此类唯一 ID 的下一个选择是对 MAC 地址进行采样。首先,什么是“MAC 地址”?它代表媒体访问控制。 MAC 地址长 48 位(6 字节)。 GetMACAddress 代码示例说明了如何获取 MAC 地址。

    但是,这种方法存在一个问题:MAC 地址可以轻松更改为新的...

    1. 硬盘序列号 似乎获取机器 ID 的唯一可靠解决方案是使用主硬盘驱动器的序列号。第二个示例GetHDSerialNumber 显示了如何获取此 ID。根据我的经验,这种方法是生成基于机器的唯一硬件 ID 的最佳方法,也是最可靠的方法。

    另见this 文章。

    【讨论】:

      【解决方案3】:

      正如其他人所说,要可靠地做到这一点真的很难。 您可以使用硬件加密狗或许可软件之类的东西来尝试限制使用。对于任何有足够动力的人来说,这只是一个减速带,仅此而已。

      另一方面是,您尝试使其越安全,限制性过强的风险就越高。也就是说,它最终可能会意外阻止合法使用,如果您想让用户满意,这是一件非常糟糕的事情。

      【讨论】:

        【解决方案4】:

        当 PC 开始流行时,这种方法被尝试了很多次。每一次都是惨淡的失败。它甚至会干扰法律授予用户的权利(保留备份副本)。事实证明,用户的麻烦足以让他们中的许多人不使用“受版权保护”的程序。

        今天,各种游戏机都成功地做到了这一点,但游戏机的供应商对机器和软件有非常严格的控制。强制,那些不能被用户用作常规计算平台,它们是单一用途的。没有广泛的可用软件。

        在普通机器上实现这一壮举的唯一方法是昂贵的程序,如 Mathlab 或 Autocad,主要是通过网络管理员严格控制下的某种“许可服务器”,与运行它的特定服务器相关联一些冗长的程序。即便如此,获得盗版(“解锁”)副本并不难。

        【讨论】:

        • 我想做的并不重要,打算使用我的程序的人不知道如何破解我的程序或绕过任何安全性.. 他们只想给程序给其他人
        • @Paul,“其他人”可以知道这些东西,或者知道某人,或者谷歌,......你可以永远假设对手完全无知,很多少这个时代。此外,根据我的经验,如果您将用户视为罪犯,他们就会成为罪犯。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-17
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多