一種常用的單片機程序加密手段

一種常用的單片機程序加密手段

教單片機的時候,經常有學生看到別人某個產品比較好,想直接複製別人的產品,來諮詢能不能做破解。說實話,作為我們電子技術工程師,是不屑於做這種事情的,因為有那個時間和精力,我們完全可以獨立開發出來,為何要去破解呢?現在一些類型的單片機,從幾百塊錢到幾萬塊錢,也有人可以做破解,為了防止大家的產品被剽竊,那今天我給大家簡單介紹一種當前比較流行的常用加密手段。

---------------------------------------------------------------

-----------------------------------------------------------------

這種加密手段其實原理很簡單,現在是單片機的主流加密手段,還有尤其FPGA這種內部不帶程序存儲空間的器件,更是比較多的利用這種加密手段,就是唯一ID。那我們現在手上的銀行卡芯片卡,就是用的這種加密手段,這也是為什麼

這個唯一ID的意思就是,每顆芯片出廠的時候,都帶了一個號碼,這個號碼是唯一不重複的,和我們每個人的身份證號碼一樣,現在剛出生的嬰兒,辦理出生證的時候就給他一個身份證號,那麼每個芯片一生產出來,也就具備了這個身份證號。那有了這個身份證號可以做什麼呢?、

我們可以在單片機的外設上添加一個EERPOM存儲器(或者有的單片機內部有),然後我們自己組織一種特殊的算法,利用這個唯一ID,產生一組數據,每生產一個產品,我們預先存儲在我們的EEPROM內這樣一個數據,當然,燒寫這個數據我們也可以用軟件程序來實現的。我們的單片機上電程序初始化的時候,會來讀一下EEPROM內部這個數據X,然後用自身內部的ID加這個算法運算一下一個值Y,然後比較X和Y是否一致,如果一致就繼續工作,如果不一致就停止工作。

舉個例子,如果我們這個芯片內部的ID是147258369這9位數字,那麼我們的算法就是每一位數字乘以2加1,進位部分直接舍掉,那形成的數字就是:395517739。我們只需要把395517739這個數字預先燒寫到我們的EEPROM內部,然後我們編寫功能程序的時候,在初始化部分,會上電讀一下EEPROM的這個數字,讀出來X是395517739,然後再讀一下我們的這個芯片的唯一ID是147258369,用我們的算法計算一下這個結果Y是395517739,比較兩者相等,則程序繼續執行,兩者不相等則不工作。

一、芯片破解者,只能把芯片的二進制碼讀出來,源程序他是改不了的,所以他只能複製程序,並不能隨便更改程序。

二、每個產品上的主單片機的唯一ID,都會預先和自己產品的EEPROM內部的數據做比較,即使他們複製了這個EERPOM的數據,那他們只要換了其他一顆單片機,還是依然無法運行。


分享到:


相關文章: