一種生成安卓安裝包apk的方法及裝置制造方法
【專利摘要】本發(fā)明實施例公開了一種生成安卓安裝包APK的方法及裝置,涉及計算機軟件【技術領域】,其中,所述方法包括:獲得生成目標APK所需的文件;對所獲得的文件進行打包處理,生成原始APK;對所述原始APK進行偽加密處理,生成所述目標APK。應用本發(fā)明實施例提供的方案生成的目標APK,增加了目標APK被反編譯的難度,進而提高了目標APK防止被反編譯的能力,即提高了目標APK的安全性。
【專利說明】-種生成安卓安裝包APK的方法及裝置
【技術領域】
[0001] 本發(fā)明涉及計算機軟件【技術領域】,特別涉及一種生成安卓安裝包ΑΡΚ的方法及裝 置。
【背景技術】
[0002] APK(AndroidPackage,安卓安裝包)文件為安卓操作系統(tǒng)的應用安裝文件,該應 用安裝文件由安裝文件打包工具根據(jù)一個或多個文件生成,其中,用于生成APK的文件一 般可采用java編程語言編寫。用戶將通過安裝文件打包工具生成的APK文件上傳到安卓 模擬器或安卓操作系統(tǒng)的用戶設備中執(zhí)行即可安裝。
[0003] 然而,實際應用中,得到按照上述方式生成的APK文件后,可以通過對APK文件進 行反編譯得到APK文件的源代碼,不良企圖者可以根據(jù)反編譯得到的源代碼找到其中的技 術關鍵點,并可修改該源代碼,使得APK文件存在安全隱患。
[0004] 現(xiàn)有技術中,提高APK文件的安全性,防止APK文件被反編譯,一般是從代碼側采 取措施,一種具體的實現(xiàn)方式中,采用C或者C++編程語言編寫部分用于生成APK文件的文 件,由于采用C或者C++編程語言編寫的文件比較難以反編譯,因此,采用C或者C++編程 語言編寫部分用于生成APK文件的文件可以提高APK文件的安全性。然而,由于采用C或 者C++編程語言編寫的文件的編譯策略與采用java編程語言編寫的文件的編譯策略不同, 兩者之間兼容性較差,易導致系統(tǒng)崩潰等問題。
【發(fā)明內容】
[0005] 本發(fā)明實施例公開了一種生成安卓安裝包APK的方法及裝置,以在保證生成目標 APK所需的文件之間兼容性的情況下,提高目標APK的安全性。
[0006] 為達到上述目的,本發(fā)明實施例公開了一種生成安卓安裝包APK的方法,所述方 法包括:
[0007] 獲得生成目標APK所需的文件;
[0008] 對所獲得的文件進行打包處理,生成原始APK ;
[0009] 對所述原始APK進行偽加密處理,生成所述目標APK。
[0010] 可選的,所述對所述原始APK進行偽加密處理,生成所述目標APK,包括:
[0011] 對所述原始APK對應的安裝包文件進行偽加密處理,生成所述目標APK。
[0012] 可選的,所述對所述原始APK進行偽加密處理,生成所述目標APK,包括:
[0013] 對所述原始APK中包含的文件進行偽加密處理,生成所述目標APK。
[0014] 可選的,所述對所述原始APK進行偽加密處理,生成所述目標APK,包括:
[0015] 對所述原始APK對應的安裝包文件進行偽加密處理;
[0016] 對上述偽加密處理后的APK中包含的文件進行偽加密處理,生成所述目標APK。
[0017] 可選的,所述偽加密處理,通過以下步驟實現(xiàn):
[0018] 根據(jù)待偽加密文件的文件格式,確定所述待偽加密文件的文件頭信息中的加密標 記位;
[0019] 將所確定的加密標記位的值設置為表示文件處于加密狀態(tài)的值。
[0020] 可選的,所述對所述原始APK中包含的文件進行偽加密處理,生成所述目標APK, 包括:
[0021] 按照預設文件確定規(guī)則,在所述原始APK包含的文件中確定待偽加密處理的文 件;
[0022] 對所確定的待偽加密處理的文件進行偽加密處理,生成所述目標APK。
[0023] 可選的,所述預設文件確定規(guī)則,包括以下幾種中的至少一種:
[0024] 滿足文件的文件類型條件的預設文件確定規(guī)則;
[0025] 滿足文件的文件大小條件的預設文件確定規(guī)則;
[0026] 滿足文件的文件名稱條件的預設文件確定規(guī)則。
[0027] 為達到上述目的,本發(fā)明實施例公開了一種生成安卓安裝包APK的裝置,所述裝 置包括:
[0028] 文件獲得模塊,用于獲得生成目標APK所需的文件;
[0029] 原始APK生成模塊,用于對所獲得文件進行打包處理,生成原始APK ;
[0030] 偽加密處理模塊,用于對所述原始APK進行偽加密處理,生成所述目標APK。
[0031] 可選的,所述偽加密處理模塊,具體用于對所述原始APK對應的安裝包文件進行 偽加密處理,生成所述目標APK。
[0032] 可選的,所述偽加密處理模塊,具體用于對所述原始APK中包含的文件進行偽加 密處理,生成所述目標APK。
[0033] 可選的,所述偽加密處理模塊,包括:
[0034] 第一偽加密處理子模塊,用于對所述原始APK對應的安裝包文件進行偽加密處 理;
[0035] 第二偽加密處理子模塊,用于對上述偽加密處理后的APK中包含的文件進行偽加 密處理,生成所述目標APK。
[0036] 可選的,所述裝置還包括:偽加密實現(xiàn)模塊;
[0037] 所述偽加密實現(xiàn)模塊,包括:
[0038] 加密標記位確定子模塊,用于根據(jù)待偽加密文件的文件格式,確定所述待偽加密 文件的文件頭信息中的加密標記位;
[0039] 加密標記位的值設置子模塊,用于將所確定的加密標記位的值設置為表示文件處 于加密狀態(tài)的值。
[0040] 可選的,所述偽加密處理模塊,包括:
[0041] 文件確定子模塊,用于按照預設文件確定規(guī)則,在所述原始APK包含的文件中確 定待偽加密處理的文件;
[0042] 第三偽加密處理子模塊,用于對所確定的待偽加密處理的文件進行偽加密處理, 生成所述目標APK文件。
[0043] 可選的,所述預設文件確定規(guī)則,包括以下幾種中的至少一種:
[0044] 滿足文件的文件類型條件的預設文件確定規(guī)則;
[0045] 滿足文件的文件大小條件的預設文件確定規(guī)則;
[0046] 滿足文件的文件名稱條件的預設文件確定規(guī)則。
[0047] 由以上可見,本發(fā)明實施例提供的方案中,在獲得生成目標APK所需的文件后,對 所獲得的文件進行打包處理,生成原始APK,并對原始APK進行偽加密處理,生成目標APK。 由于在安卓操作系統(tǒng)中運行目標APK時,不檢測目標APK是否已加密,因此,對目標APK進 行偽加密處理后,在安卓操作系統(tǒng)中依然可以成功運行該目標APK。然而,反編譯該目標 APK時,會檢測文件是否加密,若檢測到文件已加密,由于無法提供加密密碼,增加了反編譯 的難度,進而提高了目標APK防止被反編譯的能力,即提高了目標APK的安全性。
【專利附圖】
【附圖說明】
[0048] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn) 有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。
[0049] 圖1為本發(fā)明實施例提供的一種生成安卓安裝包APK的方法的流程示意圖;
[0050] 圖2為本發(fā)明實施例提供的一種對文件進行偽加密處理的方法的流程示意圖;
[0051] 圖3為本發(fā)明實施例提供的一種生成安卓安裝包APK的裝置的結構示意圖;
[0052] 圖4為本發(fā)明實施例提供的一種對文件進行偽加密處理的裝置的結構示意圖。
【具體實施方式】
[0053] 下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;?本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他 實施例,都屬于本發(fā)明保護的范圍。
[0054] 先對本申請文件中涉及到的技術概念進行介紹。
[0055] 安裝APK文件對應的應用:用戶在安卓操作系統(tǒng)中運行APK文件,即可在該操作系 統(tǒng)中安裝該APK文件對應的應用。在安卓操作系統(tǒng)中運行APK文件時,不檢測該APK文件 以及其中包含的文件是否已加密,因此,實際應用中為保證APK文件在所有有權限的用戶 設備上正常運行,不允許對生成APK文件的文件以及APK文件進行加密。
[0056] 反編譯APK文件:反編譯APK文件一般是在計算機中進行的,在對生成APK文件的 各個文件進行反編譯的過程中,計算機會通過檢測文件的文件頭信息中的加密標記位判斷 文件是否已經加密,若已加密,需提供相應的密碼解密后才能繼續(xù)后續(xù)的反編譯文件的工 作。
[0057] 下面通過具體實施例,對本發(fā)明進行詳細介紹。
[0058] 圖1為本發(fā)明實施例提供的一種生成安卓安裝包APK的方法的流程示意圖,該方 法包括:
[0059] S101 :獲得生成目標APK所需的文件。
[0060] 實際應用中,生成目標APK所需的文件可以是一個文件,也可以是多個文件。
[0061] S102 :對所獲得的文件進行打包處理,生成原始APK。
[0062] 實際應用中,可以通過已有的打包工具對所獲得的文件進行打包處理,生成原始 APK,其中,通過打包工具進行打包處理屬于現(xiàn)有技術,這里不再進行詳細描述。
[0063] S103 :對原始ΑΡΚ進行偽加密處理,生成目標ΑΡΚ。
[0064] 由于應用本發(fā)明實施例提供的方案生成的目標ΑΡΚ應該是可以在任何具有權限 的用戶設備上成功運行的,所以,目標ΑΡΚ不能是已真實加密的文件。而實際應用中,未加 密的目標ΑΡΚ很容易被不良企圖者反編譯,得到該ΑΡΚ的源代碼,從而導致目標ΑΡΚ存在安 全隱患??紤]到上述兩種原因,只能對目標ΑΡΚ進行偽加密處理,以使得目標ΑΡΚ文件能夠 在具有權限的用戶設備上成功運行,又能夠使得反編譯目標ΑΡΚ時,認為該文件已經加密。 [0065] 對原始ΑΡΚ進行偽加密處理時,可以只對原始ΑΡΚ對應的安裝包文件進行偽加密 處理,也可以只對原始ΑΡΚ中包含的文件進行偽加密處理,為增加反編譯目標ΑΡΚ的難度, 還可以先對原始ΑΡΚ對應的安裝包文件進行偽加密處理,之后再對偽加密處理后的ΑΡΚ中 包含的文件進行偽加密處理,當然,本申請并不限定對原始ΑΡΚ對應的安裝包文件進行偽 加密處理和對ΑΡΚ中包含的文件進行偽加密處理的順序進行限定。
[0066] 具體的,在對原始ΑΡΚ中包含的文件進行偽加密處理時,可以將其中的全部文件 進行偽加密處理,以最大強度的增強反編譯目標ΑΡΚ文件的難度。
[0067] 另外,本領域內的技術人員可以理解的是,原始ΑΡΚ中包含的某些文件對反編譯 目標ΑΡΚ是毫無意義的,例如,起說明作用的txt文件等等,而原始ΑΡΚ中還有一些文件是 成功反編譯APK文件必不可少的,所以,在對原始APK進行偽加密處理時,可以只對其中包 含的部分文件進行偽加密處理,例如,只對成功反編譯目標APK必不可少的文件進行偽加 密處理,而不對對反編譯目標APK毫無意義的文件進行偽加密處理等等。
[0068] 在本發(fā)明的一個具體實施例中,對原始APK中包含的文件進行偽加密處理,生成 目標APK文件時,可以先按照預設文件確定規(guī)則,在原始APK包含的文件中確定待偽加密處 理的文件,再對對所確定的待偽加密處理的文件進行偽加密處理,生成目標APK文件。
[0069] 其中,預設文件確定規(guī)則,可以包括以下幾種中的至少一種:
[0070] 滿足文件的文件類型條件的預設文件確定規(guī)則;
[0071] 滿足文件的文件大小條件的預設文件確定規(guī)則;
[0072] 滿足文件的文件名稱條件的預設文件確定規(guī)則。
[0073] 當然,本申請只是以上述為例進行說明,實際應用中預設文件確定規(guī)則并不僅限 于上述幾種。
[0074] 在本發(fā)明的另一個具體實施例中,參見圖2,提供了一種對文件進行偽加密處理的 方法的流程示意圖,該實施例中,該方法包括:
[0075] S104 :根據(jù)待偽加密文件的文件格式,確定待偽加密文件的文件頭信息中的加密 標記位。
[0076] S105 :將所確定的加密標記位的值設置為表示文件處于加密狀態(tài)的值。
[0077] 下面通過具體的實例對S104和S105進行說明。
[0078] 假設,原始APK文件中包含的某一文件的文件格式為zip壓縮文件,其中,zip壓 縮文件的文件頭信息如表1所示。
[0079] 表 1
[0080]
【權利要求】
1. 一種生成安卓安裝包APK的方法,其特征在于,所述方法包括: 獲得生成目標ΑΡΚ所需的文件; 對所獲得的文件進行打包處理,生成原始ΑΡΚ ; 對所述原始ΑΡΚ進行偽加密處理,生成所述目標ΑΡΚ。
2. 根據(jù)權利要求1所述的方法,其特征在于,所述對所述原始ΑΡΚ進行偽加密處理,生 成所述目標ΑΡΚ,包括: 對所述原始ΑΡΚ對應的安裝包文件進行偽加密處理,生成所述目標ΑΡΚ。
3. 根據(jù)權利要求1所述的方法,其特征在于,所述對所述原始ΑΡΚ進行偽加密處理,生 成所述目標ΑΡΚ,包括: 對所述原始ΑΡΚ中包含的文件進行偽加密處理,生成所述目標ΑΡΚ。
4. 根據(jù)權利要求1所述的方法,其特征在于,所述對所述原始ΑΡΚ進行偽加密處理,生 成所述目標ΑΡΚ,包括: 對所述原始ΑΡΚ對應的安裝包文件進行偽加密處理; 對上述偽加密處理后的ΑΡΚ中包含的文件進行偽加密處理,生成所述目標ΑΡΚ。
5. 根據(jù)權利要求1-4中任一項所述的方法,其特征在于,所述偽加密處理,通過以下步 驟實現(xiàn): 根據(jù)待偽加密文件的文件格式,確定所述待偽加密文件的文件頭信息中的加密標記 位; 將所確定的加密標記位的值設置為表示文件處于加密狀態(tài)的值。
6. 根據(jù)權利要求3所述的方法,其特征在于,所述對所述原始ΑΡΚ中包含的文件進行偽 加密處理,生成所述目標ΑΡΚ,包括: 按照預設文件確定規(guī)則,在所述原始ΑΡΚ包含的文件中確定待偽加密處理的文件; 對所確定的待偽加密處理的文件進行偽加密處理,生成所述目標ΑΡΚ。
7. 根據(jù)權利要求6所述的方法,其特征在于,所述預設文件確定規(guī)則,包括以下幾種中 的至少一種: 滿足文件的文件類型條件的預設文件確定規(guī)則; 滿足文件的文件大小條件的預設文件確定規(guī)則; 滿足文件的文件名稱條件的預設文件確定規(guī)則。
8. -種生成安卓安裝包ΑΡΚ的裝置,其特征在于,所述裝置包括: 文件獲得模塊,用于獲得生成目標ΑΡΚ所需的文件; 原始ΑΡΚ生成模塊,用于對所獲得文件進行打包處理,生成原始ΑΡΚ ; 偽加密處理模塊,用于對所述原始ΑΡΚ進行偽加密處理,生成所述目標ΑΡΚ。
9. 根據(jù)權利要求8所述的裝置,其特征在于,所述偽加密處理模塊,具體用于對所述原 始ΑΡΚ對應的安裝包文件進行偽加密處理,生成所述目標ΑΡΚ。
10. 根據(jù)權利要求8所述的裝置,其特征在于,所述偽加密處理模塊,具體用于對所述 原始ΑΡΚ中包含的文件進行偽加密處理,生成所述目標ΑΡΚ。
11. 根據(jù)權利要求8所述的裝置,其特征在于,所述偽加密處理模塊,包括: 第一偽加密處理子模塊,用于對所述原始ΑΡΚ對應的安裝包文件進行偽加密處理; 第二偽加密處理子模塊,用于對上述偽加密處理后的ΑΡΚ中包含的文件進行偽加密處 理,生成所述目標ΑΡΚ。
12. 根據(jù)權利要求8-11中任一項所述的裝置,其特征在于,所述裝置還包括: 加密標記位確定模塊,用于根據(jù)待偽加密文件的文件格式,確定所述待偽加密文件的 文件頭信息中的加密標記位; 加密標記位的值設置模塊,用于將所確定的加密標記位的值設置為表示文件處于加密 狀態(tài)的值。
13. 根據(jù)權利要求10所述的裝置,其特征在于,所述偽加密處理模塊,包括: 文件確定子模塊,用于按照預設文件確定規(guī)則,在所述原始ΑΡΚ包含的文件中確定待 偽加密處理的文件; 第三偽加密處理子模塊,用于對所確定的待偽加密處理的文件進行偽加密處理,生成 所述目標ΑΡΚ文件。
14. 根據(jù)權利要求13所述的裝置,其特征在于,所述預設文件確定規(guī)則,包括以下幾種 中的至少一種: 滿足文件的文件類型條件的預設文件確定規(guī)則; 滿足文件的文件大小條件的預設文件確定規(guī)則; 滿足文件的文件名稱條件的預設文件確定規(guī)則。
【文檔編號】G06F9/44GK104090772SQ201410353879
【公開日】2014年10月8日 申請日期:2014年7月23日 優(yōu)先權日:2014年7月23日
【發(fā)明者】鄺銳強 申請人:廣州金山網絡科技有限公司