一種Android安裝包文件的保護(hù)方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)安全技術(shù)領(lǐng)域,具體涉及Android應(yīng)用程序的保護(hù)領(lǐng)域,尤其涉及一種Android安裝包文件的防破解方法及裝置。
【背景技術(shù)】
[0002]Android系統(tǒng)由Google公司開(kāi)發(fā),是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦等。當(dāng)在Android系統(tǒng)中安裝應(yīng)用程序時(shí),可以通過(guò)將Android安裝包(Android Package,簡(jiǎn)稱APK)文件直接傳送到Android模擬器或Android手機(jī)中執(zhí)行即可實(shí)現(xiàn)安裝。由于Android的開(kāi)源特性,DEX文件很容易被逆向分析和破解得到原始代碼,嚴(yán)重影響了 Android應(yīng)用程序的保護(hù)。
[0003]現(xiàn)有技術(shù)中可以通過(guò)路徑加載DEX文件的方式對(duì)APK文件進(jìn)行保護(hù)。通常情況下,應(yīng)用程序可以利用插件的方式進(jìn)行代碼加載,如DEX文件可以作為插件保存于設(shè)備或網(wǎng)絡(luò)中。當(dāng)應(yīng)用程序啟動(dòng)后,可以從指定的設(shè)備位置或網(wǎng)絡(luò)位置讀取DEX文件,從而動(dòng)態(tài)加載真正要執(zhí)行的代碼。
[0004]但是在通過(guò)路徑加載的方式讀取DEX文件時(shí),系統(tǒng)會(huì)在加載過(guò)程中默認(rèn)生成DEX文件優(yōu)化過(guò)的緩存文件(即臨時(shí)文件),而緩存文件中包含有可被逆向破解的源代碼,因此,逆向破解者通過(guò)靜態(tài)反匯編緩存文件仍然可以獲得原始的代碼指令。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明具體實(shí)施例提供一種Android安裝包APK文件的防破解方法及裝置,來(lái)解決以上【背景技術(shù)】部分提到的技術(shù)問(wèn)題。
[0006]—方面,本發(fā)明實(shí)施例提供了一種Android安裝包APK文件的防破解方法,所述方法包括:
[0007]將所述APK文件中的原始DEX文件處理為備用DEX文件并添加到所述APK文件的資源文件夾中;
[0008]構(gòu)建啟動(dòng)DEX文件,并將所述啟動(dòng)DEX文件添加到所述APK文件中,得到添加后的APK文件;
[0009]將所述添加后的APK文件的入口點(diǎn)修改為指向所述啟動(dòng)DEX文件,得到防破解的APK文件;
[0010]其中,所述啟動(dòng)DEX文件用于當(dāng)運(yùn)行所述防破解的APK文件時(shí),將所述備用DEX文件讀取進(jìn)內(nèi)存并運(yùn)行。
[0011]另一方面,本發(fā)明實(shí)施例還提供了一種Android安裝包APK文件的防破解裝置,所述裝置包括:
[0012]添加模塊,用于將所述APK文件中的原始DEX文件處理為備用DEX文件并添加到所述APK文件的資源文件夾中;
[0013]構(gòu)建模塊,用于構(gòu)建啟動(dòng)DEX文件,并將所述啟動(dòng)DEX文件添加到所述APK文件中,得到添加后的APK文件;
[0014]修改模塊,用于將所述構(gòu)建模塊得到的添加后的APK文件的入口點(diǎn)修改為指向所述啟動(dòng)DEX文件,得到防破解的APK文件;
[0015]其中,所述啟動(dòng)DEX文件用于當(dāng)運(yùn)行所述防破解的APK文件時(shí),將所述備用DEX文件讀取進(jìn)內(nèi)存并運(yùn)行。
[0016]本發(fā)明實(shí)施例提出的一種Android安裝包APK文件的防破解方法及裝置,通過(guò)將APK文件中的原始DEX文件處理為備用DEX文件保存到資源文件夾中,然后構(gòu)建啟動(dòng)DEX將備用DEX文件讀取進(jìn)內(nèi)存中執(zhí)行。由于備用DEX文件完全在內(nèi)存中進(jìn)行運(yùn)行,因此不會(huì)生成包含源碼的緩存文件,從而有效地保護(hù)了程序代碼的安全性,提高了 Android系統(tǒng)APK文件對(duì)抗靜態(tài)逆向破解的能力。
【附圖說(shuō)明】
[0017]通過(guò)閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
[0018]圖1是本發(fā)明具體實(shí)施例提供的一種Android安裝包APK文件的防破解方法流程圖;
[0019]圖2是本發(fā)明具體實(shí)施例提供的另一種Android安裝包APK文件的防破解方法流程圖;
[0020]圖3是本發(fā)明具體實(shí)施例提供的一種將所述備用DEX文件映射進(jìn)內(nèi)存并運(yùn)行的方法流程圖;
[0021]圖4是本發(fā)明具體實(shí)施例提供的一種運(yùn)行解密后的所述備用DEX文件的方法流程圖;
[0022]圖5是本發(fā)明具體實(shí)施例提供的一種Android安裝包APK文件的防破解裝置組成框圖;
[0023]圖6是本發(fā)明具體實(shí)施例提供的另一種Android安裝包APK文件的防破解裝置組成框圖。
【具體實(shí)施方式】
[0024]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明??梢岳斫獾氖?,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,而非對(duì)本發(fā)明的限定。另外還需要說(shuō)明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部?jī)?nèi)容。
[0025]本發(fā)明的具體實(shí)施例提供了一種Android安裝包APK文件的防破解的具體方法,本領(lǐng)域普通技術(shù)人員可以理解,所述方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成的,所述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,所述的存儲(chǔ)介質(zhì)包括R0M/RAM,磁盤,光盤等。如圖1所示,該方法在執(zhí)行時(shí),包括如下步驟:
[0026]101、將所述APK文件中的原始DEX文件處理為備用DEX文件并添加到所述APK文件的資源文件夾中。
[0027]其中,所述APK是Android Package的縮寫(xiě),即Android安裝包。一個(gè)Android應(yīng)用程序的代碼想要在Android設(shè)備上運(yùn)行,必須先進(jìn)行編譯,然后被打包成為一個(gè)被Android系統(tǒng)所能識(shí)別的文件才可以被運(yùn)行,而這種能被Android系統(tǒng)識(shí)別并運(yùn)行的文件格式便是“APK”。一個(gè)APK文件內(nèi)可以包含被編譯的代碼文件(DEX文件),資源文件夾(名稱為res的文件夾),證書(shū)(certificates)和清單文件(manifest file)等。APK文件其實(shí)是zip格式,但后綴名被修改為apk,通過(guò)Unzip解壓后,就可以得到所述APK文件中的原始DEX文件,其中DEX是DalvikVM executes的全稱,即Android Dalvik執(zhí)行程序,也就是說(shuō),DEX文件的功能類似于Windows系統(tǒng)下的EXE文件。
[0028]具體地,當(dāng)將所述APK文件中的原始DEX文件處理為備用DEX文件并添加到所述APK文件的資源文件夾中時(shí),可以首先將所述APK文件進(jìn)行解包處理,得到所述APK文件的解包文件夾,然后從所述解包文件夾中獲取所述原始DEX文件。接著既可以將所述原始DEX文件直接作為備用DEX文件添加到所述APK文件的資源文件夾中,也可以對(duì)所述原始DEX文件進(jìn)行一些不影響其原始功能的處理,然后將處理后的原始DEX文件作為備用DEX文件添加到所述APK文件的資源文件夾中。無(wú)論采用上述哪種方式將所述原始DEX文件處理為備用DEX文件,所述備用DEX文件都包含了所述原始DEX文件的全部?jī)?nèi)容,因此可以實(shí)現(xiàn)所述原始DEX文件的全部功能。
[0029]需要特別說(shuō)明的是,在將所述APK文件中的原始DEX文件處理為備用DEX文件并添加到所述APK文件的資源文件夾中時(shí),可以直接將原始DEX文件處理為備用DEX文件,然后移動(dòng)到所述APK文件的資源文件夾中;也可以首先將原始DEX文件復(fù)制到所述APK文件的資源文件夾中,然后再將所述資源文件夾中的原始DEX復(fù)件處理為備用DEX文件。并且,本領(lǐng)域技術(shù)人員可以理解,上述處理步驟與移動(dòng)或復(fù)制步驟的先后順序是不固定的,只要能實(shí)現(xiàn)所述APK文件的資源文件夾中最終存儲(chǔ)有所述備用DEX文件,就都在本發(fā)明的保護(hù)范圍內(nèi)。
[0030]102、構(gòu)建啟動(dòng)DEX文件,并將所述啟動(dòng)DEX文件添加到所述APK文件中,得到添加后的APK文件。
[0031]具體地,在構(gòu)建啟動(dòng)DEX文件時(shí),可以根據(jù)Android系統(tǒng)下DEX文件的通用構(gòu)建規(guī)則和語(yǔ)法規(guī)范新建一個(gè)DEX文件,即所述啟動(dòng)DEX文件,并且所述啟動(dòng)DEX文件用于替代所述原始DEX文件并實(shí)現(xiàn)所述APK文件的相關(guān)功能,也就是說(shuō)所述啟動(dòng)DEX文件可以讀取并運(yùn)行所述備用DEX文件。
當(dāng)前第1頁(yè)
1 
2 
3