CN120217328A 終端軟件保護(hù)方法、裝置、終端設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì)_第1頁(yè)
CN120217328A 終端軟件保護(hù)方法、裝置、終端設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì)_第2頁(yè)
CN120217328A 終端軟件保護(hù)方法、裝置、終端設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì)_第3頁(yè)
CN120217328A 終端軟件保護(hù)方法、裝置、終端設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì)_第4頁(yè)
CN120217328A 終端軟件保護(hù)方法、裝置、終端設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

(19)國(guó)家知識(shí)產(chǎn)權(quán)局(71)申請(qǐng)人深圳市偉文無(wú)線通訊技術(shù)有限公司地址518000廣東省深圳市南山區(qū)粵海街道創(chuàng)業(yè)路社區(qū)南海大道2616號(hào)粵海大廈中座十七層(72)發(fā)明人徐永亮宋繼海楊純文(74)專利代理機(jī)構(gòu)深圳市深可信專利代理有限公司44599專利代理師李宇繪GO6FGO6F(54)發(fā)明名稱終端軟件保護(hù)方法、裝置、終端設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì)本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種終端軟件保護(hù)方法、裝置、終端設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì),在檢測(cè)到開(kāi)機(jī)指令時(shí),首先判斷是否為首次開(kāi)機(jī),若非首次開(kāi)機(jī),則獲取邏輯代碼模塊串中每個(gè)模塊的校驗(yàn)碼及開(kāi)機(jī)次數(shù),當(dāng)檢測(cè)到任意模塊的校驗(yàn)碼不為初始校驗(yàn)碼時(shí),依據(jù)開(kāi)機(jī)次數(shù)和校驗(yàn)順序?qū)δK串進(jìn)行循環(huán)校驗(yàn)。只有當(dāng)所有模塊校驗(yàn)均通過(guò)時(shí),才執(zhí)行開(kāi)機(jī)操作,若存在任意模塊校驗(yàn)未通過(guò),則停止開(kāi)機(jī)。本申請(qǐng)通過(guò)循環(huán)校驗(yàn)機(jī)制,有效防止終端軟件被篡改,確保設(shè)備在軟件安全可靠的狀態(tài)下運(yùn)行,增強(qiáng)了終端2當(dāng)檢測(cè)到開(kāi)機(jī)指令時(shí),判斷所述開(kāi)機(jī)指令是否屬于首次開(kāi)機(jī)指令;當(dāng)確定所述開(kāi)機(jī)指令不屬于首次開(kāi)機(jī)指令時(shí),獲取邏輯代碼模塊串中每個(gè)邏輯代碼模塊對(duì)應(yīng)的校驗(yàn)碼及開(kāi)機(jī)次數(shù);當(dāng)檢測(cè)到所述邏輯代碼模塊串中的任意一個(gè)邏輯代碼模塊的校驗(yàn)碼不為初始校驗(yàn)碼時(shí),根據(jù)所述開(kāi)機(jī)次數(shù)和校驗(yàn)順序?qū)λ鲞壿嫶a模塊串進(jìn)行循環(huán)校驗(yàn);當(dāng)確定所述邏輯代碼模塊串中的每個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果均為校驗(yàn)通過(guò)時(shí),執(zhí)行所述開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作;當(dāng)確定所述邏輯代碼模塊串中存在任意一個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果為校驗(yàn)未通過(guò)時(shí),則停止執(zhí)行所述開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作。2.根據(jù)權(quán)利要求1所述的終端軟件保護(hù)方法,其特征在于,所述根據(jù)所述開(kāi)機(jī)次數(shù)和校驗(yàn)順序?qū)λ鲞壿嫶a模塊串進(jìn)行循環(huán)校驗(yàn)包括:獲取第一個(gè)模塊對(duì)應(yīng)的第一開(kāi)機(jī)次數(shù),及所述邏輯代碼模塊串中的第N個(gè)模塊的第N開(kāi)當(dāng)確定所述第N開(kāi)機(jī)次數(shù)比所述第一開(kāi)機(jī)次數(shù)小1時(shí),根據(jù)所述第一個(gè)模塊的第一校驗(yàn)碼對(duì)所述第一個(gè)模塊進(jìn)行校驗(yàn)碼校驗(yàn),得到第一校驗(yàn)結(jié)果;當(dāng)確定所述第一校驗(yàn)結(jié)果為校驗(yàn)通過(guò)時(shí),判斷第二個(gè)模塊的第二開(kāi)機(jī)次數(shù)和所述第一開(kāi)機(jī)次數(shù)是否一致,其中第二個(gè)模塊為所述邏輯代碼模塊串與所述第一個(gè)模塊相鄰的邏輯代碼模塊,且排序在所述第一個(gè)模塊的后面;當(dāng)確定所述第二開(kāi)機(jī)次數(shù)和所述第一開(kāi)機(jī)次數(shù)一致時(shí),根據(jù)所述第一校驗(yàn)碼計(jì)算所述第二個(gè)模塊對(duì)應(yīng)的第二校驗(yàn)碼,及根據(jù)所述第二校驗(yàn)碼對(duì)所述第二個(gè)模塊進(jìn)行校驗(yàn)碼校當(dāng)確定第二校驗(yàn)結(jié)果為校驗(yàn)通過(guò)時(shí),根據(jù)所述校驗(yàn)順序重復(fù)執(zhí)行上述操作,直至所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊均校驗(yàn)完成,或所述邏輯代碼模塊串中存在任意一個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果為校驗(yàn)未通過(guò)。3.根據(jù)權(quán)利要求1所述的終端軟件保護(hù)方法,其特征在于,所述方法還包括:當(dāng)檢測(cè)到所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的校驗(yàn)碼為初始校驗(yàn)碼時(shí),且所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的開(kāi)機(jī)次數(shù)為初始開(kāi)機(jī)次數(shù)時(shí),控制所述邏輯代碼模塊串中的首個(gè)啟動(dòng)模塊進(jìn)入Fastboot模式;在所述Fastboot模式下獲取所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的壞塊信息,及根據(jù)所述壞塊信息和所述CPU標(biāo)識(shí)符生成組合Key;將所述組合Key返回至外部生產(chǎn)工具,以使得所述外部生產(chǎn)工具基于所述組合Key計(jì)算所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的第一目標(biāo)校驗(yàn)碼,并返回校驗(yàn)碼序列;當(dāng)接收到所述校驗(yàn)碼序列,根據(jù)所述組合Key重新計(jì)算所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的第二目標(biāo)校驗(yàn)碼;將所述第一目標(biāo)校驗(yàn)碼和所述第二目標(biāo)校驗(yàn)碼進(jìn)行比對(duì);當(dāng)確定所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的所述第一目標(biāo)校驗(yàn)碼與所述第二目標(biāo)校驗(yàn)碼均匹配時(shí),將所述校驗(yàn)碼序列進(jìn)行存儲(chǔ)。34.根據(jù)權(quán)利要求3所述的終端軟件保護(hù)方法,其特征在于,所述方法還包括:獲取CPU標(biāo)識(shí)符,及根據(jù)所述壞塊信息確定當(dāng)前模塊的目標(biāo)壞塊序號(hào)和目標(biāo)壞塊類型;將所述CPU標(biāo)識(shí)符、所述目標(biāo)壞塊序號(hào)和所述目標(biāo)壞塊類型生成目標(biāo)組合Key;根據(jù)上一模塊校驗(yàn)碼和所述目標(biāo)組合Key計(jì)算所述當(dāng)前模塊的當(dāng)前模塊校驗(yàn)碼。5.根據(jù)權(quán)利要求3所述的終端軟件保護(hù)方法,其特征在于,所述方法還包括:根據(jù)所述壞塊信息確定所述邏輯代碼模塊串的壞塊數(shù)量;當(dāng)確定所述壞塊數(shù)量不滿足預(yù)設(shè)數(shù)量閾值時(shí),從所述邏輯代碼模塊串中隨機(jī)選擇目標(biāo)數(shù)量的好塊,并將所述好塊標(biāo)記為壞塊,所述目標(biāo)數(shù)量根據(jù)所述壞塊數(shù)量和所述預(yù)設(shè)數(shù)量閾值確定。6.根據(jù)權(quán)利要求1所述的終端軟件保護(hù)方法,其特征在于,所述方法還包括:當(dāng)確定第一目標(biāo)壞塊的壞塊類型為第一壞塊類型時(shí),則對(duì)所述第一目標(biāo)壞塊進(jìn)行第一次擦寫(xiě)操作,所述第一目標(biāo)壞塊為所述邏輯代碼模塊串中的任意一個(gè)壞塊;當(dāng)確定擦寫(xiě)結(jié)果為擦寫(xiě)成功后,對(duì)所述第一目標(biāo)壞塊進(jìn)行第二次擦寫(xiě)操作,直至滿足預(yù)設(shè)擦寫(xiě)次數(shù),或存在任意一個(gè)擦寫(xiě)結(jié)果為擦寫(xiě)失敗;當(dāng)確定所述第一目標(biāo)壞塊的壞塊類型為第二壞塊類型時(shí),獲取所述第一目標(biāo)壞塊的第一個(gè)頁(yè)的備用區(qū)域;檢查所述第一個(gè)頁(yè)的備用區(qū)域的數(shù)據(jù)是否為0xFF;當(dāng)確定所述第一個(gè)頁(yè)的備用區(qū)域的數(shù)據(jù)不為0xFF時(shí),則判定所述第一目標(biāo)壞塊的檢測(cè)結(jié)果為檢測(cè)通過(guò);當(dāng)確定所述第一個(gè)頁(yè)的備用區(qū)域的數(shù)據(jù)為0xFF時(shí),則判定所述第一目標(biāo)壞塊的檢測(cè)結(jié)7.根據(jù)權(quán)利要求6所述的終端軟件保護(hù)方法,其特征在于,所述方法還包括:當(dāng)確定所述第一目標(biāo)壞塊在所述預(yù)設(shè)擦寫(xiě)次數(shù)對(duì)應(yīng)的擦寫(xiě)結(jié)果均為擦寫(xiě)成功時(shí),獲取第二目標(biāo)壞塊的壞塊類型;根據(jù)所述第二目標(biāo)壞塊的壞塊類型對(duì)所述第二目標(biāo)壞塊執(zhí)行擦寫(xiě)操作。指令檢測(cè)模塊,用于當(dāng)檢測(cè)到開(kāi)機(jī)指令時(shí),判斷所述開(kāi)機(jī)指令是否屬于首次開(kāi)機(jī)指令;數(shù)據(jù)獲取模塊,用于當(dāng)確定所述開(kāi)機(jī)指令不屬于首次開(kāi)機(jī)指令時(shí),獲取邏輯代碼模塊串中每個(gè)邏輯代碼模塊對(duì)應(yīng)的校驗(yàn)碼及開(kāi)機(jī)次數(shù);循環(huán)校驗(yàn)?zāi)K,用于當(dāng)檢測(cè)到所述邏輯代碼模塊串中的任意一個(gè)邏輯代碼模塊的校驗(yàn)碼不為初始校驗(yàn)碼時(shí),根據(jù)所述開(kāi)機(jī)次數(shù)和校驗(yàn)順序?qū)λ鲞壿嫶a模塊串進(jìn)行循環(huán)校開(kāi)機(jī)執(zhí)行模塊,用于當(dāng)確定所述邏輯代碼模塊串中的每個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果均為校驗(yàn)通過(guò)時(shí),執(zhí)行所述開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作;開(kāi)機(jī)停止模塊,用于當(dāng)確定所述邏輯代碼模塊串中存在任意一個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果為校驗(yàn)未通過(guò)時(shí),則停止執(zhí)行所述開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作。9.一種終端設(shè)備,其特征在于,包括存儲(chǔ)器、處理器以及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)權(quán)利要求1至7中任一項(xiàng)所述的終端軟件保護(hù)方法的步驟。410.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求1至7中任一項(xiàng)所述的終端軟件保護(hù)方法的步驟。5終端軟件保護(hù)方法、裝置、終端設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì)技術(shù)領(lǐng)域[0001]本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種終端軟計(jì)算機(jī)存儲(chǔ)介質(zhì)。背景技術(shù)[0002]在當(dāng)今數(shù)字化時(shí)代,終端設(shè)備如隨身WIFI等廣泛應(yīng)用于人們的日常生活和工作中。然而,隨著技術(shù)的不斷發(fā)展和黑客攻擊手段的日益復(fù)雜,黑客不僅有能力破解終端軟件,還可能通過(guò)傳播破解方法來(lái)擴(kuò)大其攻擊范圍,對(duì)終端設(shè)備的安全運(yùn)行構(gòu)成嚴(yán)重威脅。具體而言,某些終端設(shè)備,如隨身WIFI,其內(nèi)部使用的各種芯片中,僅有CPU能夠提供唯一的機(jī)這樣的唯一標(biāo)識(shí)。因此,黑客在嘗試破解終端軟件時(shí),往往會(huì)將CPUID作為攻擊的切入點(diǎn),利用這一唯一標(biāo)識(shí)與硬件的綁定關(guān)系進(jìn)行針對(duì)性的破解活動(dòng)。[0003]傳統(tǒng)的終端軟件保護(hù)方法主要集中在對(duì)鏡像文件的燒錄過(guò)程進(jìn)行保護(hù),以確保軟件在終端設(shè)備上的正確安裝和運(yùn)行。然而黑客可能通過(guò)利用軟件漏洞,獲得操作系統(tǒng)的shell權(quán)限,進(jìn)而繞過(guò)針對(duì)燒錄過(guò)程的防護(hù)措施,直接替換操作系統(tǒng)的程序,不僅破壞了終端軟件的完整性,還可能導(dǎo)致用戶數(shù)據(jù)泄露、設(shè)備功能失效等嚴(yán)重后果。發(fā)明內(nèi)容[0004]為了克服現(xiàn)有技術(shù)的不足,本發(fā)明提供一種終端軟件保護(hù)方法、裝置、終端設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì),通過(guò)循環(huán)校驗(yàn)機(jī)制和動(dòng)態(tài)開(kāi)機(jī)次數(shù)的使用,提升了終端設(shè)備的可靠性,確保了設(shè)備在開(kāi)機(jī)過(guò)程中的正常運(yùn)行。[0005]本申請(qǐng)的第一方面提供一種終端軟件保護(hù)方法,所述方法包括:當(dāng)檢測(cè)到開(kāi)機(jī)指令時(shí),判斷所述開(kāi)機(jī)指令是否屬于首次開(kāi)機(jī)指令;當(dāng)確定所述開(kāi)機(jī)指令不屬于首次開(kāi)機(jī)指令時(shí),獲取邏輯代碼模塊串中每個(gè)邏輯代碼模塊對(duì)應(yīng)的校驗(yàn)碼及開(kāi)機(jī)次數(shù);當(dāng)檢測(cè)到所述邏輯代碼模塊串中的任意一個(gè)邏輯代碼模塊的校驗(yàn)碼不為初始校驗(yàn)碼時(shí),根據(jù)所述開(kāi)機(jī)次數(shù)和校驗(yàn)順序?qū)λ鲞壿嫶a模塊串進(jìn)行循環(huán)校驗(yàn);當(dāng)確定所述邏輯代碼模塊串中的每個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果均為校驗(yàn)通過(guò)時(shí),執(zhí)行所述開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作;當(dāng)確定所述邏輯代碼模塊串中存在任意一個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果為校驗(yàn)未通過(guò)時(shí),則停止執(zhí)行所述開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作。[0006]在一個(gè)可選的實(shí)施方式中,所述根據(jù)所述開(kāi)機(jī)次數(shù)和校驗(yàn)順序?qū)λ鲞壿嫶a模塊串進(jìn)行循環(huán)校驗(yàn)包括:獲取第一個(gè)模塊對(duì)應(yīng)的第一開(kāi)機(jī)次數(shù),及所述邏輯代碼模塊串中的第N個(gè)模塊的當(dāng)確定所述第N開(kāi)機(jī)次數(shù)比所述第一開(kāi)機(jī)次數(shù)小1時(shí),根據(jù)所述第一個(gè)模塊的第一6校驗(yàn)碼對(duì)所述第一個(gè)模塊進(jìn)行校驗(yàn)碼校驗(yàn),得到第一校驗(yàn)結(jié)果;當(dāng)確定所述第一校驗(yàn)結(jié)果為校驗(yàn)通過(guò)時(shí),判斷第二個(gè)模塊的第二開(kāi)機(jī)次數(shù)和所述第一開(kāi)機(jī)次數(shù)是否一致,其中第二個(gè)模塊為所述邏輯代碼模塊串與所述第一個(gè)模塊相鄰的邏輯代碼模塊,且排序在所述第一個(gè)模塊的后面;當(dāng)確定所述第二開(kāi)機(jī)次數(shù)和所述第一開(kāi)機(jī)次數(shù)一致時(shí),根據(jù)所述第一校驗(yàn)碼計(jì)算所述第二個(gè)模塊對(duì)應(yīng)的第二校驗(yàn)碼,及根據(jù)所述第二校驗(yàn)碼對(duì)所述第二個(gè)模塊進(jìn)行校驗(yàn)碼當(dāng)確定第二校驗(yàn)結(jié)果為校驗(yàn)通過(guò)時(shí),根據(jù)所述校驗(yàn)順序重復(fù)執(zhí)行上述操作,直至所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊均校驗(yàn)完成,或所述邏輯代碼模塊串中存在任意一個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果為校驗(yàn)未通過(guò)。當(dāng)檢測(cè)到所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的校驗(yàn)碼為初始校驗(yàn)碼時(shí),且所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的開(kāi)機(jī)次數(shù)為初始開(kāi)機(jī)次數(shù)時(shí),控制所述邏輯代碼模塊串中的首個(gè)啟動(dòng)模塊進(jìn)入Fastboot模式;在所述Fastboot模式下獲取所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的壞塊信根據(jù)所述壞塊信息和所述CPU標(biāo)識(shí)符生成組合Key;將所述組合Key返回至外部生產(chǎn)工具,以使得所述外部生產(chǎn)工具基于所述組合Key計(jì)算所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的第一目標(biāo)校驗(yàn)碼,并返回校驗(yàn)碼序列;當(dāng)接收到所述校驗(yàn)碼序列,根據(jù)所述組合Key重新計(jì)算所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的第二目標(biāo)校驗(yàn)碼;將所述第一目標(biāo)校驗(yàn)碼和所述第二目標(biāo)校驗(yàn)碼進(jìn)行比對(duì);當(dāng)確定所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的所述第一目標(biāo)校驗(yàn)碼與所述第二目標(biāo)校驗(yàn)碼均匹配時(shí),將所述校驗(yàn)碼序列進(jìn)行存儲(chǔ)。[0008]在一個(gè)可選的實(shí)施方式中,所述方法還包括:獲取CPU標(biāo)識(shí)符,及根據(jù)所述壞塊信息確定當(dāng)前模塊的目標(biāo)壞塊序號(hào)和目標(biāo)壞塊將所述CPU標(biāo)識(shí)符、所述目標(biāo)壞塊序號(hào)和所述目標(biāo)壞塊類型生成目標(biāo)組合Key;根據(jù)上一模塊校驗(yàn)碼和所述目標(biāo)組合Key計(jì)算所述當(dāng)前模塊的當(dāng)前模塊校驗(yàn)碼。根據(jù)所述壞塊信息確定所述邏輯代碼模塊串的壞塊數(shù)量;當(dāng)確定所述壞塊數(shù)量不滿足預(yù)設(shè)數(shù)量閾值時(shí),從所述邏輯代碼模塊串中隨機(jī)選擇目標(biāo)數(shù)量的好塊,并將所述好塊標(biāo)記為壞塊,所述目標(biāo)數(shù)量根據(jù)所述壞塊數(shù)量和所述預(yù)設(shè)數(shù)量閾值確定。當(dāng)確定第一目標(biāo)壞塊的壞塊類型為第一壞塊類型時(shí),則對(duì)所述第一目標(biāo)壞塊進(jìn)行第一次擦寫(xiě)操作,所述第一目標(biāo)壞塊為所述邏輯代碼模塊串中的任意一個(gè)壞塊;當(dāng)確定擦寫(xiě)結(jié)果為擦寫(xiě)成功后,對(duì)所述第一目標(biāo)壞塊進(jìn)行第二次擦寫(xiě)操作,直至滿足預(yù)設(shè)擦寫(xiě)次數(shù),或存在任意一個(gè)擦寫(xiě)結(jié)果為擦寫(xiě)失敗;7當(dāng)確定所述第一目標(biāo)壞塊的壞塊類型為第二壞塊類型時(shí),獲取所述第一目標(biāo)壞塊的第一個(gè)頁(yè)的備用區(qū)域;檢查所述第一個(gè)頁(yè)的備用區(qū)域的數(shù)據(jù)是否為0xFF;當(dāng)確定所述第一個(gè)頁(yè)的備用區(qū)域的數(shù)據(jù)不為0xFF時(shí),則判定所述第一目標(biāo)壞塊的檢測(cè)結(jié)果為檢測(cè)通過(guò);當(dāng)確定所述第一個(gè)頁(yè)的備用區(qū)域的數(shù)據(jù)為0xFF時(shí),則判定所述第一目標(biāo)壞塊的檢測(cè)結(jié)果為檢測(cè)失敗,終止所述開(kāi)機(jī)指令。[0011]在一個(gè)可選的實(shí)施方式中,所述方法還包括:當(dāng)確定所述第一目標(biāo)壞塊在所述預(yù)設(shè)擦寫(xiě)次數(shù)對(duì)應(yīng)的擦寫(xiě)結(jié)果均為擦寫(xiě)成功時(shí),獲取第二目標(biāo)壞塊的壞塊類型;根據(jù)所述第二目標(biāo)壞塊的壞塊類型對(duì)所述第二目標(biāo)壞塊執(zhí)行擦寫(xiě)操作。[0012]本申請(qǐng)第二方面提供一種終端軟件保護(hù)方法裝置,所述裝置包括:指令檢測(cè)模塊,用于當(dāng)檢測(cè)到開(kāi)機(jī)指令時(shí),判斷所述開(kāi)機(jī)指令是否屬于首次開(kāi)機(jī)指令;數(shù)據(jù)獲取模塊,用于當(dāng)確定所述開(kāi)機(jī)指令不屬于首次開(kāi)機(jī)指令時(shí),獲取邏輯代碼模塊串中每個(gè)邏輯代碼模塊對(duì)應(yīng)的校驗(yàn)碼及開(kāi)機(jī)次數(shù);循環(huán)校驗(yàn)?zāi)K,用于當(dāng)檢測(cè)到所述邏輯代碼模塊串中的任意一個(gè)邏輯代碼模塊的校驗(yàn)碼不為初始校驗(yàn)碼時(shí),根據(jù)所述開(kāi)機(jī)次數(shù)和校驗(yàn)順序?qū)λ鲞壿嫶a模塊串進(jìn)行循環(huán)校驗(yàn);開(kāi)機(jī)執(zhí)行模塊,用于當(dāng)確定所述邏輯代碼模塊串中的每個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果均為校驗(yàn)通過(guò)時(shí),執(zhí)行所述開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作;開(kāi)機(jī)停止模塊,用于當(dāng)確定所述邏輯代碼模塊串中存在任意一個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果為校驗(yàn)未通過(guò)時(shí),則停止執(zhí)行所述開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作。[0013]本申請(qǐng)第三方面提供一種終端設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)所述終端軟件保護(hù)方法的步驟。[0014]本申請(qǐng)第四方面提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述終端軟件保護(hù)方法的步驟。[0015]綜上所述,本申請(qǐng)?zhí)峁┑慕K端軟件保護(hù)方法、裝置、終端設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì),通過(guò)本申請(qǐng)?jiān)跈z測(cè)到開(kāi)機(jī)指令時(shí),首先判斷是否為首次開(kāi)機(jī)。非首次開(kāi)機(jī)時(shí),獲取邏輯代碼模塊串中每個(gè)模塊的校驗(yàn)碼及開(kāi)機(jī)次數(shù),當(dāng)檢測(cè)到邏輯代碼模塊串中的任意一個(gè)邏輯代碼模塊的校驗(yàn)碼不為初始校驗(yàn)碼時(shí),觸發(fā)循環(huán)校驗(yàn)機(jī)制,根據(jù)開(kāi)機(jī)次數(shù)和預(yù)設(shè)的校驗(yàn)順序,對(duì)邏輯代碼模塊串進(jìn)行循環(huán)校驗(yàn),通過(guò)逐模塊驗(yàn)證開(kāi)機(jī)次數(shù)和校驗(yàn)碼的關(guān)聯(lián)性及正確性,確保模塊未被篡改,僅當(dāng)所有邏輯代碼模塊校驗(yàn)均通過(guò)時(shí),才執(zhí)行開(kāi)機(jī)操作,當(dāng)存在任意模塊校驗(yàn)未通過(guò),則停止開(kāi)機(jī),防止設(shè)備在軟件不完整或被篡改狀態(tài)下運(yùn)行。本申請(qǐng)通過(guò)循環(huán)校驗(yàn)機(jī)制,有效防止黑客通過(guò)篡改軟件模塊繞過(guò)傳統(tǒng)防護(hù)措施,保護(hù)終端軟件完整性,并且能夠能精準(zhǔn)識(shí)別并定位被篡改的邏輯代碼模塊,為后續(xù)維護(hù)和修復(fù)提供便利。8附圖說(shuō)明[0016]圖1是本申請(qǐng)實(shí)施例示出的一種終端軟件保護(hù)方法的流程示意圖;圖2是本申請(qǐng)實(shí)施例示出的一種終端軟件保護(hù)裝置的功能模塊圖;圖3是本申請(qǐng)實(shí)施例示出的一種終端設(shè)備的結(jié)構(gòu)示意圖。具體實(shí)施方式[0017]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)一步說(shuō)明。[0018]以下將結(jié)合實(shí)施例和附圖對(duì)本發(fā)明的構(gòu)思、具體結(jié)構(gòu)及產(chǎn)生的技術(shù)效果進(jìn)行清明的一部分實(shí)施例,而不是全部實(shí)施例,基于本發(fā)明的實(shí)施例,本領(lǐng)域的技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的前提下所獲得的其他實(shí)施例,均屬于本發(fā)明保護(hù)的范圍。另外,專利中涉及到的所有聯(lián)接/連接關(guān)系,并非單指構(gòu)件直接相接,而是指可根據(jù)具體實(shí)施情況,通過(guò)添加或減少聯(lián)接輔件,來(lái)組成更優(yōu)的聯(lián)接結(jié)構(gòu)。本發(fā)明創(chuàng)造中的各個(gè)技術(shù)特征,在不互相矛盾沖突的前提下可以交互組合。[0019]在本申請(qǐng)實(shí)施例中,從終端設(shè)備對(duì)終端軟件保護(hù)方法進(jìn)行進(jìn)行闡述,終端設(shè)備使用Nandflash進(jìn)行存儲(chǔ)。[0020]在一些實(shí)施例中,中創(chuàng)建三個(gè)專用分區(qū),分別為壞塊信息分區(qū)、模塊校驗(yàn)分區(qū)和開(kāi)機(jī)計(jì)數(shù)分區(qū)。其中,壞塊信息分區(qū)用于按5字節(jié)/條記錄壞塊信息,也即壞塊信息可以包括壞塊序號(hào)和壞塊類型。在本申請(qǐng)實(shí)施例中,將壞塊定義為兩類,一類為能夠穩(wěn)定失敗的壞塊(稱為壞塊類型1),另一類為不會(huì)穩(wěn)定失敗的壞塊(稱為壞塊類型0)。其中,壞塊類型0所代表的壞塊可以指的真正的壞塊,也可以是本申請(qǐng)中為了增強(qiáng)安全性而特意標(biāo)記為壞塊的好塊。壞塊的存儲(chǔ)方式為每五個(gè)字節(jié)對(duì)應(yīng)一個(gè)壞塊的格式,其中前四個(gè)字節(jié)用于存儲(chǔ)壞塊的壞塊序號(hào),而第五個(gè)字節(jié)則用于標(biāo)識(shí)壞塊的壞塊類型。需要說(shuō)明的是,上述壞塊的存儲(chǔ)方式僅是其中一種存儲(chǔ)方式,也還可以通過(guò)其他的方式存儲(chǔ),具體不做限定。模塊校驗(yàn)分區(qū)則用于存儲(chǔ)校驗(yàn)邏輯代碼模塊串中每個(gè)邏輯代碼模塊校驗(yàn)碼及對(duì)應(yīng)的開(kāi)機(jī)次數(shù)。其中,所述邏輯代碼模塊串可以表現(xiàn)以表現(xiàn)為一個(gè)linux下的程序,如開(kāi)機(jī)后撥號(hào)程序,負(fù)責(zé)處理UI的程序。模塊按一個(gè)串序列進(jìn)行循環(huán)校驗(yàn),以高通為例,啟動(dòng)時(shí)可以布置這樣的模塊串sbl→lk→boot→撥號(hào)程序→http服務(wù)器程序,每一個(gè)模塊串的成員有一個(gè)校驗(yàn)碼,由上一個(gè)模塊的校驗(yàn)碼做輸入,計(jì)算得到對(duì)應(yīng)的校驗(yàn)碼并填入模塊校驗(yàn)分區(qū)中進(jìn)行存儲(chǔ),供下一個(gè)模塊獲取。同時(shí)每一個(gè)模塊需要根據(jù)上上個(gè)模塊的校驗(yàn)碼計(jì)算上一個(gè)模塊的校驗(yàn)碼,來(lái)對(duì)上一個(gè)模塊進(jìn)行校驗(yàn)。開(kāi)機(jī)次數(shù)分區(qū)則用于記錄當(dāng)前開(kāi)機(jī)次數(shù)及各模塊校驗(yàn)信息對(duì)應(yīng)的開(kāi)機(jī)次數(shù)。每次開(kāi)機(jī)時(shí),獲取Flash獲得一個(gè)數(shù)值,增加1之后,再寫(xiě)回去。也即開(kāi)機(jī)次數(shù)的更新邏輯為當(dāng)前模塊的開(kāi)機(jī)次數(shù)=前一模塊的開(kāi)機(jī)次數(shù)+1,末模塊與首個(gè)模塊的開(kāi)機(jī)次數(shù)差為1。[0021]參照?qǐng)D1所示,為本申請(qǐng)實(shí)施例示出的一種終端軟件保護(hù)方法的流程示意圖,所述終端軟件保護(hù)方法包括以下步驟。[0022]S11,當(dāng)檢測(cè)到開(kāi)機(jī)指令時(shí),判斷所述開(kāi)機(jī)指令是否屬于首次開(kāi)機(jī)指令。[0023]在一些實(shí)施例中,終端設(shè)備接收到用戶操作的開(kāi)機(jī)指令時(shí),首先會(huì)判斷接收到的9開(kāi)機(jī)指令是否屬于首次開(kāi)機(jī)指令,也即終端設(shè)備是否首次開(kāi)機(jī)。在首次開(kāi)機(jī)之前,終端設(shè)備可以預(yù)先設(shè)置邏輯代碼模塊串中每個(gè)邏輯代碼模塊對(duì)應(yīng)的校驗(yàn)碼均設(shè)置為空或固定值,例如0xFFFFFFF,同時(shí)將邏輯代碼模塊串中每個(gè)邏輯代碼模塊對(duì)應(yīng)的開(kāi)機(jī)次數(shù)也設(shè)置了0xFFFFFFF,也即當(dāng)邏輯代碼模塊串中每個(gè)邏輯代碼模塊對(duì)應(yīng)的校驗(yàn)碼均為初始校驗(yàn)碼(例如0xFFFFFFF),開(kāi)機(jī)次數(shù)均為初始開(kāi)機(jī)次數(shù)(例如0xFFFFFFF)時(shí),可以確定終端設(shè)備屬于首次開(kāi)機(jī)。[0024]當(dāng)確定終端設(shè)備屬于首次開(kāi)機(jī)時(shí),邏輯代碼模塊串中第一個(gè)模塊讀取到其他模塊的校驗(yàn)信息和開(kāi)機(jī)次數(shù)均為0xFFFFFFF,則確定開(kāi)機(jī)指令屬于首次開(kāi)機(jī)指令。其中,第一個(gè)模塊是指邏輯代碼模塊串中排序第一的邏輯代碼模塊,其他模塊是指邏輯代碼模塊串中處理第一個(gè)模塊之外剩余的邏輯代碼模塊。當(dāng)確定開(kāi)機(jī)指令屬于首次開(kāi)機(jī)指令時(shí),終端設(shè)備控制第一個(gè)模塊進(jìn)入Fastboot模式,由外部生產(chǎn)工具通過(guò)Fastboot接口輸入正確的校驗(yàn)碼來(lái)初始化。[0025]需要說(shuō)明的是,什么模塊需要進(jìn)行保護(hù),就將什么模塊就添加至邏輯代碼模塊串。[0026]S12,當(dāng)確定所述開(kāi)機(jī)指令不屬于首次開(kāi)機(jī)指令時(shí),獲取邏輯代碼模塊串中每個(gè)邏輯代碼模塊對(duì)應(yīng)的校驗(yàn)碼及開(kāi)機(jī)次數(shù)。[0027]當(dāng)確定開(kāi)機(jī)指令不屬于首次開(kāi)機(jī)指令,也即終端設(shè)備不屬于首次開(kāi)機(jī)時(shí),同樣獲取邏輯代碼模塊串中每個(gè)邏輯代碼模塊對(duì)應(yīng)的校驗(yàn)碼及開(kāi)機(jī)次數(shù),根據(jù)校驗(yàn)碼和開(kāi)機(jī)次數(shù)對(duì)對(duì)應(yīng)邏輯代碼模塊進(jìn)行校驗(yàn)。獲取CPU標(biāo)識(shí)符,及根據(jù)所述壞塊信息確定當(dāng)前模塊的目標(biāo)壞塊序號(hào)和目標(biāo)壞塊將所述CPU標(biāo)識(shí)符、所述目標(biāo)壞塊序號(hào)和所述目標(biāo)壞塊類型生成目標(biāo)組合Key;根據(jù)上一模塊校驗(yàn)碼和所述目標(biāo)組合Key計(jì)算所述當(dāng)前模塊的當(dāng)前模塊校驗(yàn)碼。[0029]在一些實(shí)施例中,終端設(shè)備可以維護(hù)一個(gè)壞塊表(BadBlockTable,BBT),記錄了所有已知的壞塊信息。通過(guò)查詢壞塊表,通過(guò)直接查詢獲取壞塊表獲取壞塊信息,確定邏輯代碼模塊串中哪些邏輯代碼模塊屬于壞塊。[0030]在NandFlash等終端設(shè)備中,每個(gè)塊(Block)通常包含多個(gè)頁(yè)(Page),而每個(gè)頁(yè)除了數(shù)據(jù)區(qū)外,還有一個(gè)額外的區(qū)域稱為SpareArea(或稱為00B,Out-Of-Band),且SpareArea中通常包含一些元數(shù)據(jù),如ECC校驗(yàn)碼、壞塊標(biāo)記等。當(dāng)確定終端設(shè)備中不存在壞塊表時(shí),或者驗(yàn)證壞塊表的準(zhǔn)確性時(shí),則遍歷邏輯代碼模塊串中的每個(gè)邏輯代碼模塊的第一個(gè)頁(yè)的備用區(qū)域(SpareArea)中的壞塊標(biāo)記來(lái)確定壞塊。具體的,對(duì)于每個(gè)塊,獲取其第一個(gè)頁(yè)的SpareArea,并檢查特定字節(jié)的值。如果該值不等于0xFF(或根據(jù)具體設(shè)備的規(guī)范,其他表示壞塊的標(biāo)記值),則該塊被視為壞塊。[0031]終端設(shè)備可以根據(jù)預(yù)設(shè)次數(shù)閾值(例如,3次)預(yù)先對(duì)邏輯代碼模塊串中每個(gè)壞塊模塊進(jìn)行連續(xù)擦寫(xiě)操作,如果每次擦寫(xiě)操作的擦寫(xiě)結(jié)果為擦寫(xiě)失敗時(shí),則將該邏輯代碼模塊的模塊類型確定為壞塊類型1,否則標(biāo)記為壞塊類型0。由于壞塊信息包括壞塊序號(hào)和壞塊類型,為了便于理解區(qū)分,將當(dāng)前模塊的模塊序號(hào)稱為目標(biāo)壞塊序號(hào),及將當(dāng)前模塊的模塊類型稱為目標(biāo)壞塊類型。在當(dāng)前模塊,當(dāng)需要對(duì)當(dāng)前模塊進(jìn)行校驗(yàn)碼校驗(yàn)時(shí),終端設(shè)備可以將壞塊信息、CPU標(biāo)識(shí)符(以下簡(jiǎn)稱為CPUID)進(jìn)行聯(lián)合,作為組合Key,并選擇任意一種給加密算法計(jì)算校驗(yàn)碼,也即根據(jù)目標(biāo)壞塊序號(hào)、目標(biāo)壞塊類型和CPUID生成目標(biāo)組合Key。在本申請(qǐng)實(shí)施例中,為了便于理解本申請(qǐng)的發(fā)明思想,其中加密算法以HmacSHA1為例進(jìn)行闡述。其中,組合Key指的是將多個(gè)信息字段按預(yù)設(shè)格式拼接成一個(gè)連續(xù)的二進(jìn)制數(shù)據(jù)流,作為加密算法HmacSHA1的輸入密鑰,確保校驗(yàn)碼的生成具有唯一性和不可篡改性。預(yù)設(shè)格度根據(jù)實(shí)際CPUID進(jìn)行調(diào)整。具體的,終端設(shè)備可以根據(jù)數(shù)據(jù)類型將壞塊序號(hào)、壞塊類型和CPUID進(jìn)行拼接作為組合Key,也即將壞塊序號(hào)轉(zhuǎn)換為4字節(jié)的大端序二進(jìn)制數(shù)據(jù)(如Python的to_bytes(4,'big’)),及將壞塊類型轉(zhuǎn)換為1字節(jié)的二進(jìn)制數(shù)據(jù)(如to_bytes(1,'big')),然后和CPUID直接拼接;或直接將壞塊序號(hào)、壞塊類型和CPUID順序依次連接所有字段形成連續(xù)的二進(jìn)制數(shù)據(jù)流作為組合Key,也即壞塊1→壞塊2→...→CPUID。[0032]需要說(shuō)明的是,壞塊數(shù)量需要滿足預(yù)設(shè)數(shù)量閾值。為了便于理解本申請(qǐng)的發(fā)明思想,本申請(qǐng)實(shí)施例中的預(yù)設(shè)數(shù)量閾值以4為例進(jìn)行闡述。組合Key具體為壞塊1序號(hào)(4個(gè)字節(jié))+壞塊1類型(1個(gè)字節(jié))+壞塊2序號(hào)(4個(gè)字節(jié))+壞塊2類型(1個(gè)字節(jié))+壞塊3序號(hào)(4個(gè)字節(jié))+壞塊3類型(1個(gè)字節(jié))+壞塊4序號(hào)(4個(gè)字節(jié))+壞塊4類型(1個(gè)字節(jié))+CPUID。[0033]進(jìn)一步,終端設(shè)備可以獲取上一模塊的校驗(yàn)碼(稱為上一模塊校驗(yàn)碼),根據(jù)上一模塊校驗(yàn)碼和目標(biāo)組合Key計(jì)算當(dāng)前模塊的校驗(yàn)碼,稱為當(dāng)前模塊校驗(yàn)碼。其中,上一模塊為邏輯代碼模塊串中與當(dāng)前模塊相鄰的上一個(gè)邏輯代碼模塊。具體的,將上一模塊校驗(yàn)碼和目標(biāo)組合Key輸入至HmacSHA1,即可輸出當(dāng)前模塊對(duì)應(yīng)的當(dāng)前模塊校驗(yàn)碼。需要說(shuō)明的[0034]根據(jù)上述校驗(yàn)碼相同的實(shí)施例方式,終端設(shè)備可以計(jì)算得到上一模塊校驗(yàn)碼。當(dāng)邏輯代碼模塊串中第一個(gè)模塊需要計(jì)算對(duì)應(yīng)校驗(yàn)碼時(shí),獲取邏輯代碼模塊串中最后一個(gè)模塊對(duì)應(yīng)的校驗(yàn)碼進(jìn)行計(jì)算。而當(dāng)終端設(shè)備第一次開(kāi)機(jī),也即第一次計(jì)算校驗(yàn)碼,所有模塊的校驗(yàn)值均為一個(gè)預(yù)定義的初始值,例如0xFFFFFFFF或某個(gè)特定的固定值,直接校驗(yàn)會(huì)導(dǎo)致[0035]通過(guò)上述可選的實(shí)施方式,利用NandFlash自帶隨機(jī)數(shù)量壞塊這一特點(diǎn),將其與CPUID等其他硬件ID進(jìn)行聯(lián)合運(yùn)用,增加了設(shè)備硬件特征信息的復(fù)雜性和獨(dú)特性,極大地提升了設(shè)備整體的安全防護(hù)力度。相較于僅依賴單一硬件ID進(jìn)行安全防護(hù)的傳統(tǒng)方式,能夠有效抵御更多類型的安全攻擊,為終端設(shè)備提供了更為可靠的安全保障,降低了設(shè)備因硬件信息被仿冒或篡改而遭受非法入侵的風(fēng)險(xiǎn)。根據(jù)所述壞塊信息確定所述邏輯代碼模塊串的壞塊數(shù)量;當(dāng)確定所述壞塊數(shù)量不滿足預(yù)設(shè)數(shù)量閾值時(shí),從所述邏輯代碼模塊串中隨機(jī)選擇目標(biāo)數(shù)量的好塊,并將所述好塊標(biāo)記為壞塊,所述目標(biāo)數(shù)量根據(jù)所述壞塊數(shù)量和所述預(yù)設(shè)數(shù)量閾值確定。[0037]在一些實(shí)施例中,壞塊數(shù)量需要滿足預(yù)設(shè)數(shù)量閾值,例如4。終端設(shè)備可以根據(jù)壞塊信息獲取邏輯代碼模塊串所存在的壞塊的壞塊數(shù)量,當(dāng)確定壞塊數(shù)量滿足預(yù)設(shè)數(shù)量閾值時(shí),則直接對(duì)邏輯代碼模塊串中的每個(gè)邏輯代碼模塊進(jìn)行校驗(yàn),當(dāng)確當(dāng)壞塊數(shù)量不滿足預(yù)設(shè)數(shù)量閾值時(shí),則隨機(jī)從邏輯代碼模塊串中選中目標(biāo)數(shù)量的好塊,并將這些好塊標(biāo)記為壞塊,及加入壞塊表,或?qū)⑦@個(gè)塊的第一個(gè)頁(yè)的SpareArea寫(xiě)成非0xFF。上述標(biāo)記方法僅為舉11例說(shuō)明,并不能作為限定,不同平臺(tái)的標(biāo)記方法可能有差別。[0038]需要說(shuō)明的是,壞塊數(shù)量設(shè)置為4,是因?yàn)?個(gè)比較安全,占用的塊數(shù)目也不多。但則等效為從1024個(gè)塊里取幾個(gè),能有其他更加復(fù)雜安全的組合,因此壞塊數(shù)量可以設(shè)置成其他預(yù)設(shè)數(shù)量閾值。[0039]S13,當(dāng)檢測(cè)到所述邏輯代碼模塊串中的任意一個(gè)邏輯代碼模塊的校驗(yàn)碼不為初始校驗(yàn)碼時(shí),根據(jù)所述開(kāi)機(jī)次數(shù)和校驗(yàn)順序?qū)λ鲞壿嫶a模塊串進(jìn)行循環(huán)校驗(yàn)。[0040]在一些實(shí)施例中,當(dāng)終端設(shè)備為首次開(kāi)機(jī)時(shí),所述邏輯代碼模塊串中的任意一個(gè)邏輯代碼模塊應(yīng)該均為初始校驗(yàn)碼,也即0xFFFFFFF,且對(duì)應(yīng)的開(kāi)機(jī)次數(shù)也均為初始開(kāi)機(jī)次數(shù),也即0xFFFFFFF。為了進(jìn)一步校驗(yàn),終端設(shè)備可以遍歷邏輯代碼模塊串中每個(gè)邏輯代碼模塊,并獲取對(duì)應(yīng)的校驗(yàn)碼與初始校驗(yàn)碼進(jìn)行比對(duì),但凡存在任意一個(gè)邏輯代碼模塊的校驗(yàn)碼不為初始校驗(yàn)碼,則允許終端設(shè)備對(duì)邏輯代碼模塊串進(jìn)行循環(huán)校驗(yàn)。[0041]在一個(gè)可選的實(shí)施方式中,所述根據(jù)所述開(kāi)機(jī)次數(shù)和校驗(yàn)順序?qū)λ鲞壿嫶a模塊串進(jìn)行循環(huán)校驗(yàn)包括:獲取第一個(gè)模塊對(duì)應(yīng)的第一開(kāi)機(jī)次數(shù),及所述邏輯代碼模塊串中的第N個(gè)模塊的當(dāng)確定所述第N開(kāi)機(jī)次數(shù)比所述第一開(kāi)機(jī)次數(shù)小1時(shí),根據(jù)所述第一個(gè)模塊的第一校驗(yàn)碼對(duì)所述第一個(gè)模塊進(jìn)行校驗(yàn)碼校驗(yàn),得到第一校驗(yàn)結(jié)果;當(dāng)確定所述第一校驗(yàn)結(jié)果為校驗(yàn)通過(guò)時(shí),判斷第二個(gè)模塊的第二開(kāi)機(jī)次數(shù)和所述第一開(kāi)機(jī)次數(shù)是否一致,其中第二個(gè)模塊為所述邏輯代碼模塊串與所述第一個(gè)模塊相鄰的邏輯代碼模塊,且排序在所述第一個(gè)模塊的后面;當(dāng)確定所述第二開(kāi)機(jī)次數(shù)和所述第一開(kāi)機(jī)次數(shù)一致時(shí),根據(jù)所述第一校驗(yàn)碼計(jì)算所述第二個(gè)模塊對(duì)應(yīng)的第二校驗(yàn)碼,及根據(jù)所述第二校驗(yàn)碼對(duì)所述第二個(gè)模塊進(jìn)行校驗(yàn)碼當(dāng)確定第二校驗(yàn)結(jié)果為校驗(yàn)通過(guò)時(shí),根據(jù)所述校驗(yàn)順序重復(fù)執(zhí)行上述操作,直至所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊均校驗(yàn)完成,或所述邏輯代碼模塊串中存在任意一個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果為校驗(yàn)未通過(guò)。[0042]在一些實(shí)施例中,當(dāng)確定終端設(shè)備不是首次開(kāi)機(jī)時(shí),確實(shí)邏輯代碼模塊串中存在多少個(gè)邏輯代碼模塊,假設(shè)存在N個(gè)邏輯代碼模塊,按照邏輯代碼模塊串中的模塊順序,將首個(gè)邏輯代碼模塊,也即第一個(gè)邏輯代碼模塊稱為第一個(gè)模塊,將排序在第一個(gè)模塊之后惡意篡改,首先對(duì)邏輯代碼模塊串中的第一個(gè)模塊進(jìn)行校驗(yàn)。第一個(gè)模塊則獲取自身對(duì)應(yīng)的開(kāi)機(jī)次數(shù)(稱為第一開(kāi)機(jī)次數(shù))及校驗(yàn)碼(稱為第一校驗(yàn)碼),及獲取第二個(gè)模塊對(duì)應(yīng)的第二開(kāi)機(jī)次數(shù)和第二校驗(yàn)碼,及獲取第三個(gè)模塊對(duì)應(yīng)的第三開(kāi)機(jī)次數(shù)和第三校驗(yàn)碼,…,第N-1個(gè)模塊對(duì)應(yīng)的第N-1開(kāi)機(jī)次數(shù)和第N-1校驗(yàn)碼,第N個(gè)模塊對(duì)應(yīng)的第N開(kāi)機(jī)次數(shù)和第N校驗(yàn)碼,其中第一校驗(yàn)碼是根據(jù)第N個(gè)模塊對(duì)應(yīng)的第N校驗(yàn)碼計(jì)算得到的,第二校驗(yàn)碼是根據(jù)第一校驗(yàn)碼計(jì)算得到,第三校驗(yàn)碼是根據(jù)第二校驗(yàn)碼計(jì)算得到,以此類推,第N校驗(yàn)碼是根據(jù)第N-1校驗(yàn)碼計(jì)算得到。針對(duì)邏輯代碼模塊串中的每個(gè)邏輯代碼模塊正常運(yùn)行時(shí)是否根據(jù)預(yù)定的邏輯運(yùn)行,對(duì)于一次開(kāi)機(jī),一條邏輯代碼模塊串上的邏輯代碼模塊,運(yùn)行過(guò)的邏輯代碼模塊的開(kāi)機(jī)次數(shù)應(yīng)該完全一致的。在對(duì)第一個(gè)模塊進(jìn)行校驗(yàn)時(shí),將第一開(kāi)機(jī)次數(shù)和第N開(kāi)機(jī)次數(shù)進(jìn)行比較,正常運(yùn)行情況下,第一次開(kāi)機(jī)次數(shù)應(yīng)該比第N次開(kāi)機(jī)次數(shù)大1,當(dāng)確定第一次開(kāi)機(jī)次數(shù)應(yīng)該比第N次開(kāi)機(jī)次數(shù)大1時(shí),則繼續(xù)檢驗(yàn)第一個(gè)模塊的第一校驗(yàn)碼,確定獲取到的校驗(yàn)碼(也即第一個(gè)模塊自己計(jì)算的一個(gè)自認(rèn)為的校驗(yàn)碼)與第二個(gè)模塊根據(jù)第N個(gè)校驗(yàn)碼計(jì)算得到的第一校驗(yàn)碼是否一致,如果一致,說(shuō)明第一校驗(yàn)結(jié)果為校驗(yàn)通過(guò),第一個(gè)模塊沒(méi)有發(fā)生篡改。接著,對(duì)第二個(gè)模塊進(jìn)行校驗(yàn),將第一開(kāi)機(jī)模塊和第二開(kāi)機(jī)模塊進(jìn)行比較,正常運(yùn)行情況下,第二開(kāi)機(jī)次數(shù)應(yīng)該和第一開(kāi)機(jī)次數(shù)一致,當(dāng)確定第二次開(kāi)機(jī)次數(shù)和第一開(kāi)機(jī)次數(shù)一致時(shí),則繼續(xù)檢驗(yàn)第二個(gè)模塊的第二校驗(yàn)碼,確定獲取到的校驗(yàn)碼(同樣也是第二個(gè)模塊自己計(jì)算得到的一個(gè)自認(rèn)為的校驗(yàn)碼)與第三個(gè)模塊根據(jù)第一個(gè)校驗(yàn)碼計(jì)算得到的第二校驗(yàn)碼是否一致,如果一致,說(shuō)明第二校驗(yàn)結(jié)果為校驗(yàn)通過(guò),第二個(gè)模塊沒(méi)有發(fā)生校驗(yàn)結(jié)果均為校驗(yàn)通過(guò)時(shí),表示邏輯代碼模塊串中的每個(gè)邏輯代碼模塊均沒(méi)有發(fā)生篡改,但凡存在任意一個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果為校驗(yàn)未通過(guò)時(shí),則表示對(duì)應(yīng)邏輯代碼模塊發(fā)生了篡改,停止執(zhí)行開(kāi)機(jī)操作。另外,當(dāng)?shù)谝婚_(kāi)機(jī)次數(shù)沒(méi)有比第N開(kāi)機(jī)次數(shù)大1時(shí),表示第一個(gè)模塊發(fā)生了篡改,停止開(kāi)機(jī);又或者是第一校驗(yàn)碼校驗(yàn)未通過(guò),也表示第一個(gè)模塊發(fā)生了篡改,停止開(kāi)機(jī)。又或者第二開(kāi)機(jī)次數(shù)與第一開(kāi)機(jī)次數(shù)不一致時(shí),表示第二個(gè)模塊發(fā)生了篡改,停止開(kāi)機(jī)。以此類推,但凡存在任意一個(gè)模塊的開(kāi)機(jī)次數(shù)校驗(yàn)不通過(guò),或任意一個(gè)模塊的校驗(yàn)碼校驗(yàn)不通過(guò),則停止執(zhí)行開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作。[0043]需要說(shuō)明的是,因?yàn)槭茄h(huán)校驗(yàn),邏輯代碼模塊串的第一個(gè)模塊要對(duì)最后一個(gè)模塊進(jìn)行校驗(yàn),而終端設(shè)備最開(kāi)始,也即終端設(shè)備首次開(kāi)機(jī)時(shí),校驗(yàn)數(shù)據(jù)需要一個(gè)合理的初始值,不做處理,一開(kāi)始各邏輯代碼模塊的校驗(yàn)值均是初始校驗(yàn)值0xFFFFFFFF,直接會(huì)校驗(yàn)不過(guò)。[0044]為了便于理解本申請(qǐng)的發(fā)明思想,以下提供一個(gè)具體示例來(lái)對(duì)邏輯代碼模塊串中的每個(gè)邏輯代碼模塊進(jìn)行校驗(yàn)碼驗(yàn)證進(jìn)行闡述。假設(shè)存在一個(gè)邏輯代碼模塊串,邏輯代碼模塊串的排列順序?yàn)锳→B→C→D→E,也即校驗(yàn)順序?yàn)锳→B→C→D→E,首先A模塊開(kāi)始校驗(yàn)E模塊,A模塊獲取D模塊的校驗(yàn)碼,根據(jù)D模塊的校驗(yàn)碼計(jì)算出一個(gè)自認(rèn)為的E模塊的校驗(yàn)碼,然后將計(jì)算出的E模塊的校驗(yàn)碼和存儲(chǔ)的E模塊(E模塊根據(jù)上述相同的校驗(yàn)碼計(jì)算方式自己計(jì)算得到的)的校驗(yàn)碼進(jìn)行比較,如果A計(jì)算的得到的E模塊的校驗(yàn)碼和E自己計(jì)算得到校驗(yàn)碼,并根據(jù)E模塊的校驗(yàn)碼計(jì)算出一個(gè)自認(rèn)為的A模塊的校驗(yàn)碼,并將計(jì)算得到A模塊的校驗(yàn)碼與存儲(chǔ)的A模塊的校驗(yàn)進(jìn)行比較,如果B模塊算出來(lái)的校驗(yàn)碼和A模塊自己算出來(lái)的輯代碼模塊串進(jìn)行校驗(yàn),以防止任意一個(gè)模塊被篡改。[0045]通過(guò)上述可選的實(shí)施方式,首次開(kāi)機(jī)時(shí),利用初始校驗(yàn)碼和開(kāi)機(jī)次數(shù)觸發(fā)循環(huán)校驗(yàn)流程。非首次開(kāi)機(jī)時(shí),依據(jù)開(kāi)機(jī)次數(shù)和校驗(yàn)順序依次校驗(yàn)各模塊,通過(guò)開(kāi)機(jī)次數(shù)關(guān)聯(lián)性及校驗(yàn)碼遞推驗(yàn)證,精準(zhǔn)識(shí)別模塊是否被篡改。一旦發(fā)現(xiàn)任意模塊校驗(yàn)不通過(guò),立即停止開(kāi)機(jī)操作,防止?jié)撛陲L(fēng)險(xiǎn)。同時(shí),通過(guò)邏輯代碼模塊之間進(jìn)行檢查,提供了鏡像級(jí)別到程序級(jí)別的保護(hù),偷偷換了謀一個(gè)鏡像或替換了某一個(gè)程序,能夠輕易被發(fā)現(xiàn)。不僅增強(qiáng)了設(shè)備的安全性,還能精準(zhǔn)定位問(wèn)題模塊,為后續(xù)維護(hù)和修復(fù)提供便利,確保設(shè)備在安全可靠的狀態(tài)下[0046]S14,當(dāng)確定所述邏輯代碼模塊串中的每個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果均為校驗(yàn)通過(guò)時(shí),執(zhí)行所述開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作。[0047]S15,當(dāng)確定所述邏輯代碼模塊串中存在任意一個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果為校驗(yàn)未通過(guò)時(shí),則停止執(zhí)行所述開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作。[0048]當(dāng)完成對(duì)邏輯代碼模塊串中所有邏輯代碼模塊的校驗(yàn)工作后,會(huì)進(jìn)行綜合判斷。若確定邏輯代碼模塊串中的每一個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果均為校驗(yàn)通過(guò),表明所有用于開(kāi)機(jī)的關(guān)鍵代碼均處于正常、可信賴的狀態(tài),系統(tǒng)能夠安全、穩(wěn)定地基于這些代碼執(zhí)行后續(xù)[0049]需要說(shuō)明的是,終端設(shè)備是在邊執(zhí)行開(kāi)機(jī)操作邊執(zhí)行邏輯代碼模塊串的校驗(yàn),開(kāi)機(jī)期間,各個(gè)邏輯代碼模塊會(huì)依次執(zhí)行校驗(yàn),邏輯代碼模塊執(zhí)行校驗(yàn)的時(shí)候?qū)ι弦粋€(gè)邏輯代碼模塊進(jìn)行校驗(yàn),校驗(yàn)通過(guò)則讓程序正常繼續(xù)跑,有任何邏輯代碼模塊校驗(yàn)不過(guò)則讓終端設(shè)備復(fù)位。[0050]同樣,如果在校驗(yàn)過(guò)程中,發(fā)現(xiàn)邏輯代碼模塊串中存在任意一個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果為校驗(yàn)未通過(guò),表面該模塊發(fā)生了篡改,或者存在代碼損壞、版本不匹配或與當(dāng)前系統(tǒng)架構(gòu)不兼容等嚴(yán)重問(wèn)題。任何一個(gè)邏輯代碼模塊的異常都可能對(duì)整個(gè)系統(tǒng)的穩(wěn)定性和安全性構(gòu)成潛在威脅,例如導(dǎo)致終端設(shè)備崩潰、數(shù)據(jù)丟失、遭受安全攻擊等。為了確保終端設(shè)備的安全性和穩(wěn)定性,避免因存在問(wèn)題的邏輯代碼模塊引發(fā)后續(xù)不可預(yù)見(jiàn)的故障或風(fēng)險(xiǎn),系統(tǒng)將立即停止執(zhí)行原本由開(kāi)機(jī)指令所對(duì)應(yīng)的開(kāi)機(jī)操作。也即,終端設(shè)備不會(huì)繼續(xù)進(jìn)行硬件初始化、操作系統(tǒng)加載等后續(xù)步驟,而是會(huì)采取相應(yīng)的措施,例如顯示錯(cuò)誤提示信息、記錄錯(cuò)誤日志以便后續(xù)排查問(wèn)題,或者進(jìn)入安全模式等待用戶進(jìn)一步處理。當(dāng)檢測(cè)到所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的校驗(yàn)碼為初始校驗(yàn)碼時(shí),且所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的開(kāi)機(jī)次數(shù)為初始開(kāi)機(jī)次數(shù)時(shí),控制所述邏輯代碼模塊串中的首個(gè)啟動(dòng)模塊進(jìn)入Fastboot模式;在所述Fastboot模式下獲取所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的壞塊信根據(jù)所述壞塊信息和所述CPU標(biāo)識(shí)符生成組合Key;將所述組合Key返回至外部生產(chǎn)工具,以使得所述外部生產(chǎn)工具基于所述組合Key計(jì)算所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的第一目標(biāo)校驗(yàn)碼,并返回校驗(yàn)碼序列;當(dāng)接收到所述校驗(yàn)碼序列,根據(jù)所述組合Key重新計(jì)算所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的第二目標(biāo)校驗(yàn)碼;將所述第一目標(biāo)校驗(yàn)碼和所述第二目標(biāo)校驗(yàn)碼進(jìn)行比對(duì);當(dāng)確定所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的所述第一目標(biāo)校驗(yàn)碼與所述第二目標(biāo)校驗(yàn)碼均匹配時(shí),將所述校驗(yàn)碼序列進(jìn)行存儲(chǔ)。[0052]在一些實(shí)施例中,在檢測(cè)到終端設(shè)備開(kāi)機(jī)指令時(shí),需要對(duì)邏輯代碼模塊串中每個(gè)邏輯代碼模塊進(jìn)行校驗(yàn),當(dāng)確定邏輯代碼模塊串中每個(gè)邏輯代碼模塊的校驗(yàn)碼均為初始校驗(yàn)碼時(shí),同時(shí)也檢測(cè)邏輯代碼模塊串中每個(gè)邏輯代碼模塊的開(kāi)機(jī)次數(shù)是否均為初始開(kāi)機(jī)次數(shù),當(dāng)確定開(kāi)機(jī)次數(shù)也均為初始開(kāi)機(jī)次數(shù)時(shí),可以確定終端設(shè)備為首次開(kāi)機(jī),終端設(shè)備將控制邏輯代碼模塊串中的首個(gè)啟動(dòng)模塊進(jìn)入Fastboot模式。其中,F(xiàn)astboot模式是一種低級(jí)別的引導(dǎo)模式,通常用于設(shè)備調(diào)試、固件刷寫(xiě)或系統(tǒng)恢復(fù)等操作。在Fastboot模式下,終端設(shè)備需要獲取邏輯代碼模塊串中每個(gè)邏輯代碼模塊的壞塊信息。壞塊信息通常指的是存儲(chǔ)介質(zhì)中不可用或損壞的塊,這些信息對(duì)于確保數(shù)據(jù)的完整性和可靠性至關(guān)重要。同時(shí),終端設(shè)備還需要獲取CPU的標(biāo)識(shí)符,CPU標(biāo)識(shí)符用于唯一標(biāo)識(shí)設(shè)備的處理器,通常用于驗(yàn)證設(shè)備的合法性和唯一性。接著根據(jù)獲取到的壞塊信息和CPU標(biāo)識(shí)符生成一個(gè)組合Key,該組合Key是一個(gè)唯一標(biāo)識(shí)符,結(jié)合了設(shè)備的硬件特性和存儲(chǔ)狀態(tài)信息,用于后續(xù)的校驗(yàn)碼計(jì)算和驗(yàn)證。接著,將生成的組合Key發(fā)送到外部生產(chǎn)工具,外部生產(chǎn)工具基于接收到的組合Key,計(jì)算出邏輯代碼模塊串中每個(gè)邏輯代碼模塊的第一目標(biāo)校驗(yàn)碼,并將這些校驗(yàn)碼按順序組成一個(gè)校驗(yàn)碼序列返回給終端設(shè)備。其中,外部生產(chǎn)工具通常是一個(gè)安全的服務(wù)器或?qū)S迷O(shè)備,用于執(zhí)行復(fù)雜的計(jì)算和驗(yàn)證操作。終端設(shè)備在接收到校驗(yàn)碼序列后,使用相同的組合Key重新計(jì)算邏輯代碼模塊串中每個(gè)邏輯代碼模塊的第二目標(biāo)校驗(yàn)碼,并將第一目標(biāo)校驗(yàn)碼和第二目標(biāo)校驗(yàn)碼進(jìn)行比對(duì),確保兩者完全匹配。如果邏輯代碼模塊串中每個(gè)邏輯代碼模塊的第一目標(biāo)校驗(yàn)碼與第二目標(biāo)校驗(yàn)碼均匹配,終端設(shè)備將校驗(yàn)碼序列進(jìn)行存儲(chǔ),確保在后續(xù)的啟動(dòng)過(guò)程中使用這些校驗(yàn)碼進(jìn)行進(jìn)一步的驗(yàn)證,保證終端設(shè)備的完整性和安全性。[0053]通過(guò)上述可選的實(shí)施方式,能夠在設(shè)備首次啟動(dòng)或特定條件下,確保邏輯代碼模塊的完整性和合法性,防止未經(jīng)授權(quán)的代碼修改或篡改,從而增強(qiáng)終端設(shè)備的安全性和可[0054]在一個(gè)可選的實(shí)施方式中,通過(guò)在代碼中添加一個(gè)特定的錯(cuò)誤處理機(jī)制,當(dāng)校驗(yàn)碼不匹配時(shí),控制終端設(shè)備進(jìn)入在Fastboot模式。在在Fastboot模式下,添加一個(gè)讀接口,用于返回生成校驗(yàn)碼所需的組合Key。具體的,在Fastboot的命令處理函數(shù)中,添加一個(gè)新的命令(例如fastbootoemget_key),當(dāng)接收到該命令時(shí),系統(tǒng)將計(jì)算并返回組合Key,且在Fastboot的命令處理函數(shù)中,添加一個(gè)新的命令(例如fastbootoemverify_checksum),該命令接收用戶輸入的校驗(yàn)碼,并將其與終端設(shè)備使用相同算法計(jì)算出的校驗(yàn)碼進(jìn)行比對(duì)。在Fastboot模式下,終端設(shè)備需要能夠重新生成每個(gè)邏輯代碼模塊的校驗(yàn)碼,通過(guò)讀接口獲取組合Key,根據(jù)上述實(shí)施例中相同的校驗(yàn)碼計(jì)算公式計(jì)算出校驗(yàn)碼,通過(guò)輸入接口將計(jì)算出的校驗(yàn)碼發(fā)送到設(shè)備,終端設(shè)備同樣根據(jù)上述實(shí)施例中相同的校驗(yàn)碼計(jì)算方式和Key計(jì)算出校驗(yàn)碼,并與輸入接口輸入的校驗(yàn)碼進(jìn)行比對(duì)。如果校驗(yàn)碼匹配,設(shè)備將重新生成校驗(yàn)碼,并將其存儲(chǔ)在Flash上。如果校驗(yàn)碼不匹配,設(shè)備可以保持Fastboot模式,等待進(jìn)一步的指令或重試。在驗(yàn)證通過(guò)后,系統(tǒng)將生成的校驗(yàn)碼存儲(chǔ)在Flash存儲(chǔ)器的特定位置,以便在后續(xù)的啟動(dòng)過(guò)程中使用這些校驗(yàn)碼進(jìn)行驗(yàn)證。[0055]通過(guò)上述可選的實(shí)施方式,終端設(shè)備能夠在Fastboot模式下提供安全的鑒權(quán)接口,確保校驗(yàn)碼的生成和驗(yàn)證過(guò)程安全可靠,從而增強(qiáng)系統(tǒng)的安全性和可靠性。當(dāng)確定第一目標(biāo)壞塊的壞塊類型為第一壞塊類型時(shí),則對(duì)所述第一目標(biāo)壞塊進(jìn)行第一次擦寫(xiě)操作,所述第一目標(biāo)壞塊為所述邏輯代碼模塊串中的任意一個(gè)壞塊;當(dāng)確定擦寫(xiě)結(jié)果為擦寫(xiě)成功后,對(duì)所述第一目標(biāo)壞塊進(jìn)行第二次擦寫(xiě)操作,直至滿足預(yù)設(shè)擦寫(xiě)次數(shù),或存在任意一個(gè)擦寫(xiě)結(jié)果為擦寫(xiě)失敗;當(dāng)確定所述第一目標(biāo)壞塊的壞塊類型為第二壞塊類型時(shí),獲取所述第一目標(biāo)壞塊的第一個(gè)頁(yè)的備用區(qū)域;檢查所述第一個(gè)頁(yè)的備用區(qū)域的數(shù)據(jù)是否為0xFF;當(dāng)確定所述第一個(gè)頁(yè)的備用區(qū)域的數(shù)據(jù)不為0xFF時(shí),則判定所述第一目標(biāo)壞塊的檢測(cè)結(jié)果為檢測(cè)通過(guò);當(dāng)確定所述第一個(gè)頁(yè)的備用區(qū)域的數(shù)據(jù)為0xFF時(shí),則判定所述第一目標(biāo)壞塊的檢測(cè)結(jié)果為檢測(cè)失敗,終止所述開(kāi)機(jī)指令。[0057]在一些實(shí)施例中,終端設(shè)備每次開(kāi)機(jī)時(shí),邏輯代碼模塊串中第一個(gè)模塊需要對(duì)邏輯代碼模塊串中的壞塊進(jìn)行校驗(yàn)。具體的,獲取邏輯代碼模塊串中每個(gè)壞塊的壞塊信息,根據(jù)壞塊信息確定壞塊的壞塊類型,基于壞塊類型對(duì)壞塊進(jìn)行不同的檢測(cè)。首先對(duì)第一個(gè)壞塊(稱為第一目標(biāo)壞塊)進(jìn)行檢測(cè),也即首先獲取第一目標(biāo)壞塊的壞塊類型,確定第一目標(biāo)壞塊的壞塊類型是屬于第一壞塊類型(也即壞塊類型1)還是第二壞塊類型(也即壞塊類型[0058]當(dāng)確定第一目標(biāo)壞塊的壞塊類型屬于壞塊類型1,則對(duì)第一目標(biāo)壞塊進(jìn)行擦寫(xiě)操首先定義擦除操作的最大嘗試次數(shù),也即預(yù)設(shè)擦寫(xiě)次數(shù)(例如,3次),接著對(duì)第一目標(biāo)壞塊進(jìn)行第一次擦寫(xiě)操作,并獲取第一次擦寫(xiě)操作的擦寫(xiě)結(jié)果,當(dāng)?shù)谝淮尾翆?xiě)操作的擦寫(xiě)結(jié)果為擦寫(xiě)成功時(shí),則繼續(xù)對(duì)第一目標(biāo)壞塊進(jìn)行第二次擦寫(xiě)操作,并獲取第二次擦寫(xiě)操作的擦寫(xiě)結(jié)果,當(dāng)?shù)诙尾翆?xiě)操作的擦寫(xiě)結(jié)果為擦寫(xiě)成功時(shí),則繼續(xù)對(duì)第一目標(biāo)壞塊進(jìn)行第三次擦寫(xiě)操作,以此類推,直至對(duì)第一目標(biāo)擦寫(xiě)執(zhí)行完成預(yù)設(shè)擦寫(xiě)次數(shù)的擦寫(xiě)操作或存在任意一次擦寫(xiě)結(jié)果為擦寫(xiě)失敗,且預(yù)設(shè)擦寫(xiě)次數(shù)的擦寫(xiě)結(jié)果均為擦寫(xiě)成功時(shí),則獲取第二個(gè)壞塊(稱為第二目標(biāo)壞塊)的壞塊類型,當(dāng)?shù)诙繕?biāo)壞塊的壞塊類型為壞塊類型1時(shí),對(duì)第二目標(biāo)壞塊進(jìn)行第一次擦寫(xiě)操作,同樣根據(jù)上述相同的實(shí)施例方式,直至對(duì)第二目標(biāo)擦寫(xiě)執(zhí)行完成預(yù)設(shè)擦寫(xiě)次數(shù)的擦寫(xiě)操作或存在任意一次擦寫(xiě)結(jié)果為擦寫(xiě)失敗,然后則對(duì)第三個(gè)壞塊、第四個(gè)壞塊等壞塊進(jìn)行擦寫(xiě)操作。當(dāng)確定對(duì)每個(gè)壞塊都進(jìn)行擦寫(xiě)完成,且擦寫(xiě)結(jié)果均為擦寫(xiě)成功時(shí),則終止開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作。當(dāng)?shù)谝荒繕?biāo)壞塊的壞塊類型屬于壞塊類型0,讀取第一個(gè)頁(yè)的SpareArea,檢查第一個(gè)頁(yè)的SpareArea中的數(shù)據(jù)是否為0xFF,如果不是0xFF則PASS,接著獲取第二目標(biāo)壞塊的壞塊類型,對(duì)第二目標(biāo)壞塊進(jìn)行檢測(cè)。如果時(shí)是0xFF則FAIL,則終止開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作。當(dāng)?shù)诙繕?biāo)壞塊的壞塊類型屬于壞塊類型0時(shí),根據(jù)上述第一目標(biāo)壞塊相同的實(shí)施例方式執(zhí)行檢測(cè),以此類推,對(duì)第三個(gè)壞塊、第四個(gè)壞塊……進(jìn)行檢測(cè)。[0059]在一些實(shí)施例中,由于NandFlash壞塊不會(huì)自動(dòng)變好,也即壞塊類型為1的壞塊會(huì)一直是壞塊,因此終端設(shè)備可以獲取實(shí)時(shí)獲取壞塊類型為壞塊類型1的壞塊,并判斷壞塊類錄壞塊類型為0的壞塊,如果它不在壞塊表或檢查發(fā)現(xiàn)它的第一個(gè)頁(yè)的SpareArea變成全FF,則說(shuō)明有人惡意擦寫(xiě)了軟件。[0060]通過(guò)上述可選的實(shí)施方式,對(duì)于第一壞塊類型,通過(guò)多次擦寫(xiě)操作判斷壞塊狀態(tài),若多次擦寫(xiě)均成功則判定異常并終止開(kāi)機(jī),防止?jié)撛陲L(fēng)險(xiǎn);對(duì)于第二壞塊類型,通過(guò)檢查第一個(gè)頁(yè)備用區(qū)域數(shù)據(jù)是否為0xFF來(lái)判定,若為0xFF則判定檢測(cè)失敗并終止開(kāi)機(jī)。這種分類型、多步驟的檢測(cè)方式,能精準(zhǔn)識(shí)別壞塊問(wèn)題,避免因壞塊導(dǎo)致的系統(tǒng)故障或數(shù)據(jù)錯(cuò)誤,保障了終端設(shè)備在開(kāi)機(jī)過(guò)程中的穩(wěn)定性和安全性,為設(shè)備的正常運(yùn)行奠定了堅(jiān)實(shí)基礎(chǔ)。同[0061]本申請(qǐng)通過(guò)模塊之間循環(huán)驗(yàn)證的方式構(gòu)建了一套嚴(yán)密且高效的程序保護(hù)機(jī)制。在操作系統(tǒng)運(yùn)行過(guò)程中,各模塊相互協(xié)作,對(duì)其他模塊所涉及的程序進(jìn)行持續(xù)、動(dòng)態(tài)的驗(yàn)證。這種循環(huán)驗(yàn)證機(jī)制能夠精準(zhǔn)地檢測(cè)到任何非法的程序替換動(dòng)作,無(wú)論是針對(duì)操作系統(tǒng)核心程序還是關(guān)鍵功能模塊的篡改行為,都難以逃脫該機(jī)制的監(jiān)測(cè)。一旦檢測(cè)到非法替換,系統(tǒng)能夠迅速做出響應(yīng),及時(shí)采取相應(yīng)的安全措施,如終止非法程序運(yùn)行、觸發(fā)安全警報(bào)等,從而有效防止非法程序?qū)ο到y(tǒng)造成破壞,保障操作系統(tǒng)的穩(wěn)定性和安全性。由于NandFlash壞塊數(shù)量和分布的隨機(jī)性,以及與CPUID等硬件ID的聯(lián)合使用,使得攻擊者難以通過(guò)常規(guī)手段獲取完整的硬件特征信息,進(jìn)而增加了攻擊的難度和成本。同時(shí),模塊間的循環(huán)驗(yàn)證機(jī)制使得攻擊者即使成功篡改了部分程序,也很難繞過(guò)其他模塊的驗(yàn)證,從而大大降低了系統(tǒng)被成功攻擊的可能性。這種多層次、全方位的安全防護(hù)機(jī)制,為操作系統(tǒng)在復(fù)雜多變的安全環(huán)境中穩(wěn)定運(yùn)行提供了有力支持,確保了設(shè)備數(shù)據(jù)的安全性和完整性。[0062]為了便于理解本申請(qǐng)的發(fā)明思想,下面列舉一個(gè)示例,來(lái)描述本申請(qǐng)實(shí)施例的實(shí)際應(yīng)用,以高通,假如邏輯代碼模塊串為sbl→1k→kernel→撥號(hào)進(jìn)程→…→http進(jìn)程為例進(jìn)行闡述。當(dāng)終端設(shè)備第一次開(kāi)機(jī)時(shí),邏輯代碼模塊串中每個(gè)邏輯代碼模塊的校驗(yàn)碼均為初始校驗(yàn)碼0xFFFFFFF,各自對(duì)應(yīng)的開(kāi)機(jī)次數(shù)普遍為0xFFFFFF,邏輯代碼模塊串的第一個(gè)模塊,也即sbl先讀取其他各模塊的校驗(yàn)信息對(duì)應(yīng)的開(kāi)機(jī)次數(shù),如果為0xFFFFFFF,則直接PASS,也即通過(guò)驗(yàn)證。接著,1k讀取其他各模塊的校驗(yàn)信息對(duì)應(yīng)的開(kāi)機(jī)次數(shù),如果為0xFFFFFFFF,則進(jìn)入fastboot模式,等待生產(chǎn)工具鑒權(quán),觸發(fā)設(shè)備生成初始的鑒權(quán)信息。當(dāng)獲取初始的鑒權(quán)信息后,終端設(shè)備重啟或再開(kāi)機(jī)。Sb1根據(jù)上述相同的校驗(yàn)方式(也即,邏輯代碼模塊串中的每一個(gè)模塊均具有一個(gè)校驗(yàn)碼,它由上一個(gè)模塊的校驗(yàn)碼作輸入,以計(jì)算出當(dāng)前自身模塊的校驗(yàn)碼并填入模塊校驗(yàn)分區(qū)進(jìn)行存儲(chǔ),供下一個(gè)模塊讀取。同時(shí)每一個(gè)模塊需要根據(jù)上上個(gè)模塊的校驗(yàn)計(jì)算上一個(gè)模塊的校驗(yàn)碼,來(lái)對(duì)上一個(gè)模塊進(jìn)行校驗(yàn))檢查壞塊信息,通過(guò)則PASS,否則停止開(kāi)機(jī)驗(yàn)信息的開(kāi)機(jī)次數(shù),并與自身進(jìn)行比較,如果http進(jìn)程的開(kāi)機(jī)次數(shù)比自身小1,則按照上述的校驗(yàn)方式對(duì)“結(jié)束”標(biāo)記模塊進(jìn)行檢查。檢查不通過(guò)停止開(kāi)機(jī),檢查通過(guò)則更新開(kāi)機(jī)次數(shù)和自身校驗(yàn)信息到flash。如果http進(jìn)程的開(kāi)機(jī)次數(shù)不是比自身小1,則停止開(kāi)機(jī)。1k用根據(jù)上述相同的校驗(yàn)方式對(duì)sbl進(jìn)行檢查,通過(guò)則更新自身開(kāi)機(jī)次數(shù)和自身校驗(yàn)碼,繼續(xù)下一開(kāi)機(jī),如果相等,則根據(jù)上述相同的校驗(yàn)方式對(duì)1k進(jìn)行檢查,通過(guò)則更新自身開(kāi)機(jī)次數(shù)和校驗(yàn)碼。最后,撥號(hào)進(jìn)程讀取其前面模塊(包括sb1、1k、kernel)校驗(yàn)信息的開(kāi)機(jī)次數(shù),如果相等,則根據(jù)上述相同的校驗(yàn)方式對(duì)kernel進(jìn)行檢查,通過(guò)則更新自身開(kāi)機(jī)次數(shù)和校驗(yàn)碼。以此類推,直至邏輯代碼模塊串最后一個(gè)模塊完成校驗(yàn)。[0063]參照?qǐng)D2所示,為本申請(qǐng)實(shí)施例示出的終端軟件保護(hù)裝置的功能模塊圖。[0064]在一些實(shí)施例中,所述終端軟件保護(hù)裝置20可以包括多個(gè)由計(jì)算機(jī)程序段所組成的功能模塊。所述終端軟件保護(hù)裝置20的各個(gè)程序段的計(jì)算機(jī)程序可以存儲(chǔ)于終端設(shè)備的存儲(chǔ)器中,并由至少一個(gè)處理器所執(zhí)行,以執(zhí)行(詳見(jiàn)圖1描述)終端軟件保護(hù)的功能。根據(jù)其所執(zhí)行的功能,可以被劃分為多個(gè)功能模塊。所述功能模塊可以包括:指令檢測(cè)模塊201、數(shù)據(jù)獲取模塊202、循環(huán)校驗(yàn)?zāi)K203、開(kāi)機(jī)執(zhí)行模塊204、開(kāi)機(jī)停止模塊205及壞塊處理模塊206。本申請(qǐng)所稱的模塊是指一種能夠被至少一個(gè)處理器所執(zhí)行并且能夠完成固定功能的一系列計(jì)算機(jī)程序段,其存儲(chǔ)在存儲(chǔ)器中。在本實(shí)施例中,關(guān)于各模塊的功能將在后續(xù)的實(shí)施例中詳述。[0065]所述指令檢測(cè)模塊201,用于當(dāng)檢測(cè)到開(kāi)機(jī)指令時(shí),判斷所述開(kāi)機(jī)指令是否屬于首次開(kāi)機(jī)指令。[0066]所述數(shù)據(jù)獲取模塊202,用于當(dāng)確定所述開(kāi)機(jī)指令不屬于首次開(kāi)機(jī)指令時(shí),獲取邏輯代碼模塊串中每個(gè)邏輯代碼模塊對(duì)應(yīng)的校驗(yàn)碼及開(kāi)機(jī)次數(shù)。[0067]所述循環(huán)校驗(yàn)?zāi)K203,用于當(dāng)檢測(cè)到所述邏輯代碼模塊串中的任意一個(gè)邏輯代碼模塊的校驗(yàn)碼不為初始校驗(yàn)碼時(shí),根據(jù)所述開(kāi)機(jī)次數(shù)和校驗(yàn)順序?qū)λ鲞壿嫶a模塊串進(jìn)行循環(huán)校驗(yàn)。[0068]所述開(kāi)機(jī)執(zhí)行模塊204,用于當(dāng)確定所述邏輯代碼模塊串中的每個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果均為校驗(yàn)通過(guò)時(shí),執(zhí)行所述開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作。[0069]所述開(kāi)機(jī)停止模塊205,用于當(dāng)確定所述邏輯代碼模塊串中存在任意一個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果為校驗(yàn)未通過(guò)時(shí),則停止執(zhí)行所述開(kāi)機(jī)指令對(duì)應(yīng)的開(kāi)機(jī)操作。[0070]所述循環(huán)校驗(yàn)?zāi)K203,還具體用于:獲取第一個(gè)模塊對(duì)應(yīng)的第一開(kāi)機(jī)次數(shù),及所述邏輯代碼模塊串中的第N個(gè)模塊的第N開(kāi)機(jī)次機(jī)次數(shù)比所述第一開(kāi)機(jī)次數(shù)小1時(shí),根據(jù)所述第一個(gè)模塊的第一校驗(yàn)碼對(duì)所述第一個(gè)模塊進(jìn)行校驗(yàn)碼校驗(yàn),得到第一校驗(yàn)結(jié)果;當(dāng)確定所述第一校驗(yàn)結(jié)果為校驗(yàn)通過(guò)時(shí),判斷第二個(gè)模塊的第二開(kāi)機(jī)次數(shù)和所述第一開(kāi)機(jī)次數(shù)是否一致,其中第二個(gè)模塊為所述邏輯代碼模塊串與所述第一個(gè)模塊相鄰的邏輯代碼模塊,且排序在所述第一個(gè)模塊的后面;當(dāng)確定所述第二開(kāi)機(jī)次數(shù)和所述第一開(kāi)機(jī)次數(shù)一致時(shí),根據(jù)所述第一校驗(yàn)碼計(jì)算所述第二個(gè)模塊對(duì)應(yīng)的第二校驗(yàn)碼,及根據(jù)所述第二校驗(yàn)碼對(duì)所述第二個(gè)模塊進(jìn)行校驗(yàn)碼校驗(yàn),得到第二校驗(yàn)結(jié)果;當(dāng)確定第二校驗(yàn)結(jié)果為校驗(yàn)通過(guò)時(shí),根據(jù)所述校驗(yàn)順序重復(fù)執(zhí)行上述操作,直至所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊均校驗(yàn)完成,或所述邏輯代碼模塊串中存在任意一個(gè)邏輯代碼模塊的校驗(yàn)結(jié)果為校驗(yàn)未通過(guò)。[0071]所述循環(huán)校驗(yàn)?zāi)K203,還用于:當(dāng)檢測(cè)到所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的校驗(yàn)碼為初始校驗(yàn)碼時(shí),且所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的開(kāi)機(jī)次數(shù)為初始開(kāi)機(jī)次數(shù)時(shí),控制所述邏輯代碼模塊串中的首個(gè)啟動(dòng)模塊進(jìn)入Fastboot模式;在所述Fastboot模式下獲取所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的壞塊信息,及CPU標(biāo)識(shí)符;根據(jù)所述壞塊信息和所述CPU標(biāo)識(shí)符生成組合Key;將所述組合Key返回至外部生產(chǎn)工具,以使得所述外部生產(chǎn)工具基于所述組合Key計(jì)算所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的第一目標(biāo)校驗(yàn)碼,并返回校驗(yàn)碼序列;當(dāng)接收到所述校驗(yàn)碼序列,根據(jù)所述組合Key重新計(jì)算所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的第二目標(biāo)校驗(yàn)碼;將所述第一目標(biāo)校驗(yàn)碼和所述第二目標(biāo)校驗(yàn)碼進(jìn)行比對(duì);當(dāng)確定所述邏輯代碼模塊串中每個(gè)邏輯代碼模塊的所述第一目標(biāo)校驗(yàn)碼與所述第二目標(biāo)校驗(yàn)碼均匹配時(shí),將所述校驗(yàn)碼序列進(jìn)行存儲(chǔ)。[0072]所述循環(huán)校驗(yàn)?zāi)K203,還用于:獲取CPU標(biāo)識(shí)符,及根據(jù)所述壞塊信息確定當(dāng)前模塊的目標(biāo)壞塊序號(hào)和目標(biāo)壞塊類型;將所述CPU標(biāo)識(shí)符、所述目標(biāo)壞塊序號(hào)和所述目標(biāo)壞塊類型生成目標(biāo)組合Key;根據(jù)上一模塊校驗(yàn)碼和所述目標(biāo)組合Key計(jì)算所述當(dāng)前模塊的當(dāng)前模塊校驗(yàn)碼。[0073]

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論