注:本文是作者以前发表在其个人博客,现在发布到“聚丰开发”专栏
许多公司程序的一开始总会有这样一段代码。
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(author_msg);i++)
{
name_sum=name_sum+author_msg[i];
}
if(name_sum!=0xXX)
{
while(1)
{
//死循环
}
}
发布评论请先 登录
相关推荐
评论