許多公司程序的一開始總會有這樣一段源代碼: const unsigned char version_num[]={......}; 大括號中為產(chǎn)品編號和程序版本號,產(chǎn)品編號和程序版本號都是公司指定的,除了少數(shù)時候可以通過外部通訊讀取這個號碼外,大多數(shù)時候只是放在這里,程序并沒有對其做任何處理 。 大多數(shù)人的理解是這里的產(chǎn)品編號和程序版本號應該是為了方便公司對產(chǎn)品進行管理,比如現(xiàn)在有同一個型號不同版本的產(chǎn)品混在一起,就可以利用其進行區(qū)分。實際上這段代碼的作用不是這樣簡單,更重要的是對外起到身份標示的作用,當出現(xiàn)知識產(chǎn)權(quán)糾紛的時候,這段代碼的威力就顯現(xiàn)了出來。 現(xiàn)在讓我來給你一個假設(shè),這個假設(shè)是針對單片機產(chǎn)品:你花了很長時間終于開發(fā)出一款受市場歡迎的產(chǎn)品,經(jīng)過產(chǎn)品開發(fā)、市場前期推廣,儼然就是花開結(jié)果,馬上就是享受回報的時候。可此時殺出一家知名公司推出同樣的產(chǎn)品,一下就把你逼到無利可圖的地步。你經(jīng)過仔細對比,可以確認此知名公司推出的產(chǎn)品用的代碼就是你開發(fā)的,因為產(chǎn)品是你開發(fā)的,沒有源代碼外泄的可能。 難道真的這么巧是知名公司開發(fā)出了和你一模一樣的產(chǎn)品?這種說法只能是哄小孩,一個產(chǎn)品,多少都有一些只有開發(fā)者自己知道的細節(jié),只有開發(fā)者自己才知道這些細節(jié)的存在,而且這些細節(jié)是不會再產(chǎn)品規(guī)格書上有體現(xiàn)的,就好比是雙胞胎,別人看就是一個模子出來的,可父母一眼就能看出許多不同。 現(xiàn)在答案是顯而易見的,是知名公司通過某種非正常手段得到了你燒到芯片里面的代碼。既然這樣那可以去告知名公司啊,現(xiàn)在一個問題就出現(xiàn)在你面前,你如何證明這個程序是你寫的?也許你會說要證明這個還不簡單?我有源代碼啊,知名廠家沒有。可如果知名廠家說他們的源代碼被當時的項目工程師離職時刪除了,現(xiàn)在在你這里出現(xiàn)了,好哇,告你非法竊取公司商業(yè)機密。 當然,知名公司告你是告不贏的,只不過他們是大公司,不缺小錢,他們可以花一筆錢請一個律師把你拖到漫長的司法訴訟過程中,知名公司并不希望打贏官司,目的只有一個:“拖垮你,讓你覺得耗不起只好自動退出。” 如果你在代碼里面有這樣的一段代碼,恐怕知名公司別再妄想通過司法過程的漫長來拖垮你,你很容易就能用這段代碼通過司法鑒定證明程序就是你編寫的,一旦證明這個程序是你的,知名公司就不會再使用拖字訣,到那個時候就只有一條路可供他們選擇,找你和解。 這是我通常在程序中留的個人簽名,很簡單,就是我常用的一個郵箱,哈!當然不會一直都是這個郵箱啦,會變來變?nèi)サ模幸粋基本原則,很容易證明這個簽名信息就是我。 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) { //死循環(huán) } } 作者介紹: 戴上舉,1976年出生于湖南,1998年中國農(nóng)業(yè)大學應用電子技術(shù)專業(yè)畢業(yè),先后在國有、民營和外資企業(yè)從事過研發(fā)工作。 |