本發(fā)明涉及信息安全領(lǐng)域,特別是涉及一種可執(zhí)行文件的加固方法和裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,提供各種服務(wù)的應(yīng)用程序應(yīng)運(yùn)而生。將應(yīng)用程序安裝在移動(dòng)終端上,使用應(yīng)用程序即可享受相應(yīng)的服務(wù),例如打車軟件,將打車軟件安裝在移動(dòng)終端上,啟動(dòng)運(yùn)行打車軟件,輸入出發(fā)點(diǎn)和目的地生成叫車信息,發(fā)送該叫車信息,接收到該叫車信息的的士司機(jī)即可響應(yīng),進(jìn)行服務(wù)。
然而,應(yīng)用程序安裝在移動(dòng)終端上,容易被反編譯工具直接讀取應(yīng)用程序安裝包里保存在libs目錄下的可執(zhí)行文件(如so文件),將其修改,重新打包,構(gòu)建出大量的山寨應(yīng)用,在修改時(shí)會(huì)植入惡意指令、廣告插件等,導(dǎo)致用戶的數(shù)據(jù)被竊取,用戶數(shù)據(jù)的安全性低。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要針對(duì)傳統(tǒng)的應(yīng)用程序易被修改植入惡意指令而導(dǎo)致用戶數(shù)據(jù)被竊取的問題,提供一種可執(zhí)行文件的加固方法,能防止應(yīng)用程序被植入惡意指令,防止用戶數(shù)據(jù)被竊取,提高用戶數(shù)據(jù)的安全性。
此外,還有必要提供一種可執(zhí)行文件的加固裝置,能防止應(yīng)用程序被植入惡意指令,防止用戶數(shù)據(jù)被竊取,提高用戶數(shù)據(jù)的安全性。
一種可執(zhí)行文件的加固方法,包括以下步驟:
獲取應(yīng)用程序的可執(zhí)行文件代碼;
將應(yīng)用程序的可執(zhí)行文件代碼編譯為匯編文件;
從所述匯編文件中獲取預(yù)先設(shè)定的需要保護(hù)的代碼所對(duì)應(yīng)的匯編代碼;
將防止反編譯代碼插入到所述匯編代碼之前。
一種可執(zhí)行文件的加固裝置,包括:
第一獲取模塊,用于獲取應(yīng)用程序的可執(zhí)行文件代碼;
編譯模塊,用于將應(yīng)用程序的可執(zhí)行文件代碼編譯為匯編文件;
第二獲取模塊,用于從所述匯編文件中獲取預(yù)先設(shè)定的需要保護(hù)的代碼所對(duì)應(yīng)的匯編代碼;
插入模塊,用于將防止反編譯代碼插入到所述匯編代碼之前。
上述可執(zhí)行文件的加固方法和裝置,通過將應(yīng)用程序的可執(zhí)行文件代碼編譯為匯編文件,將匯編文件中所需保護(hù)的代碼所對(duì)應(yīng)的匯編代碼,并將防止反編譯代碼插入到該匯編代碼前,反編譯器對(duì)應(yīng)用程序的可執(zhí)行文件進(jìn)行反編譯時(shí),使得反編譯器難以反編譯欲保護(hù)的代碼,提高應(yīng)用程序的安全性,防止應(yīng)用程序被植入惡意指令,以及防止惡意指令竊取用戶數(shù)據(jù),提高了用戶數(shù)據(jù)的安全性。
此外,識(shí)別到模式切換指令后,對(duì)模式切換指令后的匯編代碼識(shí)別為垃圾指令,從而誤導(dǎo)反編譯器,提高了應(yīng)用程序的安全性,防止應(yīng)用程序被植入惡意指令,以及防止惡意指令竊取用戶數(shù)據(jù),提高了用戶數(shù)據(jù)的安全性,同時(shí)也不影響保護(hù)代碼的正常執(zhí)行。
通過反編譯器識(shí)別模式切換指令后,將模式切換指令后的正常代碼識(shí)別為垃圾指令,能解決運(yùn)行時(shí)解密后內(nèi)存中存在原始的代碼,反編譯者從內(nèi)存中把代碼拷貝出來達(dá)到反編譯的目的的問題,以及在正常執(zhí)行代碼的過程中,不需解密大量數(shù)據(jù),降低了解密消耗,提高了運(yùn)行效率。
附圖說明
圖1A為一個(gè)實(shí)施例中終端的內(nèi)部結(jié)構(gòu)示意圖;
圖1B為一個(gè)實(shí)施例中服務(wù)器的內(nèi)部結(jié)構(gòu)示意圖;
圖2為一個(gè)實(shí)施例中可執(zhí)行文件的加固方法的流程圖;
圖3為一個(gè)實(shí)施例中可執(zhí)行文件的加固方法的運(yùn)行原理示意圖;
圖4為一個(gè)實(shí)施例中可執(zhí)行文件的加固裝置的內(nèi)部結(jié)構(gòu)框圖;
圖5為另一個(gè)實(shí)施例中可執(zhí)行文件的加固裝置的內(nèi)部結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
可以理解,本發(fā)明所使用的術(shù)語“第一”、“第二”等可在本文中用于描述各種元件,但這些元件不受這些術(shù)語限制。這些術(shù)語僅用于將第一個(gè)元件與另一個(gè)元件區(qū)分。舉例來說,在不脫離本發(fā)明的范圍的情況下,可以將第一客戶端稱為第二客戶端,且類似地,可將第二客戶端稱為第一客戶端。第一客戶端和第二客戶端兩者都是客戶端,但其不是同一客戶端。
圖1A為一個(gè)實(shí)施例中終端的內(nèi)部結(jié)構(gòu)示意圖。如圖1A所示,該終端包括通過系統(tǒng)總線連接的處理器、存儲(chǔ)介質(zhì)、內(nèi)存和網(wǎng)絡(luò)接口。其中,終端的存儲(chǔ)介質(zhì)存儲(chǔ)有操作系統(tǒng),還包括一種可執(zhí)行文件的加固裝置,該可執(zhí)行文件的加固裝置用于實(shí)現(xiàn)一種可執(zhí)行文件的加固方法。該處理器用于提供計(jì)算和控制能力,支撐整個(gè)終端的運(yùn)行。終端中的內(nèi)存為存儲(chǔ)介質(zhì)中的可執(zhí)行文件的加固裝置的運(yùn)行提供環(huán)境,網(wǎng)絡(luò)接口用于與服務(wù)器進(jìn)行網(wǎng)絡(luò)通信,如發(fā)送應(yīng)用程序安裝包的下載請(qǐng)求至服務(wù)器,接收服務(wù)器返回的應(yīng)用程序安裝包等。該終端可以是手機(jī)、平板電腦或者個(gè)人數(shù)字助理。本領(lǐng)域技術(shù)人員可以理解,圖1A中示出的結(jié)構(gòu),僅僅是與本申請(qǐng)方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對(duì)本申請(qǐng)方案所應(yīng)用于其上的終端的限定,具體的終端可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。
圖1B為一個(gè)實(shí)施例中服務(wù)器的內(nèi)部結(jié)構(gòu)示意圖。如圖1B所示,該服務(wù)器包括通過系統(tǒng)總線連接的處理器、存儲(chǔ)介質(zhì)、內(nèi)存和網(wǎng)絡(luò)接口。其中,該服務(wù)器的存儲(chǔ)介質(zhì)存儲(chǔ)有操作系統(tǒng)、數(shù)據(jù)庫(kù)和可執(zhí)行文件的加固裝置,數(shù)據(jù)庫(kù)中存儲(chǔ)有應(yīng)用程序的安裝包,該可執(zhí)行文件的加固裝置用于實(shí)現(xiàn)適用于服務(wù)器的一種可執(zhí)行文件的加固方法。該服務(wù)器的處理器用于提供計(jì)算和控制能力,支撐整個(gè)服務(wù)器的運(yùn)行。該服務(wù)器的內(nèi)存為存儲(chǔ)介質(zhì)中的可執(zhí)行文件的加固裝置的運(yùn)行提供環(huán)境。該服務(wù)器的網(wǎng)絡(luò)接口用于據(jù)以與外部的終端通過網(wǎng)絡(luò)連接通信, 比如接收終端發(fā)送的應(yīng)用程序安裝包的下載請(qǐng)求以及向終端返回應(yīng)用程序的安裝包等。服務(wù)器可以用獨(dú)立的服務(wù)器或者是多個(gè)服務(wù)器組成的服務(wù)器集群來實(shí)現(xiàn)。本領(lǐng)域技術(shù)人員可以理解,圖1B中示出的結(jié)構(gòu),僅僅是與本申請(qǐng)方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對(duì)本申請(qǐng)方案所應(yīng)用于其上的服務(wù)器的限定,具體的服務(wù)器可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。
因反編譯器對(duì)應(yīng)用程序的安裝包中的代碼按照代碼順序依次進(jìn)行識(shí)別后,從而將應(yīng)用程序的可執(zhí)行文件轉(zhuǎn)換成可閱讀代碼,然后再將反編譯生成的可閱讀代碼加入惡意指令或進(jìn)行篡改等得到新的代碼,通過對(duì)新的代碼重新進(jìn)行打包生成新的應(yīng)用程序的安裝包,該新的應(yīng)用程序的安裝包被下載在移動(dòng)終端上,并安裝在移動(dòng)終端上后,新的應(yīng)用程序的安裝包運(yùn)行于移動(dòng)終端上,將竊取用戶的數(shù)據(jù),導(dǎo)致應(yīng)用程序的安裝包不安全和用戶數(shù)據(jù)也不安全。為此,通過在可執(zhí)行文件的匯編代碼之前插入防止反編譯的代碼(如插入跳轉(zhuǎn)指令和模式切換指令),如此反編譯器將無法對(duì)應(yīng)用程序的可執(zhí)行文件的代碼進(jìn)行反編譯,提高了應(yīng)用程序代碼的安全性,防止竊取用戶數(shù)據(jù),提高了用戶數(shù)據(jù)的安全性。
加固是指對(duì)應(yīng)用程序的安裝包進(jìn)行一系列的保護(hù)工作,輸出另一個(gè)安裝包,防止應(yīng)用程序被反編譯、惡意篡改、保護(hù)應(yīng)用數(shù)據(jù)不被竊取及其它重打包可造成的惡意攻擊等。
圖2為一個(gè)實(shí)施例中可執(zhí)行文件的加固方法的流程圖。圖2中的可執(zhí)行文件的加固方法運(yùn)行于移動(dòng)終端上。如圖2所示,一種可執(zhí)行文件的加固方法,包括以下步驟:
步驟202,獲取應(yīng)用程序的可執(zhí)行文件代碼。
具體地,應(yīng)用程序是指運(yùn)行于移動(dòng)終端上的應(yīng)用軟件。該移動(dòng)終端可為智能手機(jī)、平板電腦、個(gè)人數(shù)字助理等。應(yīng)用程序的核心算法代碼幾乎都保存在可執(zhí)行文件SO里,因此,獲取應(yīng)用程序的可執(zhí)行文件代碼。SO(Shared Object)文件為用戶層的動(dòng)態(tài)鏈接庫(kù)。
在移動(dòng)終端上可安裝Android系統(tǒng)或IOS系統(tǒng)等。應(yīng)用程序安裝在移動(dòng)終端上,并運(yùn)行于Android系統(tǒng)或IOS系統(tǒng)下。
步驟204,將應(yīng)用程序的可執(zhí)行文件代碼編譯為匯編文件。
具體地,將應(yīng)用程序的可執(zhí)行文件SO的C++代碼編譯為S匯編文件。
步驟206,從該匯編文件中獲取預(yù)先設(shè)定的需要保護(hù)的代碼所對(duì)應(yīng)的匯編代碼。
具體地,該預(yù)先設(shè)定的需要保護(hù)的代碼為全部的代碼或預(yù)先指定的部分代碼。
在通常情況下,默認(rèn)要保護(hù)的代碼為應(yīng)用程序的可執(zhí)行文件中的全部代碼。也可由用戶預(yù)先指定保護(hù)那部分代碼。
若要保護(hù)的代碼為應(yīng)用程序的可執(zhí)行文件中的全部代碼,則將匯編文件中所有的匯編代碼作為要保護(hù)的匯編代碼。
若要保護(hù)的代碼為應(yīng)用程序的可執(zhí)行文件中的部分代碼,則需從匯編文件中選取預(yù)先設(shè)定的需要保護(hù)的代碼所對(duì)應(yīng)的匯編代碼。
步驟208,將防止反編譯代碼插入到該匯編代碼之前。
本實(shí)施例中,步驟208包括:將模式切換指令插入到該匯編代碼之前,以及將跳轉(zhuǎn)指令插入到該模式切換指令之前。
具體地,在需要保護(hù)的匯編代碼的上一句代碼插入模式切換指令BX、BLX等,在模式切換指令上一句代碼再插入跳轉(zhuǎn)指令。
上述可執(zhí)行文件的加固方法,通過將應(yīng)用程序的可執(zhí)行文件代碼編譯為匯編文件,將匯編文件中所需保護(hù)的代碼所對(duì)應(yīng)的匯編代碼,并將防止反編譯代碼插入到該匯編代碼前,反編譯器對(duì)應(yīng)用程序的可執(zhí)行文件進(jìn)行反編譯時(shí),使得反編譯器難以反編譯欲保護(hù)的代碼,提高應(yīng)用程序的安全性,防止應(yīng)用程序被植入惡意指令,以及防止惡意指令竊取用戶數(shù)據(jù),提高了用戶數(shù)據(jù)的安全性。識(shí)別到模式切換指令后,對(duì)模式切換指令后的匯編代碼識(shí)別為垃圾指令,從而誤導(dǎo)反編譯器,提高了應(yīng)用程序的安全性,防止應(yīng)用程序被植入惡意指令,以及防止惡意指令竊取用戶數(shù)據(jù),提高了用戶數(shù)據(jù)的安全性,同時(shí)也不影響保護(hù)代碼的正常執(zhí)行。
此外,上述可執(zhí)行文件的加固方法將反編譯器識(shí)別模式切換指令后,將模式切換指令后的正常代碼識(shí)別為垃圾指令,能解決運(yùn)行時(shí)解密后內(nèi)存中存在原 始的代碼,反編譯者從內(nèi)存中把代碼拷貝出來達(dá)到反編譯的目的的問題,以及在正常執(zhí)行代碼的過程中,不需解密大量數(shù)據(jù),降低了解密消耗,提高了運(yùn)行效率。
在一個(gè)實(shí)施例中,上述可執(zhí)行文件的加固方法還包括:獲取可執(zhí)行文件的運(yùn)行指令;根據(jù)該運(yùn)行指令運(yùn)行后,當(dāng)運(yùn)行到該跳轉(zhuǎn)指令時(shí)跳過該模式切換指令,直接運(yùn)行模式切換指令后的匯編代碼。
具體地,獲取用戶點(diǎn)擊應(yīng)用程序,并運(yùn)行該應(yīng)用程序。應(yīng)用程序運(yùn)行后,依次讀取應(yīng)用程序的代碼進(jìn)行執(zhí)行,當(dāng)運(yùn)行到跳轉(zhuǎn)指令時(shí),跳過后面的模式切換指令,直接讀取模式切換指令后的匯編代碼,執(zhí)行該匯編代碼。
應(yīng)用程序運(yùn)行時(shí)通過跳轉(zhuǎn)指令直接跳轉(zhuǎn)執(zhí)行模式切換后的匯編代碼,保證了應(yīng)用程序的正常運(yùn)行。
在一個(gè)實(shí)施例中,上述可執(zhí)行文件的加固方法還包括:獲取反編譯指令;根據(jù)該反編譯指令依次反編譯該跳轉(zhuǎn)指令、模式切換指令,并將該模式切換指令后的匯編代碼識(shí)別為垃圾指令。
具體地,反編譯器對(duì)應(yīng)用程序的代碼進(jìn)行反編譯時(shí),是依次對(duì)所有的代碼一條一條的讀取并進(jìn)行反編譯,反編譯器不會(huì)對(duì)跳轉(zhuǎn)指令做出反應(yīng),遇到模式切換指令就會(huì)把接下來的代碼作為模式切換后的指令識(shí)別,從而導(dǎo)致把正常代碼識(shí)別(即匯編代碼)為垃圾指令。
反編譯器識(shí)別到模式切換指令后,對(duì)模式切換指令后的匯編代碼識(shí)別為垃圾指令,從而誤導(dǎo)反編譯器,提高了應(yīng)用程序的安全性,防止應(yīng)用程序被植入惡意指令,以及防止惡意指令竊取用戶數(shù)據(jù),提高了用戶數(shù)據(jù)的安全性。
圖3為一個(gè)實(shí)施例中可執(zhí)行文件的加固方法的運(yùn)行原理示意圖。如圖3所示,可執(zhí)行文件運(yùn)行,當(dāng)執(zhí)行到跳轉(zhuǎn)指令時(shí)跳過模式切換指令,直接讀取模式切換指令后的正常代碼,IDA Pro反編譯識(shí)別可執(zhí)行文件代碼,識(shí)別到模式切換指令后,將正常代碼被識(shí)別為模式切換后的代碼,成為垃圾指令。IDA Pro是一款反匯編軟件,通過IDA視圖和交叉引用,可以理解程序邏輯和快速定位代碼片斷,以方便修改。
需要說明的是,對(duì)于Android系統(tǒng),可利用可執(zhí)行文件SO的匯編arm的 thumb模式切換,以及不可執(zhí)行到的代碼片段,欺騙反編譯器對(duì)要保護(hù)代碼進(jìn)行模式識(shí)別,從而達(dá)到反編譯器難以反編譯要保護(hù)代碼的目的。
圖4為一個(gè)實(shí)施例中可執(zhí)行文件的加固裝置的內(nèi)部結(jié)構(gòu)框圖。圖4中的可執(zhí)行文件的加固裝置運(yùn)行于移動(dòng)終端上。如圖4所示,一種可執(zhí)行文件的加固裝置,包括第一獲取模塊410、編譯模塊420、第二獲取模塊430和插入模塊440。
第一獲取模塊410用于獲取應(yīng)用程序的可執(zhí)行文件代碼。
具體地,應(yīng)用程序是指運(yùn)行于移動(dòng)終端上的應(yīng)用軟件。該移動(dòng)終端可為智能手機(jī)、平板電腦、個(gè)人數(shù)字助理等。應(yīng)用程序的核心算法代碼幾乎都保存在可執(zhí)行文件SO里,因此,獲取應(yīng)用程序的可執(zhí)行文件代碼。
在移動(dòng)終端上可安裝Android系統(tǒng)或IOS系統(tǒng)等。應(yīng)用程序安裝在移動(dòng)終端上,并運(yùn)行于Android系統(tǒng)或IOS系統(tǒng)下。
編譯模塊420用于將應(yīng)用程序的可執(zhí)行文件代碼編譯為匯編文件。
具體地,應(yīng)用程序的可執(zhí)行文件SO的C++代碼編譯為S匯編文件。
第二獲取模塊430用于從該匯編文件中獲取預(yù)先設(shè)定的需要保護(hù)的代碼所對(duì)應(yīng)的匯編代碼。
具體地,該預(yù)先設(shè)定的需要保護(hù)的代碼為全部的代碼或預(yù)先指定的部分代碼。
在通常情況下,默認(rèn)要保護(hù)的代碼為應(yīng)用程序的可執(zhí)行文件中的全部代碼。也可由用戶預(yù)先指定保護(hù)那部分代碼。
若要保護(hù)的代碼為應(yīng)用程序的可執(zhí)行文件中的全部代碼,則將匯編文件中所有的匯編代碼作為要保護(hù)的匯編代碼。
若要保護(hù)的代碼為應(yīng)用程序的可執(zhí)行文件中的部分代碼,則需從匯編文件中選取預(yù)先設(shè)定的需要保護(hù)的代碼所對(duì)應(yīng)的匯編代碼。
插入模塊440用于將防止反編譯代碼插入到該匯編代碼之前。
本實(shí)施例中,插入模塊440還用于將模式切換指令插入到該匯編代碼之前,以及將跳轉(zhuǎn)指令插入到該模式切換指令之前。
具體地,在需要保護(hù)的匯編代碼的上一句代碼插入模式切換指令BX、BLX 等,在模式切換指令上一句代碼再插入跳轉(zhuǎn)指令。
上述可執(zhí)行文件的加固裝置,通過將應(yīng)用程序的可執(zhí)行文件代碼編譯為匯編文件,將匯編文件中所需保護(hù)的代碼所對(duì)應(yīng)的匯編代碼,并將防止反編譯代碼插入到該匯編代碼前,反編譯器對(duì)應(yīng)用程序的可執(zhí)行文件進(jìn)行反編譯時(shí),使得反編譯器難以反編譯欲保護(hù)的代碼,提高應(yīng)用程序的安全性,防止應(yīng)用程序被植入惡意指令,以及防止惡意指令竊取用戶數(shù)據(jù),提高了用戶數(shù)據(jù)的安全性。
識(shí)別到模式切換指令后,對(duì)模式切換指令后的匯編代碼識(shí)別為垃圾指令,從而誤導(dǎo)反編譯器,提高了應(yīng)用程序的安全性,防止應(yīng)用程序被植入惡意指令,以及防止惡意指令竊取用戶數(shù)據(jù),提高了用戶數(shù)據(jù)的安全性,同時(shí)也不影響保護(hù)代碼的正常執(zhí)行。
此外,上述可執(zhí)行文件的加固裝置將反編譯器識(shí)別模式切換指令后,將模式切換指令后的正常代碼識(shí)別為垃圾指令,能解決運(yùn)行時(shí)解密后內(nèi)存中存在原始的代碼,反編譯者從內(nèi)存中把代碼拷貝出來達(dá)到反編譯的目的的問題,以及在正常執(zhí)行代碼的過程中,不需解密大量數(shù)據(jù),降低了解密消耗,提高了運(yùn)行效率。
圖5為另一個(gè)實(shí)施例中可執(zhí)行文件的加固裝置的內(nèi)部結(jié)構(gòu)框圖。圖5中的可執(zhí)行文件的加固裝置運(yùn)行于移動(dòng)終端上。如圖5所示,一種可執(zhí)行文件的加固裝置,除了包括第一獲取模塊410、編譯模塊420、第二獲取模塊430和插入模塊440,還包括運(yùn)行指令獲取模塊450、執(zhí)行模塊460、反編譯指令獲取模塊470和反編譯模塊480。
運(yùn)行指令獲取模塊450用于獲取可執(zhí)行文件的運(yùn)行指令。
執(zhí)行模塊460用于根據(jù)該運(yùn)行指令運(yùn)行后,當(dāng)運(yùn)行到該跳轉(zhuǎn)指令時(shí)跳過該模式切換指令,直接運(yùn)行模式切換指令后的匯編代碼。
具體地,獲取用戶點(diǎn)擊應(yīng)用程序,并運(yùn)行該應(yīng)用程序。應(yīng)用程序運(yùn)行后,依次讀取應(yīng)用程序的代碼進(jìn)行執(zhí)行,當(dāng)運(yùn)行到跳轉(zhuǎn)指令時(shí),跳過后面的模式切換指令,直接讀取模式切換指令后的匯編代碼,執(zhí)行該匯編代碼。
應(yīng)用程序運(yùn)行時(shí)通過跳轉(zhuǎn)指令直接跳轉(zhuǎn)執(zhí)行模式切換后的匯編代碼,保證 了應(yīng)用程序的正常運(yùn)行。
反編譯指令獲取模塊470用于獲取反編譯指令。
反編譯模塊480用于根據(jù)該反編譯指令依次反編譯該跳轉(zhuǎn)指令、模式切換指令,并將該模式切換指令后的匯編代碼識(shí)別為垃圾指令。
具體地,反編譯器對(duì)應(yīng)用程序的代碼進(jìn)行反編譯時(shí),是依次對(duì)所有的代碼一條一條的讀取并進(jìn)行反編譯,反編譯器不會(huì)對(duì)跳轉(zhuǎn)指令做出反應(yīng),遇到模式切換指令就會(huì)把接下來的代碼作為模式切換后的指令識(shí)別,從而導(dǎo)致把正常代碼識(shí)別(即匯編代碼)為垃圾指令。
反編譯器識(shí)別到模式切換指令后,對(duì)模式切換指令后的匯編代碼識(shí)別為垃圾指令,從而誤導(dǎo)反編譯器,提高了應(yīng)用程序的安全性,防止應(yīng)用程序被植入惡意指令,以及防止惡意指令竊取用戶數(shù)據(jù),提高了用戶數(shù)據(jù)的安全性。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于一非易失性計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)等。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。