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