[發(fā)明專利]一種APK的加固方法和裝置,及動態(tài)加載方法和裝置在審
| 申請?zhí)枺?/td> | 201611139477.3 | 申請日: | 2016-12-12 |
| 公開(公告)號: | CN106845167A | 公開(公告)日: | 2017-06-13 |
| 發(fā)明(設(shè)計)人: | 劉敏 | 申請(專利權(quán))人: | 北京奇虎科技有限公司 |
| 主分類號: | G06F21/14 | 分類號: | G06F21/14 |
| 代理公司: | 北京天悅專利代理事務(wù)所(普通合伙)11311 | 代理人: | 田明,張海秀 |
| 地址: | 100088 北京市西城區(qū)新*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 apk 加固 方法 裝置 動態(tài) 加載 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及終端應(yīng)用安全技術(shù)領(lǐng)域,特別涉及一種APK的加固方法和裝置、以及動態(tài)加載方法和裝置。
背景技術(shù)
APK(Android Package)即安卓Android安裝包,是Android操作系統(tǒng)上的應(yīng)用程序安裝文件,該應(yīng)用安裝文件由安裝文件打包工具根據(jù)多個文件生成,生成APK的文件一般采用java編程語言編寫,用戶將通過安裝文件打包工具生成的APK文件上傳到安卓模擬器或安卓操作系統(tǒng)的用戶設(shè)備中執(zhí)行即可安裝。
隨著Android移動終端平臺的日益發(fā)展,第三方應(yīng)用程序大量涌現(xiàn),對應(yīng)用的盜版和重打包現(xiàn)象日益嚴重。由于Android平臺采用Java語言開發(fā),導(dǎo)致APK中的代碼易于被反編譯,通過反編譯APK文件,進行代碼的分析、修改或者插入,再重新簽名打包為新的APK文件,以達到改變程序原有行為的目的,APK的篡改行為嚴重損害了應(yīng)用程序開發(fā)商的利益和積極性,而利用APK篡改技術(shù),通過加入惡意代碼使得Android用戶面臨隱私泄露和財產(chǎn)損失的危險,嚴重影響了用戶的應(yīng)用安全。因此,開發(fā)者們對于Android程序代碼的加固防護也越來越關(guān)注。
現(xiàn)有安卓軟件安裝包APK的加固方法中,對APK中的某些重要數(shù)據(jù)進行加密,將加密數(shù)據(jù)以文件形式存放在資源存放目錄res目錄下或者額外資源目錄assets目錄下,程序執(zhí)行執(zhí)行過程中去對應(yīng)目錄下尋找這個加密文件并加載,從而完APK文件的運行,但是該種加密數(shù)據(jù)的存放方式隱蔽性差,容易被發(fā)現(xiàn),導(dǎo)致APK被破解的風險仍然較大。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明實施例的目的在于提供一種能夠克服上述問題或者至少能夠部分地解決上述問題的一種APK的加固方法和裝置、以及動態(tài)加載方法和裝置。
為實現(xiàn)上述目的,本發(fā)明的一個實施例中提供了一種APK文件的加固方法,所述加固方法包括:
一種APK文件的加固方法,其特征在于,包括:
獲取待加固的原APK中需要保護的原數(shù)據(jù);
將所述原數(shù)據(jù)進行加密處理,得到加密數(shù)據(jù);
對所述原APK進行加固處理,生成目標APK,其中,所述加密數(shù)據(jù)以文件形式存儲于所述目標APK的預(yù)設(shè)位置。
優(yōu)選的,如上所述的加固方法,所述預(yù)設(shè)位置為目標APK的classes.dex文件中的位置。
優(yōu)選的,如上所述的加固方法,所述預(yù)設(shè)位置為目標APK的classes.dex文件的文件頭和/或數(shù)據(jù)區(qū)的N個指定位置,N≥1。
優(yōu)選的,如上所述的加固方法,所述N=1,所述指定位置為所述數(shù)據(jù)區(qū)的頭部或尾部。
優(yōu)選的,如上所述的加固方法,所述N=2;所述加密數(shù)據(jù)包括第一加密數(shù)據(jù)和第二加密數(shù)據(jù);
所述指定位置包括第一指定位置和第二指定位置,第一加密數(shù)據(jù)在目標APK的classes.dex文件中的位置為所述第一指定位置,第二加密數(shù)據(jù)在目標APK的classes.dex文件中的位置為所述第二指定位置。
優(yōu)選的,如上所述的加固方法,所述第一指定位置為所述數(shù)據(jù)區(qū)的頭部,所述第二指定位置為所述數(shù)據(jù)區(qū)的尾部。
優(yōu)選的,如上所述的加固方法,所述原數(shù)據(jù)為原APK中的非classes.dex文件中的數(shù)據(jù);
所述對所述原APK進行加固處理,生成目標APK,包括:
根據(jù)加密數(shù)據(jù)在目標APK中的所述預(yù)設(shè)位置,將加密數(shù)據(jù)添加到原APK中的對應(yīng)位置;
將添加后的原APK中除所述原數(shù)據(jù)之外的其它文件進行重新打包簽名,生成目標APK。
優(yōu)選的,如上所述的加固方法,若所述預(yù)設(shè)位置為目標APK的classes.dex文件中的位置,所述將添加后的原APK中除所述原數(shù)據(jù)之外的其它文件進行重新打包簽名,生成目標APK,包括:
重新計算并更新添加加密數(shù)據(jù)后的原APK的classes.dex文件的文件頭信息,得到更新后的第一classes.dex文件;
將第一classes.dex文件和原APK的除所述原數(shù)據(jù)之外的其它文件進行重新打包簽名,生成目標APK。
優(yōu)選的,如上所述的加固方法,所述原數(shù)據(jù)為原APK的classes.dex文件中的數(shù)據(jù);
所述對所述原APK進行加固處理,生成目標APK,包括:
記錄原數(shù)據(jù)在原APK的classes.dex文件中的原位置信息;
根據(jù)加密數(shù)據(jù)在目標APK中的所述預(yù)設(shè)位置,將加密數(shù)據(jù)和所述原位置信息添加到原APK中的的對應(yīng)位置;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京奇虎科技有限公司,未經(jīng)北京奇虎科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611139477.3/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





