[發(fā)明專利]基于內(nèi)存加載的dalvik字節(jié)碼優(yōu)化方法有效
| 申請?zhí)枺?/td> | 201611080987.8 | 申請日: | 2016-11-30 |
| 公開(公告)號: | CN106775843B | 公開(公告)日: | 2020-04-28 |
| 發(fā)明(設(shè)計)人: | 翟棟;譚源泉;康紅娟;鄧密密 | 申請(專利權(quán))人: | 四川長虹電器股份有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445;G06F8/41;G06F8/30 |
| 代理公司: | 四川省成都市天策商標(biāo)專利事務(wù)所 51213 | 代理人: | 陳靖 |
| 地址: | 621000 四*** | 國省代碼: | 四川;51 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 內(nèi)存 加載 dalvik 字節(jié) 優(yōu)化 方法 | ||
本發(fā)明公開了一種基于內(nèi)存加載的dalvik字節(jié)碼優(yōu)化方法,它包括以下步驟:步驟1,讀取加密的DEX文件進(jìn)行解密解壓后,并將解密解壓后的DEX文件以字節(jié)碼的形式保存到棧內(nèi)存中;步驟2,采用反射調(diào)用DexFile的openDexFile方法,解析步驟1中的DEX文件字節(jié)碼得到一個DexOrJar結(jié)構(gòu)體,將DexOrJar結(jié)構(gòu)體的內(nèi)容加載到gDvm中的userDexFile結(jié)構(gòu)的hash表中,最后返回存儲DEX文件信息的DexOrJar結(jié)構(gòu)體指針,記為cookie值;步驟3,定義本地方法loadDex,傳遞DEX文件的字節(jié)數(shù)組和字節(jié)大小;步驟4,重寫類加載器加載指定的類,本發(fā)明在讀取加密壓縮DEX文件后,便一直在內(nèi)存中利用字節(jié)碼的形式進(jìn)行DEX文件的解密解壓、存儲和加載,極大程度的保護(hù)了DEX文件,提高了加固后APK的抗攻擊性。
技術(shù)領(lǐng)域
本發(fā)明涉及移動終端應(yīng)用安全領(lǐng)域,具體涉及基于內(nèi)存加載的dalvik字節(jié)碼優(yōu)化方法。
背景技術(shù)
據(jù)最新智能終端銷量統(tǒng)計,中國的Android系統(tǒng)目前已占據(jù)移動端73%以上的市場份額,各種Android應(yīng)用程序也在成級數(shù)式增長且涉及的業(yè)務(wù)越來越廣,涵蓋娛樂、支付、生活等各個領(lǐng)域。由于android平臺軟件使用的語言是JAVA,而JAVA源代碼編譯后的二進(jìn)制代碼極易被反編譯,導(dǎo)致android應(yīng)用程序易被黑客通過二次打包、篡改、惡意注入等手段進(jìn)行惡意破壞。因此應(yīng)用安全問題已經(jīng)成為開發(fā)者/發(fā)布者/使用者關(guān)注的熱點(diǎn)。
目前市場上比較主流的應(yīng)用軟件加固措施可分為加殼和脫殼兩個過程。其中,加殼技術(shù)主要是通過用一個新的classes.dex文件替換掉APP中的核心代碼文件,將原dex文件通過加密技術(shù)處理,生成加密文件另行存儲,最后修改應(yīng)用配置文件,并加入對應(yīng)解密算法庫,形成加固后的APP安裝包。加殼后APK中的dex文件便是殼dex。該方法可防止破解者還原真實代碼邏輯。
脫殼技術(shù)則是指程序在運(yùn)行過程中將原APK的dex文件解密出來并加載到內(nèi)存中,讓該APK正常運(yùn)行起來。APK的脫殼過程需要利用殼dex來完成。現(xiàn)有的脫殼方法多是通過Android API提供的DexClassLoader類加載原dex文件中的核心代碼,并通過反射將Android默認(rèn)的類加載器android.app.ActivityThread中的mClassLoader置換為為DexClassLoader,這樣既保證加載了源程序又沒有放棄原先加載的資源與系統(tǒng)代碼。這種做法中解密之后的dex會端在存放在/data/data/包名/cache目錄下,然后再用DexClassLoader加載dex,運(yùn)行程序。這種做法雖然可行但仍舊存在一些問題。首先,解密之后的dex文件需要存放在特定目錄下,增大了被破解的風(fēng)險。其次,先解密得到源程序的dex,然后再用DexClassLoader進(jìn)行加載,相當(dāng)于在解密時和加載原dex時兩次把dex加載到內(nèi)存中,大大降低了程序的啟動效率。
發(fā)明內(nèi)容
本發(fā)明克服了現(xiàn)有技術(shù)的不足,提供一種基于內(nèi)存加載的dalvik字節(jié)碼優(yōu)化方法。
為解決上述的技術(shù)問題,本發(fā)明采用以下技術(shù)方案:
一種基于內(nèi)存加載的dalvik字節(jié)碼優(yōu)化方法,它包括以下步驟:
步驟1,讀取加密的DEX文件進(jìn)行解密解壓,并將解密解壓后的DEX文件以字節(jié)碼的形式保存到棧內(nèi)存中;
步驟2,采用反射調(diào)用DexFile的openDexFile方法,解析步驟1中的DEX文件字節(jié)碼得到一個DexOrJar結(jié)構(gòu)體,將DexOrJar結(jié)構(gòu)體的內(nèi)容加載到gDvm中的userDexFile結(jié)構(gòu)的hash表中,最后返回存儲DEX文件信息的DexOrJar結(jié)構(gòu)體指針,記為cookie值;
步驟3,定義本地方法loadDex,傳遞DEX文件的字節(jié)數(shù)組和字節(jié)大小;
步驟4,重寫類加載器加載指定的類。
該專利技術(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/201611080987.8/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:一種可自定義的dex分包的方法
- 下一篇:一種批量刷固件的方法及裝置
- 一種Dalvik虛擬機(jī)兼容不同文件格式j(luò)ava應(yīng)用的方法及裝置
- 一種基于Dalvik指令和權(quán)限組合的安卓惡意軟件檢測方法
- 一種基于混合特征的Android惡意軟件檢測方法及系統(tǒng)
- 一種基于Dalvik指令抽象的Android惡意代碼檢測方法
- 一種基于虛擬機(jī)指令修改的Android應(yīng)用加固系統(tǒng)及方法
- 一種惡意軟件檢測方法及系統(tǒng)
- 惡意APK檢測方法、系統(tǒng)、數(shù)據(jù)存儲設(shè)備和檢測程序
- 一種惡意軟件檢測方法及系統(tǒng)
- Dalvik垃圾回收抑制的方法及裝置、終端和存儲介質(zhì)
- 一種DEX文件虛擬化加密方法、計算機(jī)設(shè)備及存儲介質(zhì)





