一種apk文件的動態(tài)加載方法
【專利摘要】本發(fā)明公開一種APK文件的動態(tài)加載方法,其包括:解壓已作加固處理的第一APK文件,讀取第一classes.dex文件;讀取該第一classes.dex文件尾部存放的文件長度信息,根據(jù)該文件長度信息確定該第一classes.dex文件尾部存放的加密數(shù)據(jù)的長度,根據(jù)加密數(shù)據(jù)的長度計算出加密數(shù)據(jù)在該第一classes.dex文件中的起始位置,提取加密數(shù)據(jù);對加密數(shù)據(jù)進(jìn)行解密,得到對應(yīng)核心功能部分源代碼的第二APK文件;在運(yùn)行第一APK文件時,通過Android API提供的DexClassLoader類,從第二APK文件中將核心功能部分源代碼動態(tài)加載至第一APK文件,并從Android系統(tǒng)內(nèi)部存儲之中刪除該第二APK文件。本申請可以規(guī)避現(xiàn)有Android逆向工具的反編譯,增加反編譯的難度,從而可以極大程度地提高APK文件的安全性。
【專利說明】-種APK文件的動態(tài)加載方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及移動終端應(yīng)用安全領(lǐng)域,特別涉及一種APK文件的動態(tài)加載方法。
【背景技術(shù)】
[0002] APK(AndroidPacKage的縮寫)即Android安裝包。將APK文件(即APK應(yīng)用程 序)直接傳到Android模擬器或Android操作系統(tǒng)的終端設(shè)備(比如安卓智能手機(jī))中執(zhí) 行即可安裝。APK文件其實是zip格式,但后綴名被修改為apk,在windows系統(tǒng)上可以通 過解壓縮工具(比如winrar軟件)直接解壓查看。解壓APK文件后,一般的可看到的目錄 結(jié)構(gòu)如下表1所示:
[0003]
【權(quán)利要求】
1. 一種APK文件的動態(tài)加載方法,其特征在于,包括步驟: 解壓已作加固處理的第一 APK文件,讀取第一 classes, dex文件; 讀取該第一 classes, dex文件尾部存放的文件長度信息,根據(jù)該文件長度信息確定該 第一 classes, dex文件尾部存放的加密數(shù)據(jù)的長度,根據(jù)加密數(shù)據(jù)的長度計算出加密數(shù)據(jù) 在該第一 classes, dex文件中的起始位置,提取加密數(shù)據(jù); 對加密數(shù)據(jù)進(jìn)行解密,得到對應(yīng)核心功能部分源代碼的第二APK文件; 在運(yùn)行第一 APK文件時,通過Android API提供的DexClassLoader類,從第二APK文 件中將核心功能部分源代碼動態(tài)加載至第一 APK文件,并從Android系統(tǒng)內(nèi)部存儲之中刪 除該第二APK文件。
2. 根據(jù)權(quán)利要求1所述一種APK文件的動態(tài)加載方法,其特征在于,對加密數(shù)據(jù)進(jìn)行解 密處理的解密方式為標(biāo)準(zhǔn)解密方式或已知的任意一種文件解密方法。
3. 根據(jù)權(quán)利要求1所述一種APK文件的動態(tài)加載方法,其特征在于,加固處理第一 APK 文件的步驟包括: 將需要加固的APK文件的源代碼分成作為主體部分的第一源代碼及作為核心功能部 分的第二源代碼; 將第一源代碼、第二源代碼分別編譯成第一 APK文件及第二APK文件; 解壓第一 APK文件,提取第一 APK文件中的第一 classes, dex文件; 對第二APK文件進(jìn)行加密處理,統(tǒng)計加密后第二APK文件的文件長度信息; 將加密后的第二APK文件及其文件長度信息添加在第一 classes, dex文件的尾部; 重新計算并更新第一 classes, dex文件中文件頭信息,將更新后的第一 classes, dex 文件放回第一 APK文件中,使用Android SDK中提供的簽名工具對第一 APK文件進(jìn)行簽名, 即得到加固處理后的APK文件。
4. 根據(jù)權(quán)利要求3所述一種APK文件的動態(tài)加載方法,其特征在于,重新計算的第一 classes, dex文件中文件頭信息包括效驗碼checksum字段、SHA-I簽名signature字段和 第一 classes, dex文件的總長度file_size字段。
5. 根據(jù)權(quán)利要求3所述一種APK文件的動態(tài)加載方法,其特征在于,對第二APK文件進(jìn) 行加密處理的加密方式為標(biāo)準(zhǔn)加密方式或已知的任意一種文件加密方法。
【文檔編號】G06F21/12GK104317625SQ201410632420
【公開日】2015年1月28日 申請日期:2014年11月9日 優(yōu)先權(quán)日:2014年11月9日
【發(fā)明者】劉鵬 申請人:劉鵬