[发明专利]一种dex文件的存储方法和装置有效
申请号: | 201611138839.7 | 申请日: | 2016-12-12 |
公开(公告)号: | CN106843919B | 公开(公告)日: | 2021-02-23 |
发明(设计)人: | 刘敏 | 申请(专利权)人: | 北京奇虎科技有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;G06F21/51 |
代理公司: | 深圳市世纪恒程知识产权代理事务所 44287 | 代理人: | 胡海国 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 dex 文件 存储 方法 装置 | ||
1.一种dex文件的存储方法,其特征在于,包括:
运行安卓应用程序,解析并加载安卓应用程序的dex文件;
检测所述dex文件中定义的类是否已经被加载到内存空间中;
当检测到所述类已经被加载到内存空间中时,删除所述dex文件中所述类的类数据信息class_data_item;
其中,删除所述dex文件中所述类的类数据信息class_data_item,包括:根据dex文件的类列表区段class_defs中所述类的类数据偏移地址class_data_off,查找到dex文件数据区段data中该类的类数据信息class_data_item并删除。
2.根据权利要求1所述的方法,其特征在于,所述运行安卓应用程序前,包括:
接收安卓应用程序启动指令,启动类检测线程;所述类检测线程用于在安卓应用程序启动过程中,检测安卓应用程序的dex文件中定义的类是否已经被加载到内存空间中。
3.根据权利要求2所述的方法,其特征在于,接收安卓应用程序启动指令前,还包括:创建所述类检测线程;
在删除所述类的类数据信息class_data_item后,关闭所述类检测线程。
4.根据权利要求1至3之一所述的方法,其特征在于,所述dex文件中定义的类包括安卓应用程序的dex文件中的定义的至少一个类。
5.根据权利要求1至3之一所述的方法,其特征在于,删除所述dex文件中所述类的类数据信息class_data_item后,还包括:
将所述dex文件的类列表区段class_defs中所述类的类数据偏移地址class_data_off的值修改为0。
6.根据权利要求1至3之一所述的方法,其特征在于,所述检测所述dex文件中定义的类是否已经被加载到内存空间中,包括:
通过检测安卓操作系统中的dex文件路径列表DexPathList的dex元素数组dexElements中是否存在所述类的缓存标识,判断所述类是否已经被加载到内存空间中。
7.根据权利要求6所述的方法,其特征在于:所述类的缓存标识为所述类的变量值cookie,所述变量值cookie为加载后的类所在的内存地址。
8.一种dex文件的存储装置,其特征在于,包括:
dex文件解析加载模块,用于运行安卓应用程序,解析并加载安卓应用程序的dex文件;
类加载状态检测模块,用于检测所述dex文件中定义的类是否已经被加载到内存空间中;
类数据删除模块,用于当检测到所述类已经被加载到内存空间中时,删除所述dex文件中所述类的类数据信息class_data_item;
所述类数据删除模块包括:
类数据查找单元,用于根据dex文件的类列表区段class_defs中所述类的类数据偏移地址class_data_off,查找到dex文件数据区段data中该类的类数据信息class_data_item;
类数据删除单元,用于删除查找到的类数据信息class_data_item。
9.根据权利要求8所述的装置,其特征在于,该装置还包括:
类检测线程启动模块,用于在运行安卓应用程序前,接收安卓应用程序启动指令,启动类检测线程;所述类检测线程用于在安卓应用程序启动过程中,检测安卓应用程序的dex文件中定义的类是否已经被加载到内存中。
10.根据权利要求9所述的装置,其特征在于,还包括:
类检测线程创建模块,用于在接收安卓应用程序启动指令前,创建所述类检测线程;
类检测线程关闭模块,用于在删除所述类的类数据信息class_data_item后,关闭所述类检测线程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司,未经北京奇虎科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611138839.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:挡风板(2)
- 下一篇:机动车轮毂(A160328)