單片機軟件加解密原理淺析
隨著科技的發(fā)展,與單片機相關(guān)的嵌入式電子產(chǎn)品的生命周期也越來越短,如何讓自己的產(chǎn)品縮短開發(fā)周期,加速上市時間,已成為眾多商家及工程師不得不思考的問題。真正的創(chuàng)新或高效,不只是來自于大自然對人類的啟發(fā),更多的是來自于學(xué)習(xí),只有善于學(xué)習(xí)的人,才有進步,日常生活如此,搞技術(shù)更是如此。
本文引用地址:http://www.ex-cimer.com/article/201610/307235.htm經(jīng)過十多年單片機開發(fā)應(yīng)用及加解密實踐,覺得單片機系統(tǒng)很脆弱,特別是沒做任何加密措施的產(chǎn)品。理論上,任何單片機系統(tǒng)都可以被解密,只是解密成本與時間問題。單片機軟件加解密,沒什么深奧的,但不夸張的說,它也是一門藝術(shù),是工程師長期含辛茹苦智慧的結(jié)晶,如果應(yīng)用得好,可以快速學(xué)習(xí)他人的先進技術(shù),也可以防止自己的技術(shù)成果輕易被他人取用。如果軟件加密做得好,要完全進行軟件解密,要分析數(shù)天,甚至花幾個月,還不一定能完全分析得出來(這與分析人員的這與分析人員的經(jīng)驗及知識結(jié)構(gòu)關(guān)系很大)。
單片機加解密可劃分為兩大類,一類是硬件加解密,一類是軟件加解密。硬件加密,對于單片機來說,一般是單片機廠商將加密熔絲固化在IC內(nèi),熔絲有加密狀態(tài)及不加密狀態(tài),如果處于加密狀態(tài),一般的工具是讀取不了IC里面的程序內(nèi)容的,要讀取其內(nèi)容,這就涉及到硬件解密,必須有專業(yè)的硬件解密工具及專業(yè)的工程師?,F(xiàn)在重點談?wù)勡浖矫娴募咏饷堋?/p>
軟件加解密的前提是要有軟件,即單片機程序,可以是以源代碼的形式(C語言或匯編語言程序)提供,或是以二進制(bin格式或hex格式等)提供。一般學(xué)習(xí)借鑒別人的程序,一般是以二進制形式提供(此二進制程序一般是從上述硬件解密的過程中得到)。隨著科技的發(fā)展,一般由硬件解密過程獲得的二進制程序,還需要做進一步的軟件分析、修改,即軟件解密過程,程序功能才能真正的有效(除非沒有做任何軟件加密的程序,稍微高手一點的工程師會對自己的軟件加密的),否則程序只能燒到母片上有效,而燒到同型號的其它芯片,某些關(guān)鍵功能會失效,甚至整個程序?qū)⒉还ぷ鳌?/p>
其實軟件加密原理很簡單,就是利用單片機IC廠商,為每片出廠芯片的某一特殊全球唯一識別參數(shù),即ID號做為密鑰,對程序進行加密。如果以本ID號的程序燒到另一ID號的芯片中,程序中經(jīng)軟件加密過的部分的功能將完全失效。
要解密上述經(jīng)軟件加密過的程序,唯一的途徑,就是反匯編程序,分析單片機反匯編后的匯編程序,將程序中軟件加密相關(guān)的密鑰去掉,然后編譯得到新的程序。這項工作需要的不只是耐心,更多的是專業(yè)知識與經(jīng)驗。對于搞技術(shù)的來說寫文字的東西是最為受折磨的事,先寫到這里。
評論