[發明專利]應用程序脫殼方法及裝置有效
| 申請號: | 201710526710.1 | 申請日: | 2017-06-30 |
| 公開(公告)號: | CN107392018B | 公開(公告)日: | 2020-09-15 |
| 發明(設計)人: | 王加水 | 申請(專利權)人: | 阿里巴巴集團控股有限公司 |
| 主分類號: | G06F21/56 | 分類號: | G06F21/56 |
| 代理公司: | 北京博思佳知識產權代理有限公司 11415 | 代理人: | 林祥 |
| 地址: | 英屬開曼群島大開*** | 國省代碼: | 暫無信息 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 應用程序 脫殼 方法 裝置 | ||
1.一種應用程序脫殼方法,包括:
通過安卓虛擬機DVM將待脫殼應用程序的加殼Dex代碼加載到內存中;
對于所述待脫殼應用程序的目標類,定位所述目標類對應的Dex代碼所處的內存片段,所述目標類為確定需要脫殼的一個或多個類;
在主動加載時刻,將所述內存片段中的Dex代碼主動加載到所述DVM使用的內存對象中,所述主動加載時刻在所述加殼Dex代碼被全部加載到所述內存中之后,且在所述內存中的Dex代碼被運行結束之前;
將所述內存對象中的Dex代碼還原為所述目標類對應的脫殼Dex代碼,并生成包含所述脫殼Dex代碼的Dex文件。
2.根據權利要求1所述的方法,確定所述主動加載時刻,包括:
利用動態插樁技術,監測所述DVM的加載完成時刻,所述加載完成時刻是完成加載所述加殼Dex代碼到所述內存中的時刻;
根據監測所得的所述加載完成時刻,確定所述主動加載時刻。
3.根據權利要求1所述的方法,所述將所述內存對象中的Dex代碼還原為所述目標類對應的脫殼Dex代碼,包括:
將預設的多個還原規則中的一個或多個確定為目標還原規則,所述還原規則包括:簡易型還原規則、和/或數據重組型還原規則、和/或數據替換型還原規則;
利用所述目標還原規則,將所述內存對象中的Dex代碼還原為所述目標類對應的脫殼Dex代碼。
4.根據權利要求3所述的方法,當所述目標還原規則為簡易型還原規則時,所述利用所述目標還原規則,將所述內存對象中的Dex代碼還原為所述目標類對應的脫殼Dex代碼,包括:
根據所述內存對象中的Dex文件頭,確定Dex長度;
從所述內存對象中提取與所述Dex長度對應的脫殼Dex代碼。
5.根據權利要求4所述的方法,所述根據所述內存對象中的Dex文件頭,確定Dex長度,包括:
將所述Dex文件頭中的dataSize字段和dataOff字段之間的數據長度,確定為Dex長度。
6.根據權利要求4所述的方法,當所述目標還原規則為數據重組型還原規則時,所述利用所述目標還原規則,將所述內存對象中的Dex代碼還原為所述目標類對應的脫殼Dex代碼,包括:
確定所述內存對象中的所述Dex代碼的數據偏移特性;
根據預先確定的數據偏移特性和Dex重組規則的對應關系,確定與所述Dex代碼的數據偏移特性對應的目標Dex重組規則;
基于所述目標Dex重組規則,對所述內存對象中的Dex代碼進行重新組合,得到脫殼Dex代碼。
7.根據權利要求4所述的方法,當所述目標還原規則為數據替換型還原規則時,所述利用所述目標還原規則,將所述內存對象中的Dex代碼還原為所述目標類對應的脫殼Dex代碼,包括:
確定所述Dex代碼中包含的待替換數據;
按照預設的數據替換規則,將所述待替換數據替換為原始數據,得到脫殼Dex代碼。
8.根據權利要求1所述的方法,在將所述內存對象中的Dex代碼還原為所述目標類對應的脫殼Dex代碼之前,還包括:
當檢測到所述Dex代碼中的Dex頭文件異常時,根據預設的頭文件異常處理規則對異常的Dex頭文件進行處理,得到正常的Dex代碼。
9.根據權利要求1所述的方法,還包括:
當還原所述目標類的脫殼Dex代碼失敗時,取消對該目標類的脫殼任務并執行對該待脫殼應用程序的其他類的脫殼任務。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于阿里巴巴集團控股有限公司,未經阿里巴巴集團控股有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710526710.1/1.html,轉載請聲明來源鉆瓜專利網。





