應用程式防止逆向的方法及裝置、運行方法及終端的製作方法
2023-05-12 02:40:16
應用程式防止逆向的方法及裝置、運行方法及終端的製作方法
【專利摘要】本發明提供一種應用程式防止逆向的方法及裝置、運行方法及終端,其中,應用程式防止逆向的方法包括:從應用程式中獲取包括可執行代碼的文件;壓縮所述包括可執行代碼的文件,生成壓縮後的文件和附加數據,所述附加數據用於在運行該應用程式的系統的內存中還原並運行所述壓縮後的文件中的可執行代碼,所述附加數據還用於防止所述可執行代碼被逆向查找;根據所述壓縮後的文件和所述附加數據,生成一替換文件,將所述替換文件作為所述應用程式中的包括可執行代碼的文件。本發明能夠減少現有技術中應用程式由加固過程產生的加固增量,同時防止應用程式中的可執行代碼被逆向查找。
【專利說明】應用程式防止逆向的方法及裝置、運行方法及終端
【技術領域】
[0001] 本發明涉及安全技術,尤其涉及一種應用程式防止逆向的方法及裝置、運行方法 及終端。
【背景技術】
[0002] 隨著移動終端平臺的日益發展,第三方應用程式大量湧現,對第三方應用的盜版 和重打包現象日益嚴重。其原因主要在於,目前市面上存在多種對應用文件進行解壓縮的 通用軟體,在利用這些軟體對應用文件進行解壓縮之後,應用原始碼中的明文字符串、庫函 數調用、核心功能函數等都顯露無遺,使得非法開發者對第三方應用程式的盜版或者核心 功能的逆向工程都變得簡單易行。
[0003] 為防止應用被反編譯、惡意篡改,可以通過加固的方法來並保護應用數據信息不 被竊取。所謂應用程式的加固一般指採用加殼、隱蔽、混淆等手段對源程序代碼進行加密, 同時不影響應用文件的正常運行。
[0004] 然而,採用現有的加固方法通常會使應用文件在加固後以一定比例增大(一般最 低為8%到9% )、佔用更多的存儲空間(或稱為"加固增量"),因而會對應用文件的運行、 存儲和傳輸的效率造成影響,不利於應用的使用和推廣。
【發明內容】
[0005] 針對現有技術中的缺陷,本發明提供一種應用程式防止逆向的方法及裝置、應用 程序的運行方法及終端,能夠減少現有技術中應用程式由加固過程產生的加固增量,同時 防止應用程式中的可執行代碼被逆向查找。
[0006] 第一方面,本發明提供了一種應用程式防止逆向的方法,其特徵在於,包括 :
[0007] 從應用程式中獲取包括可執行代碼的文件;
[0008] 壓縮所述包括可執行代碼的文件,生成壓縮後的文件和附加數據,所述附加數據 用於在運行該應用程式的系統的內存中還原並運行所述壓縮後的文件中的可執行代碼,所 述附加數據還用於防止所述可執行代碼被逆向查找;
[0009] 根據所述壓縮後的文件和所述附加數據,生成一替換文件,將所述替換文件作為 所述應用程式中的包括可執行代碼的文件。
[0010] 可選地,所述附加數據包括:
[0011] 用於在運行該應用程式的系統的內存中還原並運行所述可執行代碼的可執行文 件,和,
[0012] 用於防止所述可執行代碼被逆向查找的動態連結庫,所述動態連結庫包括用於在 運行該應用程式的系統的內存中還原並運行所述可執行代碼的部分數據。
[0013] 可選地,該方法還包括:將所述應用程式的運行指令起始點變更為所述替換文件 的運行指令起始點。
[0014] 可選地,所述替換文件與所述應用程式中包括可執行代碼的文件具有相同的文件 名。
[0015] 可選地,所述運行所述應用程式的系統為Android系統;所述應用程式中包括可 執行代碼的文件為Android安裝包APK文件中的classes,dex文件。
[0016] 可選地,所述從應用程式中獲取包括可執行代碼的文件之前,所述方法還包括:
[0017] 接收應用程式的加固請求,所述加固請求包括:所述應用程式的安裝包,和所述應 用程序的渠道信息;所述安裝包包括:包括可執行代碼的文件和資源文件,所述資源文件 中配置有與所述渠道信息對應的信息;
[0018] 相應地,所述從應用程式中獲取包括可執行代碼的文件,包括:
[0019] 根據所述加固請求,從所述應用程式中獲取包括可執行代碼的文件。
[0020] 第二方面,本發明還提供了一種應用程式的運行方法,包括:
[0021] 獲取應用程式中壓縮後的包括可執行代碼的文件和附加數據,所述附加數據為壓 縮所述包括可執行代碼的文件的過程中生成的,用於在運行該應用程式的系統的內存中還 原並運行所述可執行代碼、防止所述可執行代碼被逆向查找的數據;
[0022] 根據所述附加數據,對壓縮後的包括可執行代碼的文件進行解壓縮處理,且在運 行該應用程式的系統的內存中還原並運行解壓縮後的可執行代碼。
[0023] 可選地,所述附加數據包括:
[0024] 用於在運行該應用程式的系統的內存中還原並運行所述可執行代碼的可執行文 件,和,
[0025] 用於防止所述可執行代碼被逆向查找的動態連結庫,所述動態連結庫包括用於在 運行該應用程式的系統的內存中還原並運行所述可執行代碼的部分數據。
[0026] 可選地,所述根據所述附加數據,對壓縮後的包括可執行代碼的文件進行解壓縮 處理,且在運行該應用程式的系統的內存中還原並運行解壓縮後的可執行代碼的步驟,包 括:
[0027]利用所述附加數據中的可執行文件調用所述動態連結庫對所述壓縮後的包括可 執行代碼的文件進行解壓縮處理,在運行該應用程式的系統的內存中還原解壓縮後的可執 行代碼,並使所述應用程式的運行指令起始點指向還原後的可執行代碼。
[0028] 可選地,所述應用程式的可執行代碼為:所述運行所述應用程式的系統為 Android系統;所述應用程式中包括可執行代碼的文件為Android安裝包APK文件中的 classes,dex文件。
[0029] 第三方面,本發明還提供了一種應用程式防止逆向的裝置,該裝置包括:
[0030] 獲取單元,用於從應用程式中獲取包括可執行代碼的文件;
[0031] 壓縮單元,用於壓縮所述獲取單元獲取的所述包括可執行代碼的文件,生成壓縮 後的文件和附加數據,所述附加數據用於在運行該應用程式的系統的內存中還原並運行所 述壓縮後的文件中的可執行代碼,所述附加數據還用於防止所述可執行代碼被逆向查找;
[0032] 替換文件生成單元,用於根據所述壓縮單元生成的所述壓縮後的文件和所述附加 數據,生成一替換文件,將所述替換文件作為所述應用程式中的包括可執行代碼的文件。
[0033] 可選地,所述附加數據包括:
[0034] 用於在運行該應用程式的系統的內存中還原並運行所述可執行代碼的可執行文 件,和,
[0035] 用於防止所述可執行代碼被逆向查找的動態連結庫,所述動態連結庫包括用於在 運行該應用程式的系統的內存中還原並運行所述可執行代碼的部分數據。
[0036] 可選地,該裝置還包括:變更單元,用於將所述應用程式的運行指令起始點變更為 所述替換文件的運行指令起始點。
[0037] 可選地,所述替換文件與所述應用程式中包括可執行代碼的文件具有相同的文件 名。
[0038] 可選地,所述運行所述應用程式的系統為Android系統;所述應用程式中包括可 執行代碼的文件為Android安裝包APK文件中的classes, dex文件。
[0039] 可選地,該裝置還包括:
[0040] 接口單元,用於接收應用程式的加固請求,所述加固請求包括:所述應用程式的安 裝包,和所述應用程式的渠道信息;所述安裝包包括:包括可執行代碼的文件和資源文件, 所述資源文件中配置有與所述渠道信息對應的信息;
[0041] 相應地,獲取單元具體用於:
[0042] 根據所述接口單元接收的加固請求,從所述應用程式中獲取包括可執行代碼的文 件。
[0043] 第四方面,本發明還提供了一種終端,包括:
[0044] 獲取單元,用於獲取應用程式中壓縮後的包括可執行代碼的文件和附加數據,所 述附加數據為壓縮所述包括可執行代碼的文件的過程中生成的,用於在運行該應用程式的 系統的內存中還原並運行所述可執行代碼、防止所述可執行代碼被逆向查找的數據;
[0045] 解壓縮單元,用於根據所述附加數據,對壓縮後的包括可執行代碼的文件進行解 壓縮處理,且在運行該應用程式的系統的內存中還原並運行解壓縮後的可執行代碼。
[0046] 可選地,所述附加數據包括:
[0047] 用於在運行該應用程式的系統的內存中還原並運行所述可執行代碼的可執行文 件,和,
[0048] 用於防止所述可執行代碼被逆向查找的動態連結庫,所述動態連結庫包括用於在 運行該應用程式的系統的內存中還原並運行所述可執行代碼的部分數據。
[0049] 可選地,所述解壓縮單元,具體用於利用所述獲取單元獲取的所述附加數據中的 可執行文件調用所述動態連結庫對所述壓縮後的包括可執行代碼的文件進行解壓縮處理, 在運行該應用程式的系統的內存中還原解壓縮後的可執行代碼,並使所述應用程式的運行 指令起始點指向還原後的可執行代碼。
[0050] 可選地,所述運行所述應用程式的系統為Android系統;所述應用程式中包括可 執行代碼的文件為Android安裝包APK文件中的classes, dex文件。
[0051] 由上述技術方案可知,本發明主要根據應用程式中包括可執行代碼的文件得到壓 縮處理後的文件和附加數據兩個部分,其中附加數據用於還原、運行所述可執行代碼,並起 到防止可執行代碼被逆向查找的作用。由此,本發明對於佔有主要存儲空間的可執行代碼 進行了壓縮,並在運行時使用附加數據對應地進行解壓縮,可以在不影響應用程式正常運 行的情況下有效地減小加固增量。
【專利附圖】
【附圖說明】
[0052] 圖1為本發明一實施例提供的應用程式防止逆向的方法的流程示意圖;
[0053] 圖2為本發明一實施例提供的應用程式的運行方法的流程示意圖;
[0054] 圖3為本發明一實施例提供的Android系統下的APK文件的加固方法的流程示意 圖;
[0055] 圖4為本發明一實施例提供的應用程式防止逆向的裝置的結構示意圖;
[0056] 圖5為本發明一實施例提供的終端的結構示意圖。
【具體實施方式】
[0057] 下面結合附圖和實施例,對本發明的【具體實施方式】作進一步詳細描述。以下實施 例用於說明本發明,但不用來限制本發明的範圍。
[0058] 現有技術中出現了多種安卓應用的安全加固方法,通過對安卓應用進行加密、防 反編譯、防代碼混淆等加固措施,然而由於加固方法所採用的方案不同,加固的效果也不 同,有些加固後並不能達到防止暴力破解的效果,例如現有的一種加固方法首先加密原程 序包的可執行文件dex,然後在提取四大組件信息生成代理的dex文件,程序執行時動態解 密原程序dex,然而這樣的加密方式,加密包和原包分離,原包僅為加密文件,可以輕易地通 過內存轉存實現程序的破解,加固效果有限。
[0059] 當前,在Android系統上,一個可以安裝、運行的應用,需要打包成Android系統的 APK 文件格式。APK 是 An droid application package file 的縮寫,簡稱 APK 文件,即 An droid 安裝包,也可以理解為Android終端上安裝的應用軟體。APK文件其實是ZIP文件格式,但 後綴名被修改為APK,通過工具解壓等方式可以看到其內部的文件結構,如表1所示:
[0060] 表1 APK文件內部的文件結構
[0061]
【權利要求】
1. 一種應用程式防止逆向的方法,其特徵在於,包括: 從應用程式中獲取包括可執行代碼的文件; 壓縮所述包括可執行代碼的文件,生成壓縮後的文件和附加數據,所述附加數據用於 在運行該應用程式的系統的內存中還原並運行所述壓縮後的文件中的可執行代碼,所述附 加數據還用於防止所述可執行代碼被逆向查找; 根據所述壓縮後的文件和所述附加數據,生成一替換文件,將所述替換文件作為所述 應用程式中的包括可執行代碼的文件。
2. 根據權利要求1所述的方法,其特徵在於,所述附加數據包括: 用於在運行該應用程式的系統的內存中還原並運行所述可執行代碼的可執行文件, 和, 用於防止所述可執行代碼被逆向查找的動態連結庫,所述動態連結庫包括用於在運行 該應用程式的系統的內存中還原並運行所述可執行代碼的部分數據。
3. 根據權利要求1或2所述的方法,其特徵在於,所述從應用程式中獲取包括可執行代 碼的文件之前,所述方法還包括: 接收應用程式的加固請求,所述加固請求包括:所述應用程式的安裝包,和所述應用程 序的渠道信息;所述安裝包包括:包括可執行代碼的文件和資源文件,所述資源文件中配 置有與所述渠道信息對應的信息; 相應地,所述從應用程式中獲取包括可執行代碼的文件,包括: 根據所述加固請求,從所述應用程式中獲取包括可執行代碼的文件。
4. 一種應用程式的運行方法,其特徵在於,包括: 獲取應用程式中壓縮後的包括可執行代碼的文件和附加數據,所述附加數據為壓縮所 述包括可執行代碼的文件的過程中生成的,用於在運行該應用程式的系統的內存中還原並 運行所述可執行代碼、防止所述可執行代碼被逆向查找的數據; 根據所述附加數據,對壓縮後的包括可執行代碼的文件進行解壓縮處理,且在運行該 應用程式的系統的內存中還原並運行解壓縮後的可執行代碼。
5. 根據權利要求4所述的方法,其特徵在於,所述附加數據包括: 用於在運行該應用程式的系統的內存中還原並運行所述可執行代碼的可執行文件, 和, 用於防止所述可執行代碼被逆向查找的動態連結庫,所述動態連結庫包括用於在運行 該應用程式的系統的內存中還原並運行所述可執行代碼的部分數據。
6. -種應用程式防止逆向的裝置,其特徵在於,所述裝置包括: 獲取單元,用於從應用程式中獲取包括可執行代碼的文件; 壓縮單元,用於壓縮所述獲取單元獲取的所述包括可執行代碼的文件,生成壓縮後的 文件和附加數據,所述附加數據用於在運行該應用程式的系統的內存中還原並運行所述壓 縮後的文件中的可執行代碼,所述附加數據還用於防止所述可執行代碼被逆向查找; 替換文件生成單元,用於根據所述壓縮單元生成的所述壓縮後的文件和所述附加數 據,生成一替換文件,將所述替換文件作為所述應用程式中的包括可執行代碼的文件。
7. 根據權利要求6所述的裝置,其特徵在於,所述附加數據包括: 用於在運行該應用程式的系統的內存中還原並運行所述可執行代碼的可執行文件, 和, 用於防止所述可執行代碼被逆向查找的動態連結庫,所述動態連結庫包括用於在運行 該應用程式的系統的內存中還原並運行所述可執行代碼的部分數據。
8. 根據權利要求6或7所述的裝置,其特徵在於,該裝置還包括: 接口單元,用於接收應用程式的加固請求,所述加固請求包括:所述應用程式的安裝 包,和所述應用程式的渠道信息;所述安裝包包括:包括可執行代碼的文件和資源文件,所 述資源文件中配置有與所述渠道信息對應的信息; 相應地,獲取單元具體用於: 根據所述接口單元接收的加固請求,從所述應用程式中獲取包括可執行代碼的文件。
9. 一種終端,其特徵在於,包括: 獲取單元,用於獲取應用程式中壓縮後的包括可執行代碼的文件和附加數據,所述附 加數據為壓縮所述包括可執行代碼的文件的過程中生成的,用於在運行該應用程式的系統 的內存中還原並運行所述可執行代碼、防止所述可執行代碼被逆向查找的數據; 解壓縮單元,用於根據所述獲取單元獲取的所述附加數據,對壓縮後的包括可執行代 碼的文件進行解壓縮處理,且在運行該應用程式的系統的內存中還原並運行解壓縮後的可 執行代碼。
10. 根據權利要求9所述的終端,其特徵在於,所述附加數據包括: 用於在運行該應用程式的系統的內存中還原並運行所述可執行代碼的可執行文件, 和, 用於防止所述可執行代碼被逆向查找的動態連結庫,所述動態連結庫包括用於在運行 該應用程式的系統的內存中還原並運行所述可執行代碼的部分數據。
【文檔編號】G06F21/14GK104239757SQ201410521806
【公開日】2014年12月24日 申請日期:2014年9月30日 優先權日:2014年9月30日
【發明者】張立春 申請人:北京奇虎科技有限公司, 奇智軟體(北京)有限公司