欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種用于固件的保護(hù)方法

文檔序號(hào):9597155閱讀:677來源:國(guó)知局
一種用于固件的保護(hù)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件保護(hù)領(lǐng)域,特別涉及一種用于固件的保護(hù)方法。
【背景技術(shù)】
[0002]固件(Firmware,固件程序)是固化在硬件設(shè)備中的軟件程序,一般由硬件設(shè)備的開發(fā)商提供,在硬件設(shè)備出廠前下載到硬件中。固件一般存儲(chǔ)于硬件設(shè)備中的電可擦除只讀存儲(chǔ)器 EEPROM(Electrically Programmable ROM)或 FLASH 芯片中。
[0003]固件是擔(dān)任著硬件設(shè)備系統(tǒng)最基礎(chǔ)最底層工作的軟件。在硬件設(shè)備中,固件就是硬件設(shè)備的靈魂。一些硬件設(shè)備除了固件以外沒有存儲(chǔ)其他軟件,因此固件也就決定著硬件設(shè)備的功能及性能,其重要性不言而喻。
[0004]為保護(hù)固件安全,有些硬件設(shè)備開發(fā)商會(huì)采用安全芯片,將固件程序存儲(chǔ)在安全芯片中,通過高強(qiáng)度的安全芯片來保護(hù)技術(shù)秘密和數(shù)據(jù)安全。但是,由于安全芯片成本較高,并且在使用上相對(duì)來說較為復(fù)雜(例如加密等操作)等原因,目前安全芯片更多地應(yīng)用在軟件保護(hù)行業(yè)(如加密鎖產(chǎn)品)或其他對(duì)技術(shù)保密有要求的安全產(chǎn)品上,而市場(chǎng)上大部分硬件設(shè)備基本上采用的都還是非安全芯片。
[0005]—般來講,對(duì)于固件程序,通??梢酝ㄟ^專門的固件讀取工具或一些硬件設(shè)備來讀取固件的二進(jìn)制代碼,之后再反編譯成匯編語言,很容易就能獲得固件的源碼,這樣一來,采用非安全芯片存儲(chǔ)的固件基本上就沒有安全性可言。

【發(fā)明內(nèi)容】

[0006]有鑒于此,本發(fā)明提供了一種用于固件的保護(hù)方法,以解決目前用單片機(jī)或ARM等非安全芯片存儲(chǔ)的固件的安全問題。
[0007]在本發(fā)明提供的用于固件的保護(hù)方法中,所述固件存儲(chǔ)在硬件設(shè)備中,所述保護(hù)方法包括:將所述固件的待保護(hù)的代碼段中的各條指令打亂順序;將每條指令與實(shí)際應(yīng)當(dāng)執(zhí)行的下一條指令之間的偏移量保存到偏移量表中,將偏移量表保存在所述硬件設(shè)備的外部;在每條指令末尾添加跳轉(zhuǎn)指令,所述跳轉(zhuǎn)指令用于根據(jù)所述偏移量表在指令順序打亂后的所述代碼段內(nèi)執(zhí)行從每條指令到實(shí)際應(yīng)當(dāng)執(zhí)行的下一條指令的跳轉(zhuǎn)。
[0008]作為優(yōu)選,所述偏移量表還包括入口點(diǎn)信息,所述入口點(diǎn)信息為關(guān)聯(lián)于指令順序打亂后的所述代碼段中實(shí)際應(yīng)當(dāng)首先執(zhí)行的指令的偏移量。
[0009]作為優(yōu)選,在緊接所述代碼段之前添加入口點(diǎn)跳轉(zhuǎn)指令,其用于根據(jù)偏移量表中的所述入口點(diǎn)信息跳轉(zhuǎn)到所述代碼段中實(shí)際應(yīng)當(dāng)首先執(zhí)行的指令。
[0010]作為優(yōu)選,預(yù)先生成所述偏移量表并根據(jù)所述偏移量表將固件的所述待保護(hù)的代碼段中的各條指令打亂順序。
[0011]作為優(yōu)選,在將所述待保護(hù)的代碼段中的各條指令打亂順序之后生成所述偏移量表。
[0012]作為優(yōu)選,根據(jù)自定義算法或隨機(jī)亂序算法自動(dòng)將所述各條指令打亂順序。
[0013]作為優(yōu)選,根據(jù)用戶指令將所述各條指令打亂順序。
[0014]作為優(yōu)選,所述偏移量表通過文件的方式存儲(chǔ)或通過變量的方式記錄。
[0015]作為優(yōu)選,將所述偏移量表經(jīng)過加密后保存在所述硬件設(shè)備外部。
[0016]作為優(yōu)選,所述偏移量表中還包括指令順序打亂后的所述代碼段中各指令的實(shí)際執(zhí)行順序信息。
[0017]本發(fā)明提供的固件保護(hù)方法,通過將固件待保護(hù)代碼段中的指令打亂順序,給各指令增加跳轉(zhuǎn)指令,并將其偏移量等信息存儲(chǔ)在硬件設(shè)備外部,運(yùn)行時(shí)從外部載入偏移量表,根據(jù)偏移量表中的偏移量找到正確的指令執(zhí)行順序并執(zhí)行指令,因此,即使非法破解者繞過硬件設(shè)備芯片的內(nèi)存保護(hù)獲取到存儲(chǔ)在芯片內(nèi)部的固件的二進(jìn)制代碼,由于受保護(hù)代碼段中的指令已經(jīng)完全無序打亂,在沒有偏移量表的情況下,即使翻譯出指令代碼,也無法獲得指令正確的執(zhí)行順序,由此可以增加破解的難度,保護(hù)關(guān)鍵代碼,提高安全性。
【附圖說明】
[0018]圖1為本發(fā)明的用于固件的保護(hù)方法的第一實(shí)施例的流程圖;
[0019]圖2為本發(fā)明的用于固件的保護(hù)方法的第二實(shí)施例的流程圖;
[0020]圖3為本發(fā)明的用于固件的保護(hù)方法的第三實(shí)施例的流程圖。
【具體實(shí)施方式】
[0021]為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說明。
[0022]圖1為本發(fā)明的用于固件的保護(hù)方法的第一實(shí)施例的流程圖。其中,固件存儲(chǔ)在硬件設(shè)備的EEPROM中或者FLASH芯片中。
[0023]如圖1所示,本實(shí)施例的用于固件的保護(hù)方法包括如下步驟:首先,將固件的待保護(hù)的代碼段中的各條指令打亂順序;其次,將已打亂指令順序的代碼段中的每條指令與實(shí)際應(yīng)當(dāng)執(zhí)行的下一條指令之間的偏移量保存到偏移量表中,并將偏移量表保存在硬件設(shè)備的外部;最后,在每條指令末尾添加跳轉(zhuǎn)指令,該跳轉(zhuǎn)指令用于根據(jù)偏移量表在指令順序打亂的代碼段內(nèi)執(zhí)行指令間的正確跳轉(zhuǎn)。
[0024]例如,當(dāng)固件中的待保護(hù)的代碼段按正常執(zhí)行順序包括指令1、指令2、指令3和指令4時(shí),將匯編后的指令1-4打亂順序,假定打亂后的指令順序?yàn)橹噶?、指令4、指令3和指令2。打亂指令順序的步驟可以由計(jì)算機(jī)通過自定義算法或隨機(jī)亂序算法來自動(dòng)執(zhí)行,或者計(jì)算機(jī)也可以根據(jù)用戶指令進(jìn)行指定方式的順序打亂。
[0025]將上述指令1、指令4、指令3和指令2中每條指令語句與實(shí)際應(yīng)當(dāng)執(zhí)行的下一條指令語句之間的偏移量進(jìn)行保存。例如從指令1跳轉(zhuǎn)到指令2的偏移量記作A,從指令2跳轉(zhuǎn)到指令3的偏移量記作B,從指令3跳轉(zhuǎn)到指令4的偏移量記作C。將與各指令對(duì)應(yīng)的偏移量以文件的方式存儲(chǔ)為偏移量表或以變量的方式記錄為偏移量表,并將偏移量表存儲(chǔ)在存儲(chǔ)了上述固件的硬件設(shè)備之外的其他位置,例如存儲(chǔ)在客戶端軟件中或者服務(wù)器上等,但存儲(chǔ)的位置不限于此,還可以是移動(dòng)存儲(chǔ)設(shè)備等。當(dāng)需要提高安全等級(jí)時(shí),還可以將偏移量表加密后再進(jìn)行存儲(chǔ)。
[0026]在以上過程中,待保護(hù)的代碼段的指令正常執(zhí)行順序是默認(rèn)知曉的,代碼段中的指令在打亂順序后其實(shí)際的執(zhí)行順序也默認(rèn)知曉。
[0027]之后,在上述指令1、指令4、指令3和指令2中每條指令末尾添加跳轉(zhuǎn)指令,跳轉(zhuǎn)指令用于從偏移量表中獲得從當(dāng)前指令跳轉(zhuǎn)到實(shí)際應(yīng)當(dāng)執(zhí)行的下一條指令的偏移量并由此跳轉(zhuǎn)到該下一條指令處。
[0028]跳轉(zhuǎn)指令代碼可以為:Jmp PC+0FFSET,其中PC為程序執(zhí)行的當(dāng)前位置,OFFSET為偏移量表中的具體偏移量。
[0029]固件程序運(yùn)行時(shí),從硬件設(shè)備外部載入上述偏移量表并保存到硬件設(shè)備內(nèi)存的某個(gè)固定位置,運(yùn)行到受保護(hù)代碼段時(shí),根據(jù)偏移量表中記錄的與每條指令末尾的跳轉(zhuǎn)指令對(duì)應(yīng)
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
平原县| 安福县| 连平县| 泸州市| 古田县| 六枝特区| 内江市| 泸水县| 澜沧| 德庆县| 盘山县| 临颍县| 南华县| 新丰县| 昆山市| 朝阳区| 涞水县| 宜宾市| 四会市| 林芝县| 怀宁县| 锦屏县| 吉首市| 安新县| 天祝| 偏关县| 苏尼特左旗| 隆德县| 阳曲县| 云龙县| 禄丰县| 股票| 周口市| 神池县| 铅山县| 文安县| 巴彦淖尔市| 大埔区| 调兵山市| 宁明县| 佛教|