仅在授权的计算机

时间:2016-05-28 11:24:11

标签: c++ protection

我写了一个c ++程序,我想保护它。 我需要程序只能在授权的计算机上运行,​​并且我可以在需要时停止程序。 我想到了2个解决方案,但我不知道这些是好还是容易破解。

第一个解决方案:

local_mac_address = get_mac_address();
if(local_mac_address == "\* authorized addr */")
    return true;
else
    return false;

第二种解决方案: 我在我的网站上传了一个带有密码的html页面。

page = download_page(url);
if(page == "my_secret_code")
    return true;
else
    return false;

如果我更改html源代码,程序将无法启动。

您如何看待这两种解决方案? 他们安全吗?

编辑: 可执行文件在我办公室的计算机上运行,​​所以我想避免有人可以复制它并在他们的计算机上使用

3 个答案:

答案 0 :(得分:2)

我说这两件事都很容易规避。

第一个可以通过简单地预加载实现get_mac_address()函数的共享库来撤消预期结果。

通过拦截网络流量并返回预期的回复,可以很容易地击败第二个。

此外,在使用调试器,反汇编程序和hexeditor进行一些工作之后,只需修改可执行文件以绕过两个检查,就可以轻松地禁用它们。

答案 1 :(得分:2)

它们根本不安全。

保护程序的事情是它们是文件,可以由反汇编程序打开,或者如果您是如此专业,使用十六进制编辑器。

使用反汇编程序,您的小代码可以轻松删除,程序将在删除代码时运行。

您可以加密可执行文件并在开始时设置解密器。您的站点将为解密器提供密码,并为其提供另一个密码以在运行完成时加密该exec为了更加安全。

如果你把解密器放在开头,或者把程序作为数据加载(不是exec),解密器就不会有任何运行问题。它总是被称为在线DRM。

答案 2 :(得分:2)

不要花费无数个小时来尝试让你的计划得到保护"。这是不可能的。

当可执行文件位于客户端计算机上时,您无法控制客户端对其执行的操作,因此您应该花时间为应用程序处理更多有用的事情。增加一点额外的安全性从来都不是坏事,但不要把它作为主要关注点。如果某人真的想要获得访问权限,他们就会。