想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
5个月前关闭。
我已经用C编写了一个程序,我需要通过复制防止它被非法使用。系统将连接到互联网。如何使此程序仅在此计算机或唯一计算机上运行。我们可以使用http发布并从外部服务器获取一些加密代码吗?任何想法都会有用。不知道这是否已经回答,搜索但找不到结果。
最佳答案
如何保护我的Linux C程序免受盗版
你可能做不到。
如果我足够熟练并且有足够的动力,我可以decompile您的二进制可执行文件(或使用binsec研究它),研究其动态行为(例如,使用strace
或gdb
等)或检测您的技巧和补丁,然后构建并安装我的Linux kernel源代码(它是免费软件)来规避您的保护措施。
换句话说,如果您的对手像NSA一样强大,那么您就输掉了这场比赛。
从概念上讲,C程序的“保护”可以与halting problem和Rice's theorem有关。高深和困难的细节留给读者练习。而且,您会发现大量关于software obfuscation技术的学术论文(在实践中,相当有效的方法是编译并链接with gcc -flto -O3
然后strip ping生成的可执行文件)。
如何使此程序仅在此计算机上运行
阅读有关DMZ和iptables的更多信息。通过合法手段和物理手段保护该计算机(甚至包括24h / 24机枪的武装警卫,以防止其被盗或损坏;与计算机本身相比,它们要花费您更多的钱)。请花费数年的时间来了解有关cybersecurity的更多信息(您可以在我的工作场所获得博士学位)。
社会上和经济上有效的保护是由一些昂贵且专业的律师撰写的良好许可(EULA)。如果您的客户是公司,即使从技术上讲,他们也不会冒险违反该许可证。 (想想如果他们这样做会发生什么)。可以观察到,2019年Linux上的专有程序对盗版的保护措施比1999年要少(即使Oracle或SAP在出售Linux专有软件,以软件许可,但以相关的)。研究services的商业模式及其利润。阅读有关开放源代码经济学的论文或书籍(例如,RedHat,引用最多的论文)。
根据谣言,Oracle昂贵的二进制文件没有保护措施。但是我使用免费软件RDBMS。
而且,如果您添加的太复杂而无法在软件中部署保护功能,那么您将失去潜在的客户。
最困难的步骤是为您的软件找到实际的客户,而不是发明或部署困难的技术技巧来避免盗版。您可以使用一些现有的但不完善的this one。我的猜测是,您不会找到很多客户(并且您可以使用合适的许可证将源代码提供给每个客户-也许是由您的律师编写的受限许可证-不会损害您的业务;地球上的大多数人不会甚至具有编译您的源代码的必要技能,那些没有风险的人也不会冒着很大的动力就冒犯您的律师所写,由您和他们所签署的法律和合同的风险;而且我不会接受或信任您的二进制文件,而无需先浏览源代码)。
不要在保护软件上花费很多精力。请花费数月的时间进行适当的文档记录,调试和商业化(并且一旦您的客户付了款,就进行培训并帮助您的客户使用软件)。
PS。我个人的感觉是,即使您免费提供了我的二进制Linux可执行文件(如在啤酒中),我也不会费心尝试(因为我可能不需要它,并且肯定是因为我对您不够信任)
PPS。对我来说,Linux发行版最重要的方面是由license manager(又名libre软件)或free software组成。它当然不是Linux的“免费”(或者像啤酒一样免费)。我重视自由,而不是不付钱给Debian。我是专业的open source免费软件,为此我得到了报酬。
注意另请参阅writing及其参考书目。与您的问题有关。并考虑将保护工作分包给我的工作场所(如果您真的很认真的话,请在[email protected]
发送电子邮件给我)。正在工作的this draft report能够共同为您的代码添加良好的保护。然后为该服务分配数十万欧元的预算,并至少分配10万欧元(用于几个人/月的工作)。如果这样的合同成为现实,我的老板会很高兴(但我会发现这样的工作很无聊)。
关于c - 如何保护我的linux C程序免受盗版,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58076200/