防止DEX文件从内存中转存的方法及装置制造方法及图纸

技术编号:11870631 阅读:101 留言:0更新日期:2015-08-12 20:57
本发明专利技术公开了一种防止DEX文件从内存中转存的方法及装置,方法包括:加载DEX文件,并解析为DEX基础结构数据文件和DEX函数实现字节码数据文件;提取DEX文件中的函数字节码数据,并存储到DEX函数实现字节码数据文件;加密压缩上述两个文件;读取上述两个文件,并解压缩解密;调用davlik虚拟机函数openDexFile以加载DEX基础结构数据文件;修改DEX基础结构数据文件中函数字节码的偏移,使其指向DEX函数实现字节码数据文件中对应的函数字节码数据。通过上述方式,本发明专利技术可以对抗动态破解,提高文件的安全性。

【技术实现步骤摘要】

本专利技术涉及文件加密解密领域,特别涉及一种防止DEX文件从内存中转存的方法及装置
技术介绍
安卓加固目前采用的主要方法就是调用安卓系统dalvik虚拟机提供的导出函数openDexFile来加载内存中的DEX数据,然后再调用相关JAVA函数方法来启动安卓程序。这种做法在对抗静态反编译上是非常有效果的,因为原有的安卓可执行程序文件dex文件已经被提取出来并且被重新加密压缩存储到apk文件不同的位置中。所以,所有的静态反编译软件将找不到真正的dex文件,或者即便找到也不知道用什么解密算法来解密该dex文件,因此就无法进行静态反编译。虽然这种方法能够对抗静态反编译,但是却无法对抗动态调试,及动态内存转存。逆向人员可以在dalvik虚拟机的导出函数openDexFile下断点让安卓程序中断下来,并且在这个时候通过openDexFile函数的参数得到解密后的dex内存数据的内存起始地址以及大小。然后通过内存转存工具将这段内存转存到文件中,并且转存后的该文件是一个完整可用的dex文件。最后再通过反编译工具对该dex文件进行反编译,这样,程序的源代码就完完整整的展现在逆向人员面前。申请公布号为CN 104317625 A的专利《一种APK文件的动态加载方法》中,提供了一种规避Android逆向工具的反编译方法,需要删除对应核心功能部分源代码的第二 APK文件,在实际反编译时,删除的第二 APK文件可以由逆向人员恢复,从而降低了反编译的难度,仍仅可对抗静态反编译,却无法对抗动态反编译。
技术实现思路
本专利技术所要解决的技术问题是:提供一种防止DEX文件从内存中转存的方法及装置,不仅可防止静态反编译,还可防止动态内存转存。为了解决上述技术问题,本专利技术采用的技术方案为:提供一种防止DEX文件从内存中转存的方法,包括:加载DEX文件,解析DEX文件为DEX基础结构数据文件和DEX函数实现字节码数据文件;提取DEX文件中的函数字节码数据,并存储到所述DEX函数实现字节码数据文件;加密压缩所述DEX基础结构数据文件及DEX函数实现字节码数据文件;读取所述DEX基础结构数据文件及所述DEX函数实现字节码数据文件,并解压缩解密;调用davlik虚拟机函数openDexFile以加载所述DEX基础结构数据文件;修改所述DEX基础结构数据文件中函数字节码的偏移,使其指向所述DEX函数实现字节码数据文件中对应的函数字节码数据。同时,本专利技术还对应提供一种防止DEX文件从内存中转存的装置,包括:文件拆分单元,用于加载DEX文件,解析DEX文件为DEX基础结构数据文件和DEX函数实现字节码数据文件;提取存储单元,用于提取DEX文件中的函数字节码数据,并存储到所述DEX函数实现字节码数据文件;加密压缩单元,用于加密压缩所述DEX基础结构数据文件及DEX函数实现字节码数据文件;读取解压解密单元,用于读取所述DEX基础结构数据文件及所述DEX函数实现字节码数据文件,并解压缩解密;调用单元,用于调用davlik虚拟机函数openDexFile以加载所述DEX基础结构数据文件;修改单元,用于修改所述DEX基础结构数据文件中函数字节码的偏移,使其指向所述DEX函数实现字节码数据文件中对应的函数字节码数据。本专利技术的有益效果在于:本专利技术通过将原始的DEX内存数据分为DEX基础结构数据文件及DEX函数实现字节码数据文件两个文件后,可使逆向人员无法得知DEX函数实现字节码数据文件在何时被进行修复,因此不能对DEX文件进行反编译,其安全性大大增强。【附图说明】图1为本专利技术防止DEX文件从内存中转存的方法实施例一的流程示意图;图2为图1步骤S130之前的具体流程图;图3为本专利技术防止DEX文件从内存中转存的方法实施例二的流程示意图;图4为本专利技术防止DEX文件从内存中转存的方法实施例三的流程示意图;图5为本专利技术防止DEX文件从内存中转存的方法实施例四的流程示意图;图6为本专利技术防止DEX文件从内存中转存的装置实施例五的结构示意图;图7为图6中文件拆分单元的具体结构示意图;图8为本专利技术防止DEX文件从内存中转存的装置实施例六的结构示意图;图9为本专利技术防止DEX文件从内存中转存的装置实施例七的结构示意图;图10为本专利技术防止DEX文件从内存中转存的装置实施例八的结构示意图。【具体实施方式】为详细说明本专利技术的
技术实现思路
、所实现目的及效果,以下结合实施方式并配合附图予以说明。本专利技术最关键的构思在于:解析DEX文件为DEX基础结构数据文件和DEX函数实现字节码数据文件,并提取DEX文件中的函数字节码数据,并存储到所述DEX函数实现字节码数据文件;加密压缩所述DEX基础结构数据文件及DEX函数实现字节码数据文件;读取所述DEX基础结构数据文件及所述DEX函数实现字节码数据文件,并解压缩解密;调用davlik虚拟机函数openDexFile以加载所述DEX基础结构数据文件;修改所述DEX基础结构数据文件中函数字节码的偏移,使其指向所述DEX函数实现字节码数据文件中对应的函数字节码数据。这样逆向人员就算在openDexFile下断点拦截并且转存数据,得到的也不过是不完整的没有任何函数实现字节码的DEX文件,不完整的DEX文件既看不到反编译后的代码也运行不了。请参照图1,图1为本专利技术防止DEX文件从内存中转存的方法实施例一的流程示意图,该方法包括如下步骤:步骤SllO:加载DEX文件,解析DEX文件为DEX基础结构数据文件和DEX函数实现字节码数据文件;首先,加载被保护的DEX文件,该DEX文件可以是源代码文件等,本领域技术人员可以根据该DEX文件创建新的DEX文件,如DEX基础结构数据文件和DEX函数实现字节码数据文件。步骤S120:提取DEX文件中的函数字节码数据,并存储到所述DEX函数实现字节码数据文件;遍历被保护的DEX文件中的函数字节码数据,提取这些数据,并存储到DEX函数实现字节码数据文件。步骤S130:加密压缩所述DEX基础结构数据文件及DEX函数实现字节码数据文件;而DEX基础结构数据文件则是通过替换DEX文件中每个类的函数字节码为空函数字节码并存储在该DEX基础结构数据文件。之后对DEX基础结构数据文件与DEX函数实现字节码数据文件进行加密。此时,受保护的DEX文件就被拆分为两个文件,即DEX基础结构数据文件与DEX函数实现字节码数据文件。步骤S140:读取所述DEX基础结构数据文件及所述DEX函数实现字节码数据文件,并解压缩解密;在程序启动时,读取DEX基础结构数据文件与DEX函数实现字节码数据文件,需要对其进行解压缩解密。步骤S150:调用davlik虚拟机函数openDexFile以加载所述DEX基础结构数据文件;dal当前第1页1 2 3 本文档来自技高网
...
防止DEX文件从内存中转存的方法及装置

【技术保护点】
一种防止DEX文件从内存中转存的方法,其特征在于,包括:加载DEX文件,解析DEX文件为DEX基础结构数据文件和DEX函数实现字节码数据文件;提取DEX文件中的函数字节码数据,并存储到所述DEX函数实现字节码数据文件;加密压缩所述DEX基础结构数据文件及DEX函数实现字节码数据文件;读取所述DEX基础结构数据文件及所述DEX函数实现字节码数据文件,并解压缩解密;调用davlik虚拟机函数openDexFile以加载所述DEX基础结构数据文件;修改所述DEX基础结构数据文件中函数字节码的偏移,使其指向所述DEX函数实现字节码数据文件中对应的函数字节码数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:郑建强刘德建陈宏展郑晟方振华李上杰
申请(专利权)人:福建天晴数码有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1