一種生成apk文件的方法及終端的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通訊領(lǐng)域,具體涉及一種生成APK文件的方法及終端。
【背景技術(shù)】
[0002]隨著智能移動(dòng)終端的出現(xiàn),涌現(xiàn)出了一批移動(dòng)終端系統(tǒng),如android(安卓)系統(tǒng)是一種目前廣泛應(yīng)用的智能移動(dòng)終端系統(tǒng),其中APK(Android applicat1n package)應(yīng)用安裝文件是一種標(biāo)準(zhǔn)android應(yīng)用安裝程序。
[0003]安卓平臺(tái)的軟件使用的編程語言是Java,并通過一些列的編譯打包過程將編寫的Java代碼最終形成APK文件,用于可以從網(wǎng)絡(luò)上下載這些APK文件進(jìn)行安裝。
[0004]然而,由于安卓移動(dòng)平臺(tái)發(fā)展和壯大,基于安卓平臺(tái)的軟件大量涌現(xiàn),這些軟件的分發(fā)方式變得比較混亂,再加上由于安卓平臺(tái)的軟件使用的編程語言是Java,生成的APK文件容易被反編譯工具反編譯為Java代碼,極易出現(xiàn)對APK文件盜版、篡改代碼并重打包分發(fā)的問題,如對反編譯得到的java代碼進(jìn)行分析、篡改或抄襲,如加入惡意代碼,添加病毒等,這種反向工程對安卓平臺(tái)的軟件安全構(gòu)成了很大的威脅,從而如何保護(hù)APK文件成為一個(gè)亟待解決的問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供了一種生成APK文件的方法及終端,能夠解決由于生成的APK文件容易被反編譯工具反編譯,極易出現(xiàn)對APK文件盜版、篡改代碼并重打包分發(fā)的問題,并能夠提高APK文件的安全性。
[0006]有鑒于此,本發(fā)明實(shí)施例第一方面提供一種生成APK文件的方法,可包括:
[0007]接收安卓虛擬機(jī)支持的可執(zhí)行文件;
[0008]根據(jù)預(yù)設(shè)校驗(yàn)規(guī)則計(jì)算可執(zhí)行文件的校驗(yàn)值;
[0009]對可執(zhí)行文件的校驗(yàn)值和預(yù)設(shè)校驗(yàn)規(guī)則進(jìn)行編譯生成供可執(zhí)行文件調(diào)用的第一文件;
[0010]將可執(zhí)行文件和第一文件進(jìn)行打包生成APK文件。
[0011 ] 結(jié)合第一方面,在第一方面的第一種可能的實(shí)現(xiàn)方式中,對可執(zhí)行文件的校驗(yàn)值和預(yù)設(shè)校驗(yàn)規(guī)則進(jìn)行編譯生成供可執(zhí)行文件調(diào)用的第一文件具體為:
[0012]利用NDK對可執(zhí)行文件的校驗(yàn)值和預(yù)設(shè)校驗(yàn)規(guī)則進(jìn)行編譯生成供可執(zhí)行文件調(diào)用的so文件。
[0013]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,創(chuàng)建指紋白名單,指紋白名單包括APK文件的至少一個(gè)簽名信息對應(yīng)的指紋;
[0014]按照第一加密規(guī)則對指紋白名單進(jìn)行加密生成第一加密數(shù)據(jù);
[0015]對可執(zhí)行文件的校驗(yàn)值和預(yù)設(shè)校驗(yàn)規(guī)則進(jìn)行編譯生成供可執(zhí)行文件調(diào)用的第一文件具體包括:
[0016]對可執(zhí)行文件的校驗(yàn)值、預(yù)設(shè)校驗(yàn)規(guī)則、第一加密數(shù)據(jù)和第一加密規(guī)則進(jìn)行編譯生成供可執(zhí)行文件調(diào)用的第一文件。
[0017]結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,方法還包括:
[0018]按照第二加密規(guī)則對私鑰信息加密生成第二加密數(shù)據(jù),私鑰信息用于加密Http請求;
[0019]對可執(zhí)行文件的校驗(yàn)值、預(yù)設(shè)校驗(yàn)規(guī)則、第一加密數(shù)據(jù)和第一加密規(guī)則進(jìn)行編譯生成供可執(zhí)行文件調(diào)用的第一文件具體為:
[0020]對可執(zhí)行文件的校驗(yàn)值、預(yù)設(shè)校驗(yàn)規(guī)則、第一加密數(shù)據(jù)、第一加密規(guī)則、第二加密數(shù)據(jù)和第二加密規(guī)則進(jìn)行編譯生成供可執(zhí)行文件調(diào)用的第一文件。
[0021]結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,第一加密規(guī)則包括:
[0022]XXTEA加密算法、RSA加密算法、DES加密算法或AES加密算法;
[0023]預(yù)設(shè)校驗(yàn)規(guī)則包括:CRC校驗(yàn)法、Adler32校驗(yàn)法、MD5校驗(yàn)法或SHAl校驗(yàn)法。
[0024]本發(fā)明實(shí)施例第二方面還提供一種終端,該終端可包括:
[0025]接收模塊,用于接收安卓虛擬機(jī)生成的可執(zhí)行文件;
[0026]計(jì)算模塊,用于根據(jù)預(yù)設(shè)校驗(yàn)規(guī)則計(jì)算可執(zhí)行文件的校驗(yàn)值;
[0027]編譯模塊,對可執(zhí)行文件的校驗(yàn)值和預(yù)設(shè)校驗(yàn)規(guī)則進(jìn)行編譯生成供可執(zhí)行文件調(diào)用的第一文件;
[0028]打包模塊,將可執(zhí)行文件和第一文件進(jìn)行打包生成APK文件。
[0029]結(jié)合第二方面,在第二方面的第一種可能的實(shí)現(xiàn)方式中,編譯模塊具體用于:
[0030]利用NDK對可執(zhí)行文件的校驗(yàn)值和預(yù)設(shè)校驗(yàn)規(guī)則進(jìn)行編譯生成供可執(zhí)行文件調(diào)用的庫文件。
[0031]結(jié)合第二方面,在第二方面的第二種可能的實(shí)現(xiàn)方式中,終端還包括:
[0032]創(chuàng)建模塊,用于創(chuàng)建指紋白名單,指紋白名單包括APK文件的至少一個(gè)簽名信息對應(yīng)的指紋;
[0033]第一加密模塊,用于按照第一加密規(guī)則對指紋白名單進(jìn)行加密生成第一加密數(shù)據(jù);
[0034]編譯模塊具體用于:
[0035]對可執(zhí)行文件的校驗(yàn)值、預(yù)設(shè)校驗(yàn)規(guī)則、第一加密數(shù)據(jù)和第一加密規(guī)則進(jìn)行編譯生成供可執(zhí)行文件調(diào)用的第一文件。
[0036]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,終端還包括:
[0037]第二加密模塊,用于按照第二加密規(guī)則對私鑰信息加密生成第二加密數(shù)據(jù),私鑰信息用于加密Http請求;
[0038]編譯模塊具體用于:
[0039]對可執(zhí)行文件的校驗(yàn)值、預(yù)設(shè)校驗(yàn)規(guī)則、第一加密數(shù)據(jù)、第一加密規(guī)則、第二加密數(shù)據(jù)和第二加密規(guī)則進(jìn)行編譯生成供可執(zhí)行文件調(diào)用的第一文件。
[0040]結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,計(jì)算模塊具體用于:
[0041]根據(jù)CRC校驗(yàn)法、Adler32校驗(yàn)法、MD5校驗(yàn)法或SHAl校驗(yàn)法計(jì)算可執(zhí)行文件的校驗(yàn)值。
[0042]第一加密模塊具體用于:
[0043]按照XXTEA加密算法、RSA加密算法、DES加密算法或AES加密算法對指紋白名單進(jìn)行加密生成第一加密數(shù)據(jù)。
[0044]從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):在現(xiàn)有的APK打包流程的基礎(chǔ)上,通過對可執(zhí)行文件計(jì)算校驗(yàn)值,并將該校驗(yàn)值和預(yù)設(shè)校驗(yàn)規(guī)則進(jìn)行編譯生成被可執(zhí)行文件調(diào)用的第一文件,由于可執(zhí)行文件和第一文件形成相互依賴的關(guān)系,最終打包出來的APK文件中的第一文件只能被當(dāng)次APK文件打包過程中生成的可執(zhí)行文件使用,而反編譯產(chǎn)生java代碼后,任何對java代碼的修改行為都會(huì)破壞可執(zhí)行文件和第一文件之間的依賴關(guān)系,使得再次編譯輸出的可執(zhí)行文件無法復(fù)用第一文件,從而無法運(yùn)行APK文件,從而提高APK文件的安全性以及提高生成APK文件的java代碼的自我保護(hù)能力,有效防止反編譯篡改java代碼的問題。
【附圖說明】
[0045]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0046]圖1是本發(fā)明實(shí)施例中方法的一個(gè)實(shí)施例圖;
[0047]圖2是本發(fā)明實(shí)施例中方法的另一個(gè)實(shí)施例圖;
[0048]圖3是本發(fā)明實(shí)施例中方法的另一個(gè)實(shí)施例圖;
[0049]圖4是本發(fā)明實(shí)施例中終端的一個(gè)實(shí)施例圖;
[0050]圖5是本發(fā)明實(shí)施例中終端的另一個(gè)實(shí)施例圖。
【具體實(shí)施方式】
[0051 ] 本發(fā)明實(shí)施例提供了一種生成APK文件的方法及終端,用于解決由于生成的AP