<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于STM32F103的ID號(hào)對(duì)應(yīng)用程序的保護(hù)方法

          基于STM32F103的ID號(hào)對(duì)應(yīng)用程序的保護(hù)方法

          作者: 時(shí)間:2018-08-01 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/201808/384805.htm

          由于現(xiàn)在市場(chǎng)激烈競(jìng)爭(zhēng)、混亂的市場(chǎng)機(jī)制及已失去的市場(chǎng)道德,迫使在產(chǎn)品設(shè)計(jì)時(shí),必需要考慮到對(duì)產(chǎn)品的保護(hù),以防產(chǎn)品的技術(shù)被第三方所用。無(wú)論是從硬件方面來(lái)保護(hù),還是從軟件方面來(lái)保護(hù),都無(wú)法保證產(chǎn)品100%的安全。由于嵌入式系統(tǒng)的特點(diǎn)就是軟件、硬件相結(jié)合,才具有實(shí)際的意義,失去任何一個(gè)平臺(tái)都是廢品一堆,因此將系統(tǒng)的軟件、硬件結(jié)合起來(lái)對(duì)產(chǎn)品進(jìn)行加密保護(hù),可靠性會(huì)大大地增加。STM32F103系列ARM處理器芯片就內(nèi)置了唯一的96位ID號(hào),同時(shí)也有以后備電池為電源的SRAM,還有入侵檢測(cè)(打開(kāi)機(jī)殼等)功能,以提供這方面的應(yīng)用需求。

          因此可以有幾種產(chǎn)品保護(hù)的方法:

          1、 將ID號(hào)寫(xiě)入內(nèi)部Flash貯存器

          如使用方法,基本思路為:程序首次運(yùn)行,則檢測(cè)ID號(hào)存貯區(qū)的Flash的數(shù)據(jù),以判斷是否需要將該系統(tǒng)的CPU的ID號(hào)更新到Flash中。當(dāng)以后系統(tǒng)再重新啟動(dòng)時(shí),就直接讀取Flash中的ID號(hào)并與本機(jī)CPU的ID號(hào)進(jìn)行比較。但有一點(diǎn)是,該存貯區(qū)的數(shù)據(jù)不能單一化存貯,最好是與系統(tǒng)校正、系統(tǒng)設(shè)置、系統(tǒng)參數(shù)等數(shù)據(jù)混合存放在一起,這時(shí),系統(tǒng)離開(kāi)這組數(shù)據(jù),也就不會(huì)運(yùn)行了。該數(shù)據(jù)在出廠時(shí)由工廠指定寫(xiě)入。這樣一來(lái),就算讀出CPU中的程序代碼,反編譯后,也不清楚這組數(shù)據(jù)的目的,從而起到對(duì)應(yīng)用代碼的保護(hù)作用。

          2、 將ID號(hào)寫(xiě)入SRAM,并配合電池電源及入侵檢測(cè)

          該方法可能相對(duì)復(fù)雜一些。基本思路為:程序首次運(yùn)行后,設(shè)置好后備電源保護(hù)的RAM區(qū),并讀出CPU的ID號(hào)存貯起來(lái),同時(shí)在應(yīng)用程序中設(shè)置入侵檢測(cè)功能。在系統(tǒng)正常運(yùn)行的情況下,RAM中的ID號(hào)始終都能與本機(jī)的ID號(hào)一致,如有侵入,則可觸發(fā)相應(yīng)的中斷,刪除RAM中的ID號(hào),但不要清除系統(tǒng)中運(yùn)行狀態(tài),從而引導(dǎo)應(yīng)用程序進(jìn)入錯(cuò)誤的運(yùn)行狀態(tài),或觸發(fā)系統(tǒng)內(nèi)核刪除代碼進(jìn)行“自殺”,以保證系統(tǒng)軟件的安全。

          對(duì)于上述的兩種方法中,如何判定系統(tǒng)為第一次啟動(dòng),只能根據(jù)各自的思路來(lái)作為一個(gè)準(zhǔn)則,非常規(guī)的方法,應(yīng)該會(huì)相對(duì)好一些。而這種應(yīng)用運(yùn)態(tài)讀入ID號(hào)的方法,不同的CPU有不同的校驗(yàn),所以破解CPU的ID號(hào)也就失去了任何意義了。

          應(yīng)用的例子:智能液位控制器

          應(yīng)用的是第一種方法:在Flash區(qū)域,我開(kāi)了一個(gè)扇區(qū),用來(lái)存貯我的標(biāo)識(shí)符(廠家標(biāo)識(shí)符)、系統(tǒng)參數(shù)、CPU-ID、系統(tǒng)是否是第一次運(yùn)行、自定義數(shù)據(jù)的CRC代碼。我的代碼程序有兩部份,一部份是應(yīng)用程序,第二部份是除上述系統(tǒng)參數(shù)及CPU-ID以外的數(shù)據(jù),而系統(tǒng)首次運(yùn)行標(biāo)識(shí)是一組特定字符。系統(tǒng)運(yùn)行時(shí),首先判斷廠家標(biāo)識(shí)符,接著判斷系統(tǒng)是否是首次運(yùn)行,如不是,更新CPU-ID,啟始化系統(tǒng)運(yùn)行參數(shù),最后破壞掉系統(tǒng)首次運(yùn)行標(biāo)識(shí)數(shù)據(jù),并將新的數(shù)據(jù)存貯起來(lái)。這之后系統(tǒng)再次運(yùn)行,則在這一區(qū)域就多了很多數(shù)據(jù)(不看代碼,我自己也不知道這些數(shù)據(jù)是些什么東西),每次啟動(dòng),系統(tǒng)都會(huì)校驗(yàn)CPU-ID,從面每一個(gè)系統(tǒng),在每一臺(tái)設(shè)備上都有一個(gè)唯一的標(biāo)識(shí)符。

          可能的破解分析:

          1、 如有人直接抄板后,讀出CPU程序后,只寫(xiě)第一部份數(shù)據(jù),不寫(xiě)入第二部份數(shù)據(jù),則系統(tǒng)無(wú)法識(shí)別廠家標(biāo)識(shí)符,則系統(tǒng)不運(yùn)行。

          2、 如有人直接抄板后,讀出CPU全部程序數(shù)據(jù),則第二部份數(shù)據(jù)對(duì)于新的系統(tǒng)無(wú)效,程序不會(huì)正常運(yùn)行

          3、 如有人想分析第二部份數(shù)據(jù),也不會(huì)有任何結(jié)果。因?yàn)殡x開(kāi)原來(lái)的系統(tǒng),數(shù)據(jù)無(wú)任何意義。

          4、 由于CPU-ID號(hào)是無(wú)法再重新更改的,CPU-ID無(wú)法進(jìn)行復(fù)制而使其一致。

          以上的方法,僅是個(gè)人的一些思維方式而已,是否有效,還需要各位提出各自的意見(jiàn),來(lái)整改修繕以達(dá)到較好的一種效果。對(duì)于如何更有效的對(duì)產(chǎn)品進(jìn)行保護(hù),相信不同的人、不同的應(yīng)用,會(huì)有不同的處理方法。沒(méi)有絕對(duì)的保護(hù),只有更多的方法,以萬(wàn)變應(yīng)萬(wàn)變了。

          讀取STM32F103的ID號(hào)的代碼如下:

          /*

          功能描述: 讀取STM32F103 CPU序列號(hào)

          輸入?yún)?shù):無(wú)

          輸出參數(shù):返回STM32處理器96位長(zhǎng)度的序列號(hào)

          聯(lián)合嵌入式中心提供:http://www.uectr.com

          */

          void Get_SerialNum(unsigned int* SerialID)

          {

          SerialID[0] = *(unsigned int*)(0x1FFFF7E8);

          SerialID[1] = *(unsigned int*)(0x1FFFF7EC);

          SerialID[2] = *(unsigned int*)(0x1FFFF7F0);

          }

          //使用方法:

          u32 Device_Serial[3];//用以存貯96位ID號(hào)

          Get_SerialNum(Device_Serial);//讀取ID號(hào)



          關(guān)鍵詞: 單片機(jī) 程序保護(hù)

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();