将可执行文件限制为在特定计算机上运行的最简单方法

时间:2011-09-07 16:54:25

标签: c++ security

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

5 个答案:

答案 0 :(得分:8)

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

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


更长的答案:

  • 位可以复制
  • 程序可以被反汇编
  • 反汇编可以进行逆向工程(虽然它有时很长)
  • 逆向工程的成本可以高于程序产生的价格,可能是该程序产生的价值更高的成本。

如果你对软件行业看起来足够长:

  • DRM:失败
  • 许可证:失败
  • 使用网络激活的许可证:失败

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

答案 1 :(得分:6)

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

答案 2 :(得分:1)

没有100%有效的解决方案,并且没有“最简单”和“高效”的解决方案。通常有一个连续的“有效”和“驱使用户疯狂”,你需要非常小心。

MAC地址不是一个可怕的起点。更改您的MAC地址并不困难,但如果您在同一子网上有多个相同MAC的实例,则它们的计算机将无法正常工作,因此,保持同一子网上的许多人无需许可即可运行您的产品。 MAC的问题是在台式机上,如果网卡发生变化,MAC会发生变化;这会打击你的付费用户。

许可证文件通常比修改二进制文件更好。但是,您应该对许可证文件进行签名,以便无法轻松修改。

您的应用程序本身始终是最薄弱的环节。专门的攻击者只会从您的应用程序中删除测试。这个问题没有通用的解决方案。一种好的方法总是围绕“保持诚实的人诚实”,方便用户正确许可您的应用程序,并且用户很容易确定他们是否已经这样做了。你可以轻松地花费巨额资金来惹恼那些永远不会付钱给你的人。

答案 3 :(得分:1)

我认为my answer适用于另一个问题。

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

我还会重复yet another question:

的评论
  

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

答案 4 :(得分:0)

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