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