程序源代码里的秘密

发布时间:2011-11-8 11:35    发布者:李宽
关键词: 秘密 , 源代码
许多公司程序的一开始总会有这样一段源代码:

const unsigned char version_num[]={......};

大括号中为产品编号和程序版本号,产品编号和程序版本号都是公司指定的,除了少数时候可以通过外部通讯读取这个号码外,大多数时候只是放在这里,程序并没有对其做任何处理 。

大多数人的理解是这里的产品编号和程序版本号应该是为了方便公司对产品进行管理,比如现在有同一个型号不同版本的产品混在一起,就可以利用其进行区分。实际上这段代码的作用不是这样简单,更重要的是对外起到身份标示的作用,当出现知识产权纠纷的时候,这段代码的威力就显现了出来。

现在让我来给你一个假设,这个假设是针对单片机产品:你花了很长时间终于开发出一款受市场欢迎的产品,经过产品开发、市场前期推广,俨然就是花开结果,马上就是享受回报的时候。可此时杀出一家知名公司推出同样的产品,一下就把你逼到无利可图的地步。你经过仔细对比,可以确认此知名公司推出的产品用的代码就是你开发的,因为产品是你开发的,没有源代码外泄的可能。

难道真的这么巧是知名公司开发出了和你一模一样的产品?这种说法只能是哄小孩,一个产品,多少都有一些只有开发者自己知道的细节,只有开发者自己才知道这些细节的存在,而且这些细节是不会再产品规格书上有体现的,就好比是双胞胎,别人看就是一个模子出来的,可父母一眼就能看出许多不同。

现在答案是显而易见的,是知名公司通过某种非正常手段得到了你烧到芯片里面的代码。既然这样那可以去告知名公司啊,现在一个问题就出现在你面前,你如何证明这个程序是你写的?也许你会说要证明这个还不简单?我有源代码啊,知名厂家没有。可如果知名厂家说他们的源代码被当时的项目工程师离职时删除了,现在在你这里出现了,好哇,告你非法窃取公司商业机密。

当然,知名公司告你是告不赢的,只不过他们是大公司,不缺小钱,他们可以花一笔钱请一个律师把你拖到漫长的司法诉讼过程中,知名公司并不希望打赢官司,目的只有一个:“拖垮你,让你觉得耗不起只好自动退出。”

如果你在代码里面有这样的一段代码,恐怕知名公司别再妄想通过司法过程的漫长来拖垮你,你很容易就能用这段代码通过司法鉴定证明程序就是你编写的,一旦证明这个程序是你的,知名公司就不会再使用拖字诀,到那个时候就只有一条路可供他们选择,找你和解。

这是我通常在程序中留的个人签名,很简单,就是我常用的一个邮箱,哈!当然不会一直都是这个邮箱啦,会变来变去的,但有一个基本原则,很容易证明这个签名信息就是我。

const unsigned char author_msg=['s','j','_','d','a','i','@','h','o','t','m','a','i','l','.','c','o','m');

如果你觉得这个签名还不够安全,看下面的:

name_sum=0;

for(i=0;i

{

name_sum=name_sum+author_msg[i];

}

if(name_sum!=0xXX)

{

while(1)

{

//死循环

}

}


作者介绍: 戴上举,1976年出生于湖南,1998年中国农业大学应用电子技术专业毕业,先后在国有、民营和外资企业从事过研发工作。
本文地址:https://www.eechina.com/thread-78922-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
mxh0506 发表于 2011-11-8 14:36:09
代码太直白了,这种信息应该加密后分散在程序中保存,最好是多个备份,并且让其中的一个备份和功能性的代码建立依存关系——一旦被改变,相应的功能也发生不明显的变化,表面上可以运行,但最终丧失功能或降低性能。作为原始开发者,应该保留特殊的工具来检测这种变化,并在部分信息遭到破坏时从另外的备份中恢复原始信息。
luowuhui 发表于 2011-11-13 15:44:05
路过
王兴梅 发表于 2011-11-13 19:40:25
是个创举!
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表