我写了一个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源代码,程序将无法启动。
您如何看待这两种解决方案? 他们安全吗?
编辑: 可执行文件在我办公室的计算机上运行,所以我想避免有人可以复制它并在他们的计算机上使用
答案 0 :(得分:2)
我说这两件事都很容易规避。
第一个可以通过简单地预加载实现get_mac_address()
函数的共享库来撤消预期结果。
通过拦截网络流量并返回预期的回复,可以很容易地击败第二个。
此外,在使用调试器,反汇编程序和hexeditor进行一些工作之后,只需修改可执行文件以绕过两个检查,就可以轻松地禁用它们。
答案 1 :(得分:2)
它们根本不安全。
保护程序的事情是它们是文件,可以由反汇编程序打开,或者如果您是如此专业,使用十六进制编辑器。
使用反汇编程序,您的小代码可以轻松删除,程序将在删除代码时运行。
您可以加密可执行文件并在开始时设置解密器。您的站点将为解密器提供密码,并为其提供另一个密码以在运行完成时加密该exec为了更加安全。
如果你把解密器放在开头,或者把程序作为数据加载(不是exec),解密器就不会有任何运行问题。它总是被称为在线DRM。
答案 2 :(得分:2)
不要花费无数个小时来尝试让你的计划得到保护"。这是不可能的。
当可执行文件位于客户端计算机上时,您无法控制客户端对其执行的操作,因此您应该花时间为应用程序处理更多有用的事情。增加一点额外的安全性从来都不是坏事,但不要把它作为主要关注点。如果某人真的想要获得访问权限,他们就会。