|
如果單片機(jī)水平分為高中低三個(gè)階段的話,高者肯定會(huì)復(fù)雜的匯編分析編寫能力,這樣的人為數(shù)不多;中級(jí)者只會(huì)一般的匯編編寫及C語言的高級(jí)應(yīng)用,這樣的人有一定數(shù)量但也不是很多;低級(jí)者就是一大群像我這樣寫不出來只會(huì)東抄抄西抄抄,拿來就用的初學(xué)者,他們的能力只會(huì)簡(jiǎn)單的仿照,盜版,不會(huì)自己冥思苦想寫程序。呵呵,我主要是防那些中級(jí)和低級(jí)的盜版者。
//我剛剛接觸單片機(jī)不久,下面講到的方法絕對(duì)是我自己思索出來的,保證原創(chuàng)!
//如果別人和我的思路一樣,純屬巧合,也請(qǐng)各位大俠們別拍磚,也同時(shí)幫我分析一下這種方法可不可行!
我一直想對(duì)辛辛苦苦編寫出來的單片機(jī)程序進(jìn)行加密,但無從下手,大家知道,像S51、S52這類型的ISP下載的MCU,你即然可以ISP寫入,
別人也很容易讀取,寫的程序一樣被人家偷_窺無疑。我在網(wǎng)上搜索良久,找的方法無疑就三種:
1.使用有加密功能的單片機(jī),但現(xiàn)在解密的編程器大把,很快就把你的程序偷取了。
2.把單片機(jī)的管腳燒毀,無疑這種方法最好,但是沒有人提供正確的燒斷步驟。為此我特地發(fā)了一個(gè)貼討論過,都沒有人知道怎么燒!
3.程序內(nèi)部加密,但是你的板如果能正常運(yùn)行,別人也仿照和你的板一模一樣,別人也一樣可以正常運(yùn)行。這個(gè)方法不可行。
我自己就想,硬件燒斷管腳我不會(huì),那我就采用EEPROM(AT24C02)存儲(chǔ)器進(jìn)行加密,把加密值放入EEPROM中。
第一:
例如,我做一個(gè)4*4鍵盤的密碼鎖的電磁門鎖產(chǎn)品。用的是AT24C02來存儲(chǔ)用戶的設(shè)置密碼,假設(shè)地址1和地址2用來存放用戶設(shè)置的密碼,而地址10
和地址11、地址12用來存放我的加密值。我只要在程序中判斷:地址10+地址11=地址12,那么條件成立,程序正常運(yùn)行。否則就是盜版的,
我會(huì)讓程序在24小時(shí)后陷入死循環(huán)鎖壞,讓用戶開不了門,非得破門而入,讓用戶去投訴盜版公司,讓他們的生意做不成。呵呵,想到這里我就想笑。
(注;加密值是我事先寫入EEPROM中,并不會(huì)在產(chǎn)品程序中寫入,這樣的話,盜版的人就不知道我有加密過,給他們認(rèn)為這是一個(gè)無加密的產(chǎn)品)
第二:
第二個(gè)產(chǎn)品就是烘烤箱,例如烘烤各類果實(shí)的果干。使用的是AT89S52和AT24C02和DS18B20,我的加密值同樣也放在EEPROM中,大家知道,每個(gè)18B20
都獨(dú)有一個(gè)序列號(hào),我也把這相序列號(hào)存入EEPEOM中,在程序中也做相應(yīng)的對(duì)應(yīng)關(guān)系,能對(duì)應(yīng)上就可以正常運(yùn)行程序,否則就讓程序在10分鐘后拼命的
加熱燒烤,燒死它,而讓數(shù)碼管顯示的溫度值是一個(gè)非常正常的數(shù)值。呵呵,想到這里我就會(huì)偷偷的笑!
第三:
我不會(huì)用平常的P0、P1口去驅(qū)動(dòng)數(shù)碼管,而是從P0-P3四個(gè)I/O口中任意取幾個(gè)腳,只要湊夠8個(gè)腳就行了,同理,鍵盤輸入也是這樣取管腳。
然后我用0.5平方的細(xì)漆包線進(jìn)行連接管腳和元件,再用農(nóng)機(jī)膠把這些細(xì)小的漆包線和整個(gè)AT89S52全部封住,讓別人不知道這些管腳到底接的是哪個(gè)
元件,如果他們拆除農(nóng)機(jī)膠進(jìn)行查看,呵呵,因?yàn)檗r(nóng)機(jī)膠很硬,拆不出就算拆出來,也會(huì)同時(shí)把漆包線弄斷,更不可能知道管腳和元件的連接關(guān)系。
以上是我想到的加密方法,不知可不可行,請(qǐng)大家發(fā)表一下意見,如何才能做得更好。
(很遺憾的是我還掌握不到怎么燒斷AT89S52管腳的方法,如果大家有這方面的經(jīng)驗(yàn),說出來讓大家分享一下好嗎。
弊端:
第一:
例如,我做一個(gè)4*4鍵盤的密碼鎖的電磁門鎖產(chǎn)品。用的是AT24C02來存儲(chǔ)用戶的設(shè)置密碼,假設(shè)地址1和地址2用來存放用戶設(shè)置的密碼,而地址10和地址11、地址12用來存放我的加密值。我只要在程序中判斷:地址10+地址11=地址12,那么條件成立,程序正常運(yùn)行。否則就是盜版的,我會(huì)讓程序在24小時(shí)后陷入死循環(huán)鎖壞,讓用戶開不了門,非得破門而入,讓用戶去投訴盜版公司,讓他們的生意做不成。呵呵,想到這里我就想笑。
(注;加密值是我事先寫入EEPROM中,并不會(huì)在產(chǎn)品程序中寫入,這樣的話,盜版的人就不知道我有加密過,給他們認(rèn)為這是一個(gè)無加密的產(chǎn)品)
------------------------------------------------------
某位朋友告訴我:連你的24C02一起復(fù)制,這個(gè)很簡(jiǎn)單
第二:
第二個(gè)產(chǎn)品就是烘烤箱,例如烘烤各類果實(shí)的果干。使用的是AT89S52和AT24C02和DS18B20,我的加密值同樣也放在EEPROM中,大家知道,每個(gè)18B20
都獨(dú)有一個(gè)序列號(hào),我也把這相序列號(hào)存入EEPEOM中,在程序中也做相應(yīng)的對(duì)應(yīng)關(guān)系,能對(duì)應(yīng)上就可以正常運(yùn)行程序,否則就讓程序在10分鐘后拼命的
加熱燒烤,燒死它,而讓數(shù)碼管顯示的溫度值是一個(gè)非常正常的數(shù)值。呵呵,想到這里我就會(huì)偷偷的笑!
------------------------------------------
某位朋友告訴我:同上,再用一個(gè)單片機(jī)模擬18B20
第三:
我不會(huì)用平常的P0、P1口去驅(qū)動(dòng)數(shù)碼管,而是從P0-P3四個(gè)I/O口中任意取幾個(gè)腳,只要湊夠8個(gè)腳就行了,同理,鍵盤輸入也是這樣取管腳。
然后我用0.5平方的細(xì)漆包線進(jìn)行連接管腳和元件,再用農(nóng)機(jī)膠把這些細(xì)小的漆包線和整個(gè)AT89S52全部封住,讓別人不知道這些管腳到底接的是哪個(gè)
元件,如果他們拆除農(nóng)機(jī)膠進(jìn)行查看,呵呵,因?yàn)檗r(nóng)機(jī)膠很硬,拆不出就算拆出來,也會(huì)同時(shí)把漆包線弄斷,更不可能知道管腳和元件的連接關(guān)系。
---------------------------------------------------------
某位朋友告訴我:換不同的端口驅(qū)動(dòng)并不能增加解密難度,同時(shí)也是給自己找麻煩,用農(nóng)機(jī)膠不方便量產(chǎn)
我想說 為什么能看懂匯編程序的,解程序就很簡(jiǎn)單呢, 你妹的匯編啊!上課我都能聽睡著了,還要天天爬九樓!靠~
|
|