具有唯一ID的MCU在程序加密上有獨(dú)特的優(yōu)勢,就是利用這唯一ID對程序加密,使程序只能在這唯一ID上使用,做到程序不能直接硬拷貝。具體做法就是在燒錄程序時(shí)先讀出MCU的唯一ID,然后把這ID寫入程序中,目標(biāo)程序中要有判別這唯一ID的函數(shù),程序運(yùn)行時(shí)要對ID進(jìn)行核對,如果不對,則程序非正常運(yùn)行。做的高級點(diǎn)在程序空間開辟16-64字節(jié)的空間,把這唯一ID號加上一些隨機(jī)數(shù)據(jù)使用DES或其他加密算法進(jìn)行加密,然后燒錄到該MCU中。同時(shí)計(jì)算該程序的校驗(yàn)和(最好是unsigned long)一并燒錄的MCU中, 目標(biāo)程序運(yùn)行時(shí)不定時(shí)計(jì)算自己的校驗(yàn)和,發(fā)現(xiàn)不對則程序非正常運(yùn)行。程序運(yùn)行時(shí)解密這些數(shù)據(jù),然后再與唯一ID對照,如果錯(cuò)誤則不正常運(yùn)行。這樣做的目的是讓非法拷貝程序難道增加,必須讀懂程序,然后再修改相關(guān)方才能成功。這樣給非法拷貝增加了相當(dāng)難度。
要做到以上的程序加密,就要有個(gè)自定義程序燒錄工具。本人在研究了STC11F系列的燒錄時(shí)序后開發(fā)了專用燒錄工具,燒錄時(shí)先燒錄一個(gè)專門讀唯一ID的程序,然后運(yùn)行這程序,讀出ID,然后進(jìn)行DES加密處變成16字節(jié)數(shù)后加入到真正的目標(biāo)程序然后燒錄這唯一適合該MCU的程序到該MCU。由于這些過程都是由程序控制的,與燒錄一個(gè)程序沒什么本質(zhì)的區(qū)別,還可脫機(jī)燒錄,非常方便。 |