[發(fā)明專(zhuān)利]一種dex文件的存儲(chǔ)方法和裝置有效
| 申請(qǐng)?zhí)枺?/td> | 201611139089.5 | 申請(qǐng)日: | 2016-12-12 |
| 公開(kāi)(公告)號(hào): | CN106815301B | 公開(kāi)(公告)日: | 2020-10-30 |
| 發(fā)明(設(shè)計(jì))人: | 劉敏 | 申請(qǐng)(專(zhuān)利權(quán))人: | 北京奇虎科技有限公司 |
| 主分類(lèi)號(hào): | G06F21/62 | 分類(lèi)號(hào): | G06F21/62 |
| 代理公司: | 深圳市世紀(jì)恒程知識(shí)產(chǎn)權(quán)代理事務(wù)所 44287 | 代理人: | 胡海國(guó) |
| 地址: | 100088 北京市西城區(qū)新*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 dex 文件 存儲(chǔ) 方法 裝置 | ||
本發(fā)明實(shí)施例中公開(kāi)了一種dex文件的存儲(chǔ)方法和裝置,屬于應(yīng)用程序安全防護(hù)技術(shù)領(lǐng)域。所述方法包括:解析待加載的dex文件,提取解析后的dex文件的非文件頭header中的第一指定數(shù)據(jù);申請(qǐng)第一內(nèi)存和第二內(nèi)存,所述第一內(nèi)存用于存儲(chǔ)所述第一指定數(shù)據(jù),所述第二內(nèi)存用于存儲(chǔ)dex文件中除第一指定數(shù)據(jù)之外的其他數(shù)據(jù);所述第一內(nèi)存和第二內(nèi)存不連續(xù);根據(jù)所述第一內(nèi)存的內(nèi)存地址信息,修改dex文件的文件頭header中所述第一指定數(shù)據(jù)的偏移地址,使其指向第一內(nèi)存。采用本發(fā)明實(shí)施例中所提供的方法和裝置,解決了現(xiàn)有技術(shù)中能夠從內(nèi)存中提取完整dex文件的問(wèn)題,有效避免了dex文件的動(dòng)態(tài)反編譯,提高了dex文件動(dòng)態(tài)加載的安全性。
技術(shù)領(lǐng)域
本發(fā)明涉及應(yīng)用程序安全防護(hù)技術(shù)領(lǐng)域,具體涉及一種dex文件的存儲(chǔ)方法和裝置。
背景技術(shù)
隨著Android系統(tǒng)的快速發(fā)展和及設(shè)備的高速增長(zhǎng),基于Android的平臺(tái)應(yīng)用需求也越來(lái)越復(fù)雜。形形色色的應(yīng)用軟件壯大了Android市場(chǎng),也豐富了我們的生活,越來(lái)越多的人從起初的嘗試到享受再到依賴(lài),Android應(yīng)用越來(lái)越廣泛。與其它操作系統(tǒng)相比,Android系統(tǒng)的開(kāi)源性為應(yīng)用開(kāi)發(fā)者提供了更多的功能接口,但這些功能接口在提高系統(tǒng)可擴(kuò)展性的同時(shí)也為惡意軟件提供了遍歷,非法拷貝、反編譯、內(nèi)存截取等手段不斷威脅著安卓系統(tǒng)的安全,不僅危害了使用者,也給正常應(yīng)用開(kāi)發(fā)者造成了嚴(yán)重的損害。因此,Android應(yīng)用安全性一直是開(kāi)發(fā)者所關(guān)注的重點(diǎn)問(wèn)題。
對(duì)Android應(yīng)用進(jìn)行加固防護(hù)的主要目的均是為了防止其java字節(jié)碼文件classes.dex文件被獲取,在Android平臺(tái)安裝運(yùn)行APK文件時(shí),都必須將dex文件釋放到內(nèi)存,如圖1中所示,為安卓dex文件的結(jié)構(gòu)示意圖,在dex文件加載時(shí),根據(jù)文件頭header中定義的其它結(jié)構(gòu)的偏移地址和長(zhǎng)度信息進(jìn)行尋址解析(圖中箭頭所示),將其它結(jié)構(gòu)中的數(shù)據(jù)加載分別加載到內(nèi)存中,加載后的dex文件的內(nèi)容是存放在內(nèi)存中的一端連續(xù)的內(nèi)存空間中的,因此,破解者只需要獲取到classes.dex文件的起始地址,然后從起始地址開(kāi)始dump(提取)文件總長(zhǎng)度f(wàn)ilesize大小的內(nèi)容,即可提取得到完整的 classes.dex文件的內(nèi)容,進(jìn)而可以進(jìn)一步還原出APK文件的源代碼,使得應(yīng)用程序很容易被篡改。
發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明實(shí)施例的目的在于提供一種能夠克服上述問(wèn)題或者至少能夠部分地解決上述問(wèn)題的一種dex文件的存儲(chǔ)方法和裝置。
為實(shí)現(xiàn)上述目的,本發(fā)明的一個(gè)實(shí)施例中提供了一種dex文件的存儲(chǔ)方法,該方法包括:
解析待加載的dex文件,提取解析后的dex文件的非文件頭header中的第一指定數(shù)據(jù);
申請(qǐng)第一內(nèi)存和第二內(nèi)存,所述第一內(nèi)存用于存儲(chǔ)所述第一指定數(shù)據(jù),所述第二內(nèi)存用于存儲(chǔ)dex文件中除第一指定數(shù)據(jù)之外的其他數(shù)據(jù);所述第一內(nèi)存和第二內(nèi)存不連續(xù);
根據(jù)所述第一內(nèi)存的內(nèi)存地址信息,修改dex文件的文件頭header中所述第一指定數(shù)據(jù)的偏移地址,使其指向第一內(nèi)存。
優(yōu)選的,如上所述的方法,完成文件頭header中所述第一指定數(shù)據(jù)的偏移地址的修改后,還包括:
根據(jù)修改后的dex文件的文件頭header信息,完成解析后的dex文件的加載,將所述第一指定數(shù)據(jù)加載到第一內(nèi)存中,將所述其它數(shù)據(jù)加載到第二內(nèi)存中。
優(yōu)選的,如上所述的方法,所述第一指定數(shù)據(jù)包括以下幾種數(shù)據(jù)中的至少一種:
字符串列表區(qū)段string_ids、數(shù)據(jù)類(lèi)型列表區(qū)段type_ids、方法原型列表區(qū)段proto_ids、類(lèi)成員列表區(qū)段field_ids、方法列表區(qū)段method_ids、類(lèi)列表區(qū)段class_defs、數(shù)據(jù)區(qū)區(qū)段data。
優(yōu)選的,如上所述的方法,所述第一內(nèi)存為一段連續(xù)的內(nèi)存空間。
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于北京奇虎科技有限公司,未經(jīng)北京奇虎科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611139089.5/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- 同類(lèi)專(zhuān)利
- 專(zhuān)利分類(lèi)
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F21-00 防止未授權(quán)行為的保護(hù)計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)的安全裝置
G06F21-02 .通過(guò)保護(hù)計(jì)算機(jī)的特定內(nèi)部部件
G06F21-04 .通過(guò)保護(hù)特定的外圍設(shè)備,如鍵盤(pán)或顯示器
G06F21-06 .通過(guò)感知越權(quán)操作或外圍侵?jǐn)_
G06F21-20 .通過(guò)限制訪(fǎng)問(wèn)計(jì)算機(jī)系統(tǒng)或計(jì)算機(jī)網(wǎng)絡(luò)中的節(jié)點(diǎn)
G06F21-22 .通過(guò)限制訪(fǎng)問(wèn)或處理程序或過(guò)程
- Android系統(tǒng)中保護(hù)dex文件不被反編譯的方法
- 一種基于Android可執(zhí)行文件重組的加固方法
- 一種在安卓art環(huán)境中動(dòng)態(tài)加載dex的方法及裝置
- 一種多dex文件分析方法及系統(tǒng)
- 一種dex文件的存儲(chǔ)方法和裝置
- 應(yīng)用程序脫殼方法及裝置
- 一種Android加固應(yīng)用程序通用自動(dòng)化脫殼方法和裝置
- 一種DEX的保護(hù)方法
- 應(yīng)用程序的dex優(yōu)化方法及終端
- 一種數(shù)據(jù)處理方法、裝置、存儲(chǔ)介質(zhì)及計(jì)算機(jī)設(shè)備
- 動(dòng)態(tài)存儲(chǔ)管理裝置及方法
- 一種存儲(chǔ)方法、服務(wù)器及存儲(chǔ)控制器
- 一種基于存儲(chǔ)系統(tǒng)的控制方法及裝置
- 一種信息的存儲(chǔ)控制方法
- 一種數(shù)據(jù)存儲(chǔ)方法及裝置
- 數(shù)據(jù)存儲(chǔ)方法、裝置、計(jì)算機(jī)設(shè)備以及存儲(chǔ)介質(zhì)
- 一種數(shù)據(jù)存儲(chǔ)控制方法及裝置
- 存儲(chǔ)設(shè)備、存儲(chǔ)系統(tǒng)及存儲(chǔ)方法
- 物料存儲(chǔ)方法及系統(tǒng)
- 基于雙芯智能電表的數(shù)據(jù)分類(lèi)存儲(chǔ)方法和裝置
- 一種數(shù)據(jù)庫(kù)讀寫(xiě)分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線(xiàn)程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





