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

應(yīng)用運行方法、文件加固方法和裝置與流程

文檔序號:12365254閱讀:160來源:國知局
本發(fā)明涉及計算機
技術(shù)領(lǐng)域
:,特別涉及一種應(yīng)用運行方法、文件加固方法和裝置。
背景技術(shù)
::安裝有Android(安卓)系統(tǒng)的終端通過安裝應(yīng)用的加固APK(AndroidPackage,安卓安裝包)來執(zhí)行應(yīng)用。加固APK括加固dex文件,該加固dex文件(DalvikExecutableFile,Dalvik虛擬機的可執(zhí)行文件)是指后綴名為dex的文件,且該加固dex文件包括該應(yīng)用包括的每個類對應(yīng)的字節(jié)碼。終端在應(yīng)用啟動時,在內(nèi)存中運行該加固dex文件以還原該字節(jié)碼得到還原字節(jié)碼,通過執(zhí)行該還原字節(jié)碼來運行該應(yīng)用。終端在啟動應(yīng)用時,會加載運行該應(yīng)用時所需的類,每個類包括至少一種類方法。終端劫持該應(yīng)用正在加載的類,將加固dex文件中該類包括的所有類方法對應(yīng)的字節(jié)碼還原到內(nèi)存中的加固dex文件中,得到該類包括的所有類方法對應(yīng)的還原字節(jié)碼,繼續(xù)加載該類,在加載完成后根據(jù)該類包括的所有類方法對應(yīng)的還原字節(jié)碼運行該應(yīng)用。由于終端將類包括的所有類方法對應(yīng)的字節(jié)碼還原到內(nèi)存中的加固dex文件中,這樣,在終端從加載應(yīng)用運行時所需的類開始,所有類方法對應(yīng)的還原字節(jié)碼一直暴露在內(nèi)存中的加固dex文件中,此時,所有類方法對應(yīng)的還原字節(jié)碼很容易被獲取和篡改,導(dǎo)致終端運行該應(yīng)用的安全性不高。技術(shù)實現(xiàn)要素:為了解決相關(guān)技術(shù)中終端運行應(yīng)用的安全性不高的問題,本發(fā)明實施例提供了一種應(yīng)用運行方法、文件加固方法和裝置。技術(shù)方案如下:第一方面,提供了一種應(yīng)用運行方法,該方法包括:在啟動應(yīng)用時,獲取應(yīng)用正在處理的類方法對應(yīng)的劫持函數(shù),類方法是應(yīng)用包括的一段代碼,劫持函數(shù)用于修改類方法的字節(jié)碼指針,字節(jié)碼指針用于指示類方法對應(yīng)的字節(jié)碼;利用劫持函數(shù)將類方法的字節(jié)碼指針由指示內(nèi)存中的加固dex文件中的類方法對應(yīng)的字節(jié)碼修改為指示預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼,內(nèi)存中的加固dex文件是終端運行應(yīng)用的APK中的加固dex文件得到的,預(yù)設(shè)文件是APK中的文件,且預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼是從APK中的加固dex文件中轉(zhuǎn)移得到的;利用劫持函數(shù)將預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼還原到申請的內(nèi)存資源中,得到還原字節(jié)碼;利用劫持函數(shù)根據(jù)還原字節(jié)碼運行應(yīng)用的類方法。第二方面,提供了一種文件加固方法,該方法包括:根據(jù)應(yīng)用包括的每個類對應(yīng)的安全策略生成安全策略文件,該安全策略用于供終端從至少一個劫持函數(shù)中確定終端正在處理的類方法所對應(yīng)的一個劫持函數(shù);將應(yīng)用的APK中的加固dex文件中的字節(jié)碼轉(zhuǎn)移至預(yù)設(shè)文件;將安全策略文件和預(yù)設(shè)文件插入應(yīng)用的APK中。第三方面,提供了一種應(yīng)用運行裝置,該裝置包括:獲取模塊,用于在啟動應(yīng)用時,獲取應(yīng)用正在處理的類方法對應(yīng)的劫持函數(shù),類方法是應(yīng)用包括的一段代碼,該劫持函數(shù)用于修改類方法的字節(jié)碼指針,該字節(jié)碼指針用于指示類方法對應(yīng)的字節(jié)碼;第一修改模塊,用于利用獲取模塊獲取的劫持函數(shù)將類方法的字節(jié)碼指針由指示內(nèi)存中的加固dex文件中的類方法對應(yīng)的字節(jié)碼修改為指示預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼,內(nèi)存中的加固dex文件是終端運行應(yīng)用的APK中的加固dex文件得到的,預(yù)設(shè)文件是APK中的文件,且預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼是從APK中的加固dex文件中轉(zhuǎn)移得到的;還原模塊,用于利用劫持函數(shù)將第一修改模塊得到的預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼還原到申請的內(nèi)存資源中,得到還原字節(jié)碼;第一運行模塊,用于利用劫持函數(shù)根據(jù)還原模塊得到的還原字節(jié)碼運行應(yīng)用的類方法。第四方面,提供了一種文件加固裝置,該裝置包括:生成模塊,用于根據(jù)應(yīng)用包括的每個類對應(yīng)的安全策略生成安全策略文件,該安全策略用于供終端從至少一個劫持函數(shù)中確定終端正在處理的類方法所對應(yīng)的一個劫持函數(shù);轉(zhuǎn)移模塊,用于將應(yīng)用的APK中的加固dex文件中的字節(jié)碼轉(zhuǎn)移至預(yù)設(shè)文件;插入模塊,用于將生成模塊生成的安全策略文件和轉(zhuǎn)移模塊得到的預(yù)設(shè)文件插入應(yīng)用的APK中。本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:通過利用劫持函數(shù)將終端正在處理的類方法的字節(jié)碼指針由內(nèi)存中的加固dex文件中的該類方法對應(yīng)的字節(jié)碼修改為指示預(yù)設(shè)文件中的該類方法對應(yīng)的字節(jié)碼,將該預(yù)設(shè)文件中的該類方法的對應(yīng)的字節(jié)碼還原到申請的內(nèi)存資源中,而不是還原到內(nèi)存中的加固dex文件中,使得惡意人員無法從內(nèi)存中的加固dex文件中獲得還原字節(jié)碼,也無法從該應(yīng)用的APK中的加固dex文件獲取還原字節(jié)碼,解決了在終端將還原字節(jié)碼還原到內(nèi)存中的加固dex文件中時,惡意人員可以從該加固dex文件中獲取到還原字節(jié)碼,從而惡意篡改該還原字節(jié)碼,導(dǎo)致終端運行應(yīng)用不安全的問題,達到了提高終端運行應(yīng)用的安全性的效果。另外,通過將APK中的加固dex文件中的字節(jié)碼轉(zhuǎn)移至預(yù)設(shè)文件,使得惡意人員無法從該加固dex文件中獲取到字節(jié)碼,從而對字節(jié)碼進行反編譯得到還原字節(jié)碼,提高了應(yīng)用中字節(jié)碼的安全性。附圖說明為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1A是本發(fā)明一個實施例中提供的應(yīng)用運行方法的方法流程圖;圖1B是本發(fā)明一個實施例中提供的文件加固方法的方法流程圖;圖2是本發(fā)明另一個實施例中提供的應(yīng)用運行方法的方法流程圖;圖3是本發(fā)明一個實施例中提供的根據(jù)一級安全策略運行應(yīng)用的示意圖;圖4是本發(fā)明一個實施例中提供的根據(jù)二級安全策略運行應(yīng)用的示意圖;圖5A是本發(fā)明一個實施例中提供的根據(jù)三級安全策略運行應(yīng)用的示意圖;圖5B是本發(fā)明一個實施例中提供的另一種根據(jù)三級安全策略運行應(yīng)用的示意圖;圖6是本發(fā)明另一個實施例中提供的文件加固方法的方法流程圖;圖7是本發(fā)明一個實施例中提供的應(yīng)用運行裝置的框圖;圖8是本發(fā)明一個實施例中提供的文件加固裝置的框圖。具體實施方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。請參見圖1A,其示出了本發(fā)明實施例提供的一種應(yīng)用運行方法的流程圖。本實施例以該應(yīng)用運行方法用于終端中為例進行說明,該方法至少包括以下步驟。步驟101,在啟動應(yīng)用時,獲取應(yīng)用正在處理的類方法對應(yīng)的劫持函數(shù)。類方法是應(yīng)用包括的一段代碼,劫持函數(shù)用于修改類方法的字節(jié)碼指針,字節(jié)碼指針用于指示類方法對應(yīng)的字節(jié)碼。步驟102,利用劫持函數(shù)將類方法的字節(jié)碼指針由指示內(nèi)存中的加固dex文件中的類方法對應(yīng)的字節(jié)碼修改為指示預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼。內(nèi)存中的加固dex文件是終端運行應(yīng)用的APK中的加固dex文件得到的,預(yù)設(shè)文件是APK中的文件,且預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼是從APK中的加固dex文件中轉(zhuǎn)移得到的。需要說明的,應(yīng)用的APK可以為加固APK,也可以為未加固的APK,本實施例不作限定。本文中以該APK為加固APK為例進行說明。步驟103,利用劫持函數(shù)將預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼還原到申請的內(nèi)存資源中,得到還原字節(jié)碼,。步驟104,利用劫持函數(shù)根據(jù)還原字節(jié)碼運行應(yīng)用的類方法。綜上所述,本發(fā)明實施例提供的應(yīng)用運行方法,通過利用劫持函數(shù)將終端正在處理的類方法的字節(jié)碼指針由內(nèi)存中的加固dex文件中的該類方法對應(yīng)的字節(jié)碼修改為指示預(yù)設(shè)文件中的該類方法對應(yīng)的字節(jié)碼,將該預(yù)設(shè)文件中的該類方法的對應(yīng)的字節(jié)碼還原到申請的內(nèi)存資源中,而不是還原到內(nèi)存中的加固dex文件中,使得惡意人員無法從內(nèi)存中的加固dex文件中獲得還原字節(jié)碼,也無法從該應(yīng)用的APK中的加固dex文件獲取還原字節(jié)碼,解決了在終端將還原字節(jié)碼還原到內(nèi)存中的加固dex文件中時,惡意人員可以從該加固dex文件中獲取到還原字節(jié)碼,從而惡意篡改該還原字節(jié)碼,導(dǎo)致終端運行應(yīng)用不安全的問題,達到了提高終端運行應(yīng)用的安全性的效果。在終端執(zhí)行圖1A所述的應(yīng)用運行方法之前,需要從服務(wù)器下載該應(yīng)用的APK,該應(yīng)用的APK會由服務(wù)器進行加固,以使得終端可以安全運行該應(yīng)用。請參見圖1B,其示出了本發(fā)明實施例提供的一種文件加固方法的流程圖。本實施例以該應(yīng)用運行方法用于服務(wù)器中為例進行說明,該方法至少包括以下步驟。步驟106,根據(jù)應(yīng)用包括的每個類對應(yīng)的安全策略生成安全策略文件。該安全策略用于供終端從至少一個劫持函數(shù)中確定該終端正在處理的類方法所對應(yīng)的一個劫持函數(shù)。步驟107,將應(yīng)用的APK中的加固dex文件中的字節(jié)碼轉(zhuǎn)移至預(yù)設(shè)文件。步驟108,將安全策略文件和預(yù)設(shè)文件插入應(yīng)用的APK中。綜上所述,本發(fā)明實施例提供的應(yīng)用運行方法,通過將APK中的加固dex文件中的字節(jié)碼轉(zhuǎn)移至預(yù)設(shè)文件,使得惡意人員無法從該加固dex文件中獲取到字節(jié)碼,從而對字節(jié)碼進行反編譯得到還原字節(jié)碼,提高了應(yīng)用中字節(jié)碼的安全性。請參見圖2,其示出了本發(fā)明實施例提供的一種應(yīng)用運行方法的方法流程圖。本實施例以該應(yīng)用運行方法用于終端中為例進行說明,該方法至少包括以下步驟。步驟201,在啟動應(yīng)用時,檢測系統(tǒng)支持的安全策略,根據(jù)系統(tǒng)支持的安全策略調(diào)用n種劫持函數(shù),n為正整數(shù)。在啟動應(yīng)用時,終端會從服務(wù)器下載的該應(yīng)用的APK中獲取并執(zhí)行代理dex文件,通過該代理dex文件啟動終端中的安全動態(tài)庫,再通過該安全動態(tài)庫來確定系統(tǒng)支持的安全策略。其中,安全動態(tài)庫是指APK中后綴名為so的文件,且該安全動態(tài)庫包括n種劫持函數(shù)和每種劫持函數(shù)對應(yīng)的安全策略。n種劫持函數(shù)至少包括加載劫持函數(shù)、預(yù)執(zhí)行劫持函數(shù)和執(zhí)行劫持函數(shù),加載劫持函數(shù)用于在加載類方法時修改該類方法的字節(jié)碼指針,預(yù)執(zhí)行劫持函數(shù)用于在預(yù)執(zhí)行該類方法時修改該類方法的字節(jié)碼指針,執(zhí)行劫持函數(shù)用于在執(zhí)行該類方法時修改該類方法的字節(jié)碼指針,字節(jié)碼指針用于指示類方法對應(yīng)的字節(jié)碼。當(dāng)終端調(diào)用了該n種劫持函數(shù)時,加載劫持函數(shù)會在預(yù)執(zhí)行劫持函數(shù)之前獲取到終端正在處理的類方法,預(yù)執(zhí)行函數(shù)會在執(zhí)行劫持函數(shù)之前獲取到該終端正在處理的類方法。其中,類方法是指應(yīng)用的APK中的運行該應(yīng)用所需的每個類中的一段代碼,此處的類方法也可以被稱為函數(shù),本實施不對類方法的名稱作限定。安全策略用于從終端調(diào)用的n種劫持函數(shù)中確定該終端正在處理的類方法所對應(yīng)的一個劫持函數(shù)。其中,該安全策略至少包括一級安全策略、二級安全策略和三級安全策略。本實施例中,一級安全策略與加載劫持函數(shù)對應(yīng),二級安全策略與預(yù)執(zhí)行劫持函數(shù)對應(yīng),三級安全策略與執(zhí)行劫持函數(shù)對應(yīng)。由于安全動態(tài)庫中的n種劫持函數(shù)獲取到終端正在處理的類方法的時機越早,該類方法對應(yīng)的還原字節(jié)碼暴露在內(nèi)存中的時間越長,該還原字節(jié)碼越不安全,因此,對于保證還原字節(jié)碼的安全性來說,一級安全策略的安全等級低于二級安全策略的安全等級,二級安全策略的安全等級低于三級安全策略的安全等級。其中,還原字節(jié)碼是將待處理類方法對應(yīng)的字節(jié)碼還原到內(nèi)存后得到的,且應(yīng)用在運行時需要使用該還原字節(jié)碼。其中,安全動態(tài)庫確定系統(tǒng)支持的安全策略,根據(jù)系統(tǒng)支持的安全策略調(diào)用n種劫持函數(shù),包括:檢測系統(tǒng)是否支持一級安全策略、二級安全策略和三級安全策略中的至少一種;當(dāng)系統(tǒng)支持一級安全策略時,調(diào)用一級安全策略對應(yīng)的加載劫持函數(shù);當(dāng)系統(tǒng)支持二級安全策略時,調(diào)用二級安全策略對應(yīng)的預(yù)執(zhí)行劫持函數(shù);當(dāng)系統(tǒng)支持三級安全策略時,調(diào)用三級安全策略對應(yīng)的執(zhí)行劫持函數(shù)。安全動態(tài)庫在檢測系統(tǒng)是否支持一級安全策略、二級安全策略和三級安全策略時采用的檢測方法相同,下文以安全動態(tài)庫檢測系統(tǒng)是否支持一級安全策略為例進行說明。安全動態(tài)庫檢測當(dāng)前系統(tǒng)是否包括執(zhí)行該一級安全策略所需使用數(shù)據(jù),在當(dāng)前系統(tǒng)包括執(zhí)行該一級安全策略所需使用的數(shù)據(jù)時,確定當(dāng)前系統(tǒng)支持該一級安全策略;在當(dāng)前系統(tǒng)不包括執(zhí)行該一級安全策略所需使用的數(shù)據(jù)時,確定當(dāng)前系統(tǒng)不支持該一級安全策略。其中,該數(shù)據(jù)可以包括執(zhí)行對應(yīng)的級別的安全策略所需使用的變量、符號、函數(shù)等,本實施例不作限定。需要說明的是,不同級安全策略所需使用的數(shù)據(jù)的參數(shù)類型或者參數(shù)值不同。比如,一級安全策略所需使用的數(shù)據(jù)包括變量和符號;二級安全策略所需使用的數(shù)據(jù)包括函數(shù);或者,一級安全策略和二級安全策略所需使用的數(shù)據(jù)都包括變量,且一級安全策略對應(yīng)的數(shù)據(jù)的變量名稱和二級安全策略對應(yīng)的數(shù)據(jù)的變量名稱不同。當(dāng)檢測出該系統(tǒng)不支持一級安全策略、二級安全策略和三級安全策略中的任意一種時,執(zhí)行步驟202;當(dāng)檢測出當(dāng)前的系統(tǒng)支持一級安全策略、二級安全策略和三級安全策略中的至少一種時,執(zhí)行步驟204。步驟202,當(dāng)檢測出系統(tǒng)不支持一級安全策略、二級安全策略和三級安全策略中的任意一種時,調(diào)用類劫持函數(shù)。類劫持函數(shù)用于獲取應(yīng)用正在處理的類,該類包括至少一個類方法。當(dāng)安全動態(tài)庫檢測出系統(tǒng)不支持一級安全策略、二級安全策略和三級安全策略中的任意一種時,通過安全動態(tài)庫將虛擬機中的加載類函數(shù)修改為加載類劫持指令,該加載類劫持指令使得終端中的虛擬機在利用加載類函數(shù)加載正在處理的類時,調(diào)用加載類劫持函數(shù)獲取該類。虛擬機可以為Dalvik虛擬機、也可以為ART(AndroidRuntime)虛擬機,本實施例不作限定。步驟203,利用類劫持函數(shù)將預(yù)設(shè)文件中類的所有類方法對應(yīng)的字節(jié)碼復(fù)制到內(nèi)存中的加固dex文件中,還原內(nèi)存中的加固dex文件中的字節(jié)碼得到還原字節(jié)碼;根據(jù)還原字節(jié)碼運行應(yīng)用的類,流程結(jié)束。其中,預(yù)設(shè)文件是開發(fā)者預(yù)設(shè)在服務(wù)器中的,用于存儲加固dex文件中的字節(jié)碼,且預(yù)設(shè)文件中的字節(jié)碼是從APK中的加固dex文件中轉(zhuǎn)移得到的,本實施例不對該預(yù)設(shè)文件的類型作限定。步驟204,當(dāng)檢測出當(dāng)前的系統(tǒng)支持一級安全策略、二級安全策略和三級安全策略中的至少一種時,獲取應(yīng)用正在處理的類方法對應(yīng)的劫持函數(shù)。本實施例中,虛擬機處理類方法包括以下處理階段:加載類方法、預(yù)執(zhí)行類方法、執(zhí)行類方法。在加載類方法時利用加載函數(shù)加載該類方法,在預(yù)執(zhí)行類方法時利用預(yù)執(zhí)行函數(shù)預(yù)執(zhí)行該類方法,在執(zhí)行類方法時利用執(zhí)行函數(shù)執(zhí)行該類方法。安全動態(tài)庫在檢測出系統(tǒng)支持一級安全策略、二級安全策略和三級安全策略中的至少一種時,會根據(jù)每種系統(tǒng)支持的安全策略對應(yīng)的劫持函數(shù),將虛擬機中對應(yīng)的函數(shù)修改為劫持指令,該劫持指令使得對應(yīng)的劫持函數(shù)獲取到終端正在處理的類方法。假設(shè)系統(tǒng)支持一級安全策略,則安全動態(tài)庫會將虛擬機中的加載函數(shù)修改為與加載劫持函數(shù)對應(yīng)的加載劫持指令,虛擬機在利用加載劫持指令函數(shù)加載類方法時,加載劫持指令將該類方法劫持到加載劫持函數(shù),使得加載劫持函數(shù)獲取到該類方法。又假設(shè)系統(tǒng)支持二級安全策略,則安全動態(tài)庫會將虛擬機中的預(yù)執(zhí)行函數(shù)修改為與預(yù)執(zhí)行劫持函數(shù)對應(yīng)的預(yù)執(zhí)行劫持指令,虛擬機在利用預(yù)執(zhí)行劫持指令函數(shù)預(yù)執(zhí)行類方法時,預(yù)執(zhí)行劫持指令將該類方法劫持到預(yù)執(zhí)行劫持函數(shù),使得預(yù)執(zhí)行劫持函數(shù)獲取到該類方法。又假設(shè)系統(tǒng)支持三級安全策略,則安全動態(tài)庫會將虛擬機中的執(zhí)行函數(shù)修改為與執(zhí)行劫持函數(shù)對應(yīng)的執(zhí)行劫持指令,虛擬機在利用執(zhí)行劫持指令函數(shù)執(zhí)行類方法時,執(zhí)行劫持指令將該類方法劫持到執(zhí)行劫持函數(shù),使得執(zhí)行劫持函數(shù)獲取到該類方法。對于n種劫持函數(shù)中的第m種劫持函數(shù),當(dāng)?shù)趍種劫持函數(shù)獲取到類方法時,獲取類方法對應(yīng)的安全策略;根據(jù)預(yù)設(shè)的劫持函數(shù)與安全策略的對應(yīng)關(guān)系,檢測第m種劫持函數(shù)對應(yīng)的安全策略是否與類方法對應(yīng)的安全策略相同;在第m種劫持函數(shù)對應(yīng)的安全策略與類方法對應(yīng)的安全策略相同時,確定第m種劫持函數(shù)為類方法對應(yīng)的劫持函數(shù);在第m種劫持函數(shù)對應(yīng)的安全策略與類方法對應(yīng)的安全策略相同時,將m更新為m+1,繼續(xù)執(zhí)行當(dāng)?shù)趍種劫持函數(shù)獲取到類方法時,獲取類方法對應(yīng)的安全策略的步驟,直至確定出類方法對應(yīng)的劫持函數(shù)時停止。其中,第m種劫持函數(shù)在第m+1種劫持函數(shù)之前獲取到類方法,m為小于n的正整數(shù)。假設(shè)終端支持一級安全策略、二級安全策略和三級安全策略,調(diào)用了加載劫持函數(shù)、預(yù)執(zhí)行劫持函數(shù)和執(zhí)行劫持函數(shù),那么加載劫持函數(shù)會優(yōu)先接收到終端正在處理的類方法,并檢測該類方法對應(yīng)的安全策略是否為一級安全策略,在該類方法對應(yīng)的安全策略是一級安全策略時,確定該加載劫持函數(shù)為該類方法對應(yīng)的劫持函數(shù);在該類方法對應(yīng)的安全策略不是一級安全策略時,該加載劫持函數(shù)將該類方法返回虛擬機,使得該虛擬機繼續(xù)處理該類方法,在該虛擬機預(yù)執(zhí)行該類方法時,預(yù)執(zhí)行劫持函數(shù)會獲取到該類方法,檢測該類方法對應(yīng)的安全策略是否為二級安全策略,在該類方法對應(yīng)的安全策略是二級安全策略時,確定該預(yù)執(zhí)行劫持函數(shù)為該類方法對應(yīng)的劫持函數(shù);在該類方法對應(yīng)的安全策略不是二級安全策略時,繼續(xù)執(zhí)行上述檢測步驟。安全動態(tài)庫獲取類方法對應(yīng)的安全策略,包括:獲取應(yīng)用的安全策略文件,該安全策略文件包括應(yīng)用中的每個類和每個類對應(yīng)的安全策略,每個類包括至少一個類方法;當(dāng)系統(tǒng)支持一級安全策略、二級安全策略和三級安全策略中的至少一種,且系統(tǒng)支持的安全策略包括安全策略文件指示的類方法所屬的類對應(yīng)的安全策略時,將類方法所屬的類對應(yīng)的安全策略確定為類方法對應(yīng)的安全策略;或者,當(dāng)系統(tǒng)支持一級安全策略、二級安全策略和三級安全策略中的任意一種或兩種,且系統(tǒng)支持的安全策略不包括安全策略文件指示的類方法所屬的類對應(yīng)的安全策略時,將系統(tǒng)支持的安全策略中的一種確定為類方法對應(yīng)的安全策略。在安全策略文件中,不同的類可以對應(yīng)相同的安全策略,不同的類也可以對應(yīng)不同的安全策略,本實施例不作限定。可選的,當(dāng)系統(tǒng)支持的安全策略不包括安全策略文件指示的類方法所屬的類對應(yīng)的安全策略時,安全動態(tài)庫將該類方法對應(yīng)的安全策略確定為系統(tǒng)支持的最高安全等級的安全策略。假設(shè)安全動態(tài)庫獲取到的安全策略文件如下表一所示,終端正在處理的類方法所屬的類為Class3,則根據(jù)表一所示的安全策略文件可知,該待處理類方法對應(yīng)的安全策略為三級安全策略,當(dāng)系統(tǒng)支持三級安全策略時,該類方法對應(yīng)的安全策略即為三級安全策略,當(dāng)系統(tǒng)不支持三級安全策略時,該類方法對應(yīng)的安全策略即為二級安全策略。表一:類安全策略Class1一級安全策略Class2一級安全策略Class3三級安全策略Class4二級安全策略安全動態(tài)庫獲取應(yīng)用的安全策略文件包括但不限于下述實現(xiàn)方式。在一種實現(xiàn)方式中,安全動態(tài)庫直接從應(yīng)用的APK中讀取安全策略文件。此時,由于APK中的安全策略文件不會改變,因此,即使某個類對應(yīng)的最優(yōu)的安全策略不是該安全策略文件中該類所對應(yīng)的安全策略時,終端也不會更改該類對應(yīng)的安全策略,從而無法確定出最優(yōu)的該類中的類方法對應(yīng)的劫持函數(shù)。在另一種實現(xiàn)方式中,終端在啟動應(yīng)用時,安全動態(tài)庫向服務(wù)器發(fā)送安全策略請求指令,該服務(wù)器根據(jù)安全策略請求指令下發(fā)安全策略文件;該安全動態(tài)庫獲取服務(wù)器下發(fā)的安全策略文件。其中,服務(wù)器中的安全策略文件是由開發(fā)者在獲得每個類當(dāng)前對應(yīng)的最優(yōu)的安全策略后,對安全策略文件進行更新后上傳到服務(wù)器中的。由于在每次啟動應(yīng)用時,安全動態(tài)庫都從服務(wù)器處重新獲取一份安全策略文件,使得應(yīng)用包括的每個類對應(yīng)的安全策略都是最優(yōu)的,提高了終端確定正在處理的類方法對應(yīng)的劫持函數(shù)的準(zhǔn)確性。步驟205,利用類方法對應(yīng)的劫持函數(shù)將該類方法的字節(jié)碼指針由指示內(nèi)存中的加固dex文件中的類方法對應(yīng)的字節(jié)碼修改為指示預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼。劫持函數(shù)在處理類方法時,會生成該類方法的方法結(jié)構(gòu)體,該方法結(jié)構(gòu)體包括該類方法對應(yīng)的字節(jié)碼指針。假設(shè)類方法對應(yīng)的劫持函數(shù)為加載加持函數(shù)時,請參考圖3,虛擬機中的加載劫持指令使得類方法被劫持到安全動態(tài)庫中的加載劫持函數(shù)中,安全動態(tài)庫中的加載劫持函數(shù)將該類方法的字節(jié)碼指針的指示對象由內(nèi)存中的加固dex文件中的類方法對應(yīng)的字節(jié)碼修改為預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼。假設(shè)類方法對應(yīng)的劫持函數(shù)為預(yù)執(zhí)行劫持函數(shù)時,請參考圖4,虛擬機中的預(yù)執(zhí)行劫持指令使得類方法被劫持到安全動態(tài)庫中的預(yù)執(zhí)行劫持函數(shù)中,安全動態(tài)庫中的預(yù)執(zhí)行劫持函數(shù)將該類方法的字節(jié)碼指針的指示對象由內(nèi)存中的加固dex文件中的類方法對應(yīng)的字節(jié)碼修改為預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼。假設(shè)類方法對應(yīng)的劫持函數(shù)為執(zhí)行劫持函數(shù)時,請參考圖5A,虛擬機中的執(zhí)行劫持指令使得類方法被劫持到安全動態(tài)庫中的預(yù)執(zhí)行劫持函數(shù)中,安全動態(tài)庫中的執(zhí)行劫持函數(shù)將該類方法的字節(jié)碼指針的指示對象由內(nèi)存中的加固dex文件中的類方法對應(yīng)的字節(jié)碼修改為預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼。步驟206,利用劫持函數(shù)將預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼還原到申請的內(nèi)存資源中,得到還原字節(jié)碼。其中,終端將還原字節(jié)碼還原到劫持函數(shù)申請的內(nèi)存資源中,使得惡意人員無法從內(nèi)存中的加固dex文件中獲取還原字節(jié)碼,提高了應(yīng)用運行過程中的安全性。步驟207,利用劫持函數(shù)根據(jù)該還原字節(jié)碼運行應(yīng)用的類方法。可選的,當(dāng)類方法對應(yīng)的劫持函數(shù)為執(zhí)行劫持函數(shù)時,執(zhí)行劫持函數(shù)在運行該類方法后,會將該類方法的字節(jié)碼指針的指示對象由預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼恢復(fù)為內(nèi)存中的加固dex文件中的類方法對應(yīng)的字節(jié)碼,并刪除內(nèi)存資源中的還原字節(jié)碼。這樣,還原字節(jié)碼只有在安全動態(tài)庫真正執(zhí)行該類方法期間才會暴露在內(nèi)存中,提高了應(yīng)用運行的安全性,請參考圖5B。綜上所述,本發(fā)明實施例提供的應(yīng)用運行方法,通過利用劫持函數(shù)將終端正在處理的類方法的字節(jié)碼指針由內(nèi)存中的加固dex文件中的該類方法對應(yīng)的字節(jié)碼修改為指示預(yù)設(shè)文件中的該類方法對應(yīng)的字節(jié)碼,將該預(yù)設(shè)文件中的該類方法的對應(yīng)的字節(jié)碼還原到申請的內(nèi)存資源中,而不是還原到內(nèi)存中的加固dex文件中,使得惡意人員無法從內(nèi)存中的加固dex文件中獲得還原字節(jié)碼,也無法從該應(yīng)用的APK中的加固dex文件獲取還原字節(jié)碼,解決了在終端將還原字節(jié)碼還原到內(nèi)存中的加固dex文件中時,惡意人員可以從該加固dex文件中獲取到還原字節(jié)碼,從而惡意篡改該還原字節(jié)碼,導(dǎo)致終端運行應(yīng)用不安全的問題,達到了提高終端運行應(yīng)用的安全性的效果。另外,通過在終端每次啟動應(yīng)用時,都從服務(wù)器處重新獲取一份安全策略文件,使得應(yīng)用包括的每個類對應(yīng)的安全策略可以根據(jù)開發(fā)者上傳到服務(wù)器中的更新的安全策略文件而變化,由于更新的安全策略文件通常為每個類對應(yīng)的最優(yōu)的安全策略,提高了終端中的安全動態(tài)庫確定每個正在處理的類方法對應(yīng)的劫持函數(shù)的準(zhǔn)確性。另外,通過檢測系統(tǒng)支持的安全策略,使得終端在系統(tǒng)不支持待處理類方法所屬的類對應(yīng)的安全策略時,修改該類對應(yīng)的安全策略,提高了終端執(zhí)行每個類的靈活性。在終端執(zhí)行圖2所述的應(yīng)用運行類方法之前,需要從服務(wù)器下載該應(yīng)用的APK,該應(yīng)用的APK會由服務(wù)器進行加固,以使得終端可以安全運行該應(yīng)用。請參見圖6,其示出了本發(fā)明實施例提供的一種文件加固類方法的類方法流程圖。本實施例以該文件加固類方法用于服務(wù)器中為例進行說明,該類方法至少包括以下步驟。步驟601,根據(jù)應(yīng)用包括的每個類對應(yīng)的安全策略生成安全策略文件。該安全策略用于供終端從至少一個劫持函數(shù)中確定該終端正在處理的類方法所對應(yīng)的一個劫持函數(shù)。每個類對應(yīng)的安全策略是由開發(fā)者上傳到服務(wù)器中的,也可以是服務(wù)器中默認的,本實施例不作限定。步驟602,將應(yīng)用的APK中的加固dex文件中的字節(jié)碼轉(zhuǎn)移至預(yù)設(shè)文件。通過將加固dex文件中的字節(jié)碼轉(zhuǎn)移至預(yù)設(shè)文件,這樣加固dex文件不包括該應(yīng)用對應(yīng)的字節(jié)碼,使得惡意人員無法從該加固dex文件中獲取到字節(jié)碼,從而對字節(jié)碼進行反編譯得到還原字節(jié)碼,提高了應(yīng)用中字節(jié)碼的安全性。步驟603,將安全策略文件和預(yù)設(shè)文件插入應(yīng)用的APK中。可選的,當(dāng)終端首次啟動應(yīng)用之前,會向服務(wù)器發(fā)送用于請求該應(yīng)用的APK的請求指令,服務(wù)器根據(jù)該請求指令向終端發(fā)送該APK。終端從該APK中獲取安全策略文件和預(yù)設(shè)文件,根據(jù)安全策略文件和預(yù)設(shè)文件執(zhí)行圖2所示的應(yīng)用運行類方法。步驟604,接收終端發(fā)送的安全策略請求指令。可選的,在本步驟之前,服務(wù)器還會接收到開發(fā)者上傳的更新的安全策略文件。步驟605,根據(jù)安全策略請求指令向終端發(fā)送安全策略文件??蛇x的,終端每次啟動應(yīng)用時,都會向服務(wù)器發(fā)送安全策略請求指令,服務(wù)器根據(jù)該安全策略請求指令向終端發(fā)送安全策略文件。當(dāng)服務(wù)器在上次接收到安全策略請求指令之后,本次接收到安全策略請求指令之前,接收到開發(fā)者上傳的更新的安全策略文件,則服務(wù)器根據(jù)該安全策略請求指令向終端發(fā)送該更新的安全策略文件。綜上所述,本實施例提供的文件加固類方法,通過將APK中的加固dex文件中的字節(jié)碼轉(zhuǎn)移至預(yù)設(shè)文件,使得惡意人員無法從該加固dex文件中獲取到字節(jié)碼,從而對字節(jié)碼進行反編譯得到還原字節(jié)碼,提高了應(yīng)用中字節(jié)碼的安全性。請參見圖7,其示出了本發(fā)明實施例提供的一種應(yīng)用運行裝置的框圖。本實施例以該應(yīng)用運行裝置用于終端中為例進行說明,該裝置包括:獲取模塊710,用于在啟動應(yīng)用時,獲取應(yīng)用正在處理的類方法對應(yīng)的劫持函數(shù),類方法是應(yīng)用包括的一段代碼,劫持函數(shù)用于修改類方法的字節(jié)碼指針,字節(jié)碼指針用于指示類方法對應(yīng)的字節(jié)碼;第一修改模塊720,用于利用獲取模塊710獲取的劫持函數(shù)將類方法的字節(jié)碼指針由指示內(nèi)存中的加固dex文件中的類方法對應(yīng)的字節(jié)碼修改為指示預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼,內(nèi)存中的加固dex文件是終端運行應(yīng)用的安卓安裝包APK中的加固dex文件得到的,預(yù)設(shè)文件是APK中的文件,且預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼是從APK中的加固dex文件中轉(zhuǎn)移得到的;還原模塊730,用于利用劫持函數(shù)將第一修改模塊720得到的預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼還原到申請的內(nèi)存資源中,得到還原字節(jié)碼;第一運行模塊740,用于利用劫持函數(shù)根據(jù)還原模塊730得到的還原字節(jié)碼運行應(yīng)用的類方法??蛇x的,獲取模塊,包括:調(diào)用單元,用于在啟動應(yīng)用時,檢測系統(tǒng)支持的安全策略,根據(jù)系統(tǒng)支持的安全策略調(diào)用n種劫持函數(shù),安全策略用于從至少一個劫持函數(shù)中確定類方法所對應(yīng)的一個劫持函數(shù),n為正整數(shù);獲取單元,用于對于n種劫持函數(shù)中的第m種劫持函數(shù),當(dāng)?shù)趍種劫持函數(shù)獲取到類方法時,獲取類方法對應(yīng)的安全策略;檢測單元,用于根據(jù)預(yù)設(shè)的劫持函數(shù)與安全策略的對應(yīng)關(guān)系,檢測調(diào)用單元調(diào)用的第m種劫持函數(shù)對應(yīng)的安全策略是否與獲取單元獲取的類方法對應(yīng)的安全策略相同;確定單元,用于在第m種劫持函數(shù)對應(yīng)的安全策略與類方法對應(yīng)的安全策略相同時,確定第m種劫持函數(shù)為類方法對應(yīng)的劫持函數(shù),觸發(fā)執(zhí)行利用劫持函數(shù)將類方法的字節(jié)碼指針由指示內(nèi)存中的加固dex文件中的類方法對應(yīng)的字節(jié)碼修改為指示預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼的步驟;在第m種劫持函數(shù)對應(yīng)的安全策略與類方法對應(yīng)的安全策略相同時,將m更新為m+1,繼續(xù)執(zhí)行當(dāng)?shù)趍種劫持函數(shù)獲取到類方法時,獲取類方法對應(yīng)的安全策略的步驟,其中,第m種劫持函數(shù)在第m+1種劫持函數(shù)之前獲取到類方法,m為小于n的正整數(shù)??蛇x的,安全策略包括一級安全策略、二級安全策略和三級安全策略,劫持函數(shù)包括加載劫持函數(shù)、預(yù)執(zhí)行劫持函數(shù)和執(zhí)行劫持函數(shù),加載劫持函數(shù)在預(yù)執(zhí)行劫持函數(shù)之前獲取到類方法,預(yù)執(zhí)行函數(shù)在執(zhí)行劫持函數(shù)之前獲取到類方法,調(diào)用單元,包括:檢測子單元,用于檢測系統(tǒng)是否支持一級安全策略、二級安全策略和三級安全策略中的至少一種;第一調(diào)用子單元,用于當(dāng)檢測子單元檢測出系統(tǒng)支持一級安全策略時,調(diào)用一級安全策略對應(yīng)的加載劫持函數(shù),加載劫持函數(shù)用于在加載類方法時修改類方法的字節(jié)碼指針;第二調(diào)用子單元,用于當(dāng)檢測子單元檢測出系統(tǒng)支持二級安全策略時,調(diào)用二級安全策略對應(yīng)的預(yù)執(zhí)行劫持函數(shù),預(yù)執(zhí)行劫持函數(shù)用于在預(yù)執(zhí)行類方法時修改類方法的字節(jié)碼指針;第三調(diào)用子單元,用于當(dāng)檢測子單元檢測出系統(tǒng)支持三級安全策略時,調(diào)用三級安全策略對應(yīng)的執(zhí)行劫持函數(shù),執(zhí)行劫持函數(shù)用于在執(zhí)行類方法時修改類方法的字節(jié)碼指針??蛇x的,當(dāng)類方法對應(yīng)的安全策略為三級安全策略時,類方法對應(yīng)的劫持函數(shù)為執(zhí)行劫持函數(shù),在利用劫持函數(shù)根據(jù)還原字節(jié)碼運行應(yīng)用的類方法之后,裝置還包括:第二修改模塊,用于利用劫持函數(shù)將類方法的字節(jié)碼指針由指示預(yù)設(shè)文件中的類方法對應(yīng)的字節(jié)碼修改為指示內(nèi)存中的加固dex文件中的類方法對應(yīng)的字節(jié)碼;刪除模塊,用于利用劫持函數(shù)刪除內(nèi)存資源中的還原字節(jié)碼??蛇x的,當(dāng)系統(tǒng)不支持一級安全策略、二級安全策略和三級安全策略中的任意一種時,該裝置還包括:調(diào)用模塊,用于調(diào)用類劫持函數(shù),類劫持函數(shù)用于獲取應(yīng)用正在處理的類,類包括至少一個類方法;第二運行模塊,用于利用調(diào)用模塊調(diào)用的類劫持函數(shù)將預(yù)設(shè)文件中類的所有類方法對應(yīng)的字節(jié)碼復(fù)制到內(nèi)存中的加固dex文件中,還原內(nèi)存中的加固dex文件中的字節(jié)碼得到還原字節(jié)碼;根據(jù)還原字節(jié)碼運行應(yīng)用的類??蛇x的,獲取單元,包括:第一獲取子單元,用于獲取應(yīng)用的安全策略文件,安全策略文件包括應(yīng)用中的每個類和每個類對應(yīng)的安全策略,每個類包括至少一個類方法;第一確定子單元,用于當(dāng)系統(tǒng)支持一級安全策略、二級安全策略和三級安全策略中的至少一種,且系統(tǒng)支持的安全策略包括獲取子單元獲取的安全策略文件指示的類方法所屬的類對應(yīng)的安全策略時,將類方法所屬的類對應(yīng)的安全策略確定為類方法對應(yīng)的安全策略;或者,第二確定子單元,用于當(dāng)系統(tǒng)支持一級安全策略、二級安全策略和三級安全策略中的任意一種或兩種,且系統(tǒng)支持的安全策略不包括獲取子單元獲取的安全策略文件指示的類方法所屬的類對應(yīng)的安全策略時,將系統(tǒng)支持的安全策略中的一種確定為類方法對應(yīng)的安全策略。可選的,第一獲取子單元,包括:發(fā)送子單元,用于在啟動應(yīng)用時向服務(wù)器發(fā)送安全策略請求指令,服務(wù)器根據(jù)安全策略請求指令下發(fā)安全策略文件;第二獲取子單元,用于獲取服務(wù)器下發(fā)的安全策略文件??蛇x的,第一獲取子單元,包括:讀取子單元,用于從APK中讀取安全策略文件。綜上所述,本發(fā)明實施例提供的應(yīng)用運行裝置,通過利用劫持函數(shù)將終端正在處理的類方法的字節(jié)碼指針由內(nèi)存中的加固dex文件中的該類方法對應(yīng)的字節(jié)碼修改為指示預(yù)設(shè)文件中的該類方法對應(yīng)的字節(jié)碼,將該預(yù)設(shè)文件中的該類方法的對應(yīng)的字節(jié)碼還原到申請的內(nèi)存資源中,而不是還原到內(nèi)存中的加固dex文件中,使得惡意人員無法從內(nèi)存中的加固dex文件中獲得還原字節(jié)碼,也無法從該應(yīng)用的APK中的加固dex文件獲取還原字節(jié)碼,解決了在終端將還原字節(jié)碼還原到內(nèi)存中的加固dex文件中時,惡意人員可以從該加固dex文件中獲取到還原字節(jié)碼,從而惡意篡改該還原字節(jié)碼,導(dǎo)致終端運行應(yīng)用不安全的問題,達到了提高終端運行應(yīng)用的安全性的效果。另外,通過在終端每次啟動應(yīng)用時,都從服務(wù)器處重新獲取一份安全策略文件,使得應(yīng)用包括的每個類對應(yīng)的安全策略可以根據(jù)開發(fā)者上傳到服務(wù)器中的更新的安全策略文件而變化,由于更新的安全策略文件通常為每個類對應(yīng)的最優(yōu)的安全策略,提高了終端中的安全動態(tài)庫確定每個正在處理的類方法對應(yīng)的劫持函數(shù)的準(zhǔn)確性。另外,通過檢測系統(tǒng)支持的安全策略,使得終端在系統(tǒng)不支持待處理類方法所屬的類對應(yīng)的安全策略時,修改該類對應(yīng)的安全策略,提高了終端執(zhí)行每個類的靈活性。請參見圖8,其示出了本發(fā)明實施例提供的一種文件加固裝置的框圖。本實施例以該文件加固裝置用于終端中為例進行說明,該裝置包括:生成模塊810,用于根據(jù)應(yīng)用包括的每個類對應(yīng)的安全策略生成安全策略文件,安全策略用于供終端從至少一個劫持函數(shù)中確定終端正在處理的類方法所對應(yīng)的一個劫持函數(shù);轉(zhuǎn)移模塊820,用于將應(yīng)用的安卓安裝包APK中的加固dex文件中的字節(jié)碼轉(zhuǎn)移至預(yù)設(shè)文件;插入模塊830,用于將生成模塊810生成的安全策略文件和轉(zhuǎn)移模塊820得到的預(yù)設(shè)文件插入應(yīng)用的APK中??蛇x的,該裝置還包括:接收模塊,用于接收終端發(fā)送的安全策略請求指令;發(fā)送模塊,用于根據(jù)接收模塊接收到的安全策略請求指令向終端發(fā)送安全策略文件。綜上所述,本發(fā)明實施例提供的文件加固裝置,通過將APK中的加固dex文件中的字節(jié)碼轉(zhuǎn)移至預(yù)設(shè)文件,使得惡意人員無法從該加固dex文件中獲取到字節(jié)碼,從而對字節(jié)碼進行反編譯得到還原字節(jié)碼,提高了應(yīng)用中字節(jié)碼的安全性。上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。當(dāng)前第1頁1 2 3 當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
光泽县| 绥化市| 渭南市| 桃园市| 阜南县| 白玉县| 江永县| 晴隆县| 平阴县| 浑源县| 洛南县| 达尔| 乐亭县| 应城市| 富源县| 嘉义县| 丰顺县| 莱阳市| 仙游县| 静海县| 常山县| 浙江省| 高台县| 金山区| 宝山区| 宁化县| 灵川县| 永济市| 商河县| 浮梁县| 望都县| 乌苏市| 阳泉市| 阿拉善右旗| 新河县| 宾川县| 五台县| 子洲县| 高尔夫| 健康| 铁岭县|