我用 C 编写了一个程序,我需要通过复制来防止非法使用。系统将连接到互联网。如何使这个程序只能在这台计算机或唯一的计算机上运行。我们可以使用 http post 并从外部服务器获取一些加密代码吗?任何想法都会很有用。不知道这是否已经回答,搜索但找不到结果。
2 回答
如何保护我的 linux C 程序免受盗版
你可能做不到。
如果我足够专业并且有足够的动力,我可以反编译您的二进制可执行文件(或使用binsec研究它),研究它的动态行为(使用例如strace
orgdb
等...),或者检测您的技巧并打补丁,然后构建并安装我的 Linux内核源代码(它是免费软件)来规避您的保护。
换句话说,如果你的对手和美国国家安全局一样强大,那你就输了。
从概念上讲,C 程序的“保护”可能与停机问题和莱斯定理有关。血腥和困难的细节留给读者作为练习。你会发现大量关于软件混淆技术的学术论文(在实践中编译和链接然后 gcc -flto -O3
剥离生成的可执行文件非常有效)。
如何让这个程序只在这台电脑上运行
阅读更多关于DMZ和iptables的信息。通过法律手段和物理手段保护该计算机(甚至包括 24 小时/24 小时机枪武装警卫,以避免其被盗或损坏;它们的成本要比计算机本身高得多)。花几年的时间来了解更多关于网络安全的知识(你可以在我的工作场所获得博士学位)。
对社会和经济有效的保护是由一些昂贵的专家律师编写的良好许可证 ( EULA )。如果您的客户是公司,他们不会冒险打破该许可证,即使在技术上他们可以。(想想如果他们这样做会发生什么)。观察到,2019 年 Linux 上的专有程序对盗版的保护比 1999 年少(而且即使是甲骨文或SAP在销售 Linux 专有软件时,在软件许可上但在相关服务上也没有获得大部分利润)。研究RedHat的商业模式及其利润。阅读有关开源经济学的论文或书籍(例如这一篇,被引用最多的一篇)。
据传言甲骨文昂贵的二进制文件没有保护。但我使用免费软件 RDBMS。
而且,如果您添加的保护措施过于复杂而无法将保护部署到您的软件中,您只会失去潜在客户。
最困难的一步是为您的软件找到真正的客户,而不是发明或部署困难的技术技巧来避免盗版。您可以使用一些现有的但不完善的许可证管理器。我的猜测是你不会找到很多客户(你可以把你的源代码提供给他们每个人,有一个合适的许可证——也许是你的律师写的受限许可证——而不损害你的业务;地球上的大多数人都不会甚至有必要的技能来编译你的源代码,那些这样做的人不会冒险违反法律和合同,由你的律师编写,由你和他们签署,没有非常强烈的激励;我不会接受或信任您的二进制文件,而之前没有看过您的源代码)。
不要花费大量精力来保护您的软件。确实要花费数月的时间来正确记录它、调试它并将其商业化(并且,一旦你有一个付钱给你的客户,就可以培训和帮助你的客户使用你的软件)。
PS。我个人的感觉是,即使你免费给我你的二进制 Linux 可执行文件——就像啤酒一样——我什至不会费心去尝试它(因为我可能不需要它,当然因为我不够信任你)
聚苯乙烯。对我来说,Linux 发行版最重要的方面是由自由软件(又称自由软件)或开源软件组成。这当然不是 Linux 的“免费”(或像啤酒一样免费)方面。我重视自由而不是不付钱给 Debian。我正在专业地编写免费软件,我为此获得了报酬。
注意。还请查看这份报告草案及其参考书目。它与您的问题相关。basile.starynkevitch@cea.fr
并考虑在我的工作场所分包保护工作(如果你真的很认真,请给我发电子邮件)。我正在工作的实验室共同能够为您的代码添加良好的保护。然后为该服务分配数十万欧元的预算,以及至少 10 万欧元(用于几个人月的工作)。如果这样的合同成为现实,我的老板会很高兴(但我会觉得这样的任务很无聊)。
唯一安全的方法是使用 USB 加密狗,通过 USB 加密狗获得许可