基于art模式的脱壳方法、系统、设备及可读存储介质与流程

文档序号:14677668发布日期:2018-06-12 21:43阅读:137来源:国知局
基于art模式的脱壳方法、系统、设备及可读存储介质与流程

本发明涉及移动互联网网络安全技术领域,特别涉及一种基于art模式的脱壳方法、系统、设备及计算机可读存储介质。



背景技术:

随着移动互联网的飞速发展和Android智能手机的快速普及,越来越多的移动互联网恶意程序对人们的日常生活产生了恶意影响,甚至造成人民群众的财产损失和隐私泄露等问题。为解决上述问题,很多安全技术公司越来越重视移动终端的安全性问题,研发出了很多App(Application,即应用程序)加固产品。但是,很多手机病毒程序、木马程序的开发者也倾向于采用App加固产品来保护自己的恶意软件来达到非法目的,也就是说这种经过加固保护的恶意软件可以避开安全软件的检测。

针对这些加固保护的恶意软件,目前研究人员已经提出了一些脱壳方案,现有的脱壳方案主要是在Dalvik模式下进行,比如动态调试内存dump法,它可以成功脱掉第一代的Android加固产品。由于第二代的Android加固产品的特点是,运行某个功能时,才将解密后的代码交给虚拟机执行,dex在内存中的数据还是加密的,所以采用动态调试内存dump法进行脱壳,dump出的dex还是带壳的。而且随着技术的更新,反动态调试、反注入、反篡改等保护技术越来越复杂,这给研究人员增加了巨大的研究成本。

由此可见,如何提供一种脱壳方案,以实现在不需要过掉加固程序的反动态调试、反注入、反篡改等保护技术的情况下,简单高效地完成脱壳操作,是本领域技术人员亟待解决的技术问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于art模式的脱壳方法、系统、设备及计算机可读存储介质,以实现在不需要过掉加固程序的反动态调试、反注入、反篡改等保护技术的情况下,简单高效地完成脱壳操作。其具体方案如下:

一种基于art模式的脱壳方法,包括:

在利用转换程序将dex字节码转换成oat格式之前,确定当前所述转换程序的目标存储位置;

从所述目标存储位置上获取相应的解密后加固程序;

获取所述解密后加固程序中相应的所有dex文件名,从所述所有dex文件名中确定出目标dex文件名,并提取所述目标dex文件名的特征值;

从所述解密后加固程序的所有dex文件中确定出与所述特征值对应的dex文件,得到目标dex文件;

获取所述目标dex文件的文件参数;

根据所述文件参数从内存中将所述目标dex文件中的相应数据dump下来,以完成脱壳操作。

优选的,所述获取所述解密后加固程序中相应的所有dex文件名的步骤,包括:

获取预设的dex文件解析加载指针,然后调用相应的dex文件解析函数,以获取所述解密后加固程序中相应的所有dex文件名。

优选的,所述dex文件解析函数包括DexFile::GetLocation。

优选的,所述在利用转换程序将dex字节码转换成oat格式之前,确定当前所述转换程序的目标存储位置的步骤,包括:

在Android 4.4及以上版本的源码中,查找dex2oat模块;

在所述dex2oat模块中的转换程序将dex字节码转换成oat格式之前,确定当前所述转换程序的目标存储位置。

优选的,所述获取所述解密后加固程序中相应的所有dex文件名,从所述所有dex文件名中确定出目标dex文件名,并提取所述目标dex文件名的特征值的步骤,包括:

调用Android的Log日志函数,在DDMS打印出获取到的所述解密后加固程序中相应的所有dex文件名;

从所述所有dex文件名中确定出目标dex文件名,并提取所述目标dex文件名的特征值。

优选的,所述获取所述目标dex文件的文件参数的步骤,包括:

获取所述目标dex文件的长度和所述目标dex文件在内存中的起始地址。

优选的,所述根据所述文件参数从内存中将所述目标dex文件中的相应数据dump下来,以完成脱壳操作的步骤,包括:

根据获取到的所述目标dex文件的长度和所述目标dex文件在内存中的起始地址,调用open函数将该dex文件中的相应数据从所述内存中dump下来,以完成脱壳操作。

相应的,本发明还提供了一种基于art模式的脱壳系统,包括:

目标存储位置确定模块,用于在利用转换程序将dex字节码转换成oat格式之前,确定当前所述转换程序的目标存储位置;

解密后加固程序获取模块,用于从所述目标存储位置上获取相应的解密后加固程序;

特征值获取模块,用于获取所述解密后加固程序中相应的所有dex文件名,从所述所有dex文件名中确定出目标dex文件名,并提取所述目标dex文件名的特征值;

目标dex文件确定模块,用于从所述解密后加固程序的所有dex文件中确定出与所述特征值对应的dex文件,得到目标dex文件;

文件参数获取模块,用于获取所述目标dex文件的文件参数;

脱壳模块,用于根据所述文件参数从内存中将所述目标dex文件中的相应数据dump下来,以完成脱壳操作。

相应的,本发明还提供了一种基于art模式的脱壳设备,包括存储器和处理器,其中,所述处理器用于执行所述存储器中存储的计算机程序以实现如前述任意所述基于art模式的脱壳方法的步骤。

相应的,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述任意所述基于art模式的脱壳方法的步骤。

本发明公开的基于art模式的脱壳方法,包括:在利用转换程序将dex字节码转换成oat格式之前,确定当前所述转换程序的目标存储位置;从所述目标存储位置上获取相应的解密后加固程序;获取所述解密后加固程序中相应的所有dex文件名,从所述所有dex文件名中确定出目标dex文件名,并提取所述目标dex文件名的特征值;从所述解密后加固程序的所有dex文件中确定出与所述特征值对应的dex文件,得到目标dex文件;获取所述目标dex文件的文件参数;根据所述文件参数从内存中将所述目标dex文件中的相应数据dump下来,以完成脱壳操作。

本发明的脱壳方法是在Android的art模式下进行的,而并非是和现有技术一样在Dalvik模式下进行。正如本领域技术人员所知,在启用ART模式后,系统在安装应用程序的时候会进行一次预编译,也即将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。其次,在Android的art模式下,加固后的apk在第一次安装的过程中,在dex字节码转换成oat格式前,加固程序本身就已经进行了解密操作,本发明提供的脱壳方法也就是在此刻从所述目标存储位置上获取相应的解密后加固程序,然后经过后续步骤把目标dex文件中的相应数据从内存中dump下来,以完成脱壳。由此可见,本发明提供的脱壳方法可以在不需要过掉加固程序的反动态调试、反注入、反篡改等保护技术的情况下,不对加固程序的加密算法或压缩算法进行研究或分析,进而简单高效地完成脱壳操作。

需要说明的是,本发明公开的一种基于art模式的脱壳系统、设备及计算机可读存储介质所具有的有益效果与上述有益效果相似或相同,在此不再赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例公开的一种基于art模式的脱壳方法流程图;

图2为本发明实施例公开的一种具体的基于art模式的脱壳方法流程图;

图3为本发明实施例公开的一种基于art模式的脱壳系统结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种基于art模式的脱壳方法,参见图1所示,该方法具体包括以下步骤:

步骤S11:在利用转换程序将dex字节码转换成oat格式之前,确定当前所述转换程序的目标存储位置。

需要说明的是,在Android的art模式下,加固后的apk在第一次安装的过程中,在dex字节码转换成oat格式前,加固程序本身就已经进行了解密操作,而本申请实施例正是先确定准备将dex字节码转换成oat格式的关键位置,也即执行上述转换程序的位置。

步骤S12:从所述目标存储位置上获取相应的解密后加固程序。

在确定上述关键位置,也即目标存储位置的情况下,便可获取到相应解密后加固程序。

步骤S13:获取所述解密后加固程序中相应的所有dex文件名,从所述所有dex文件名中确定出目标dex文件名,并提取所述目标dex文件名的特征值。

其中,上述目标dex文件名为加固程序的dex文件名。上述特征值可以是相应的文件扩展名,例如/data/data/com.yy.dream/.jiagu/class.dex为加固程序中的文件名,则可以将文件扩展名为.jiagu文件名作为目标dex文件名的特征。

步骤S14:从所述解密后加固程序的所有dex文件中确定出与所述特征值对应的dex文件,得到目标dex文件。

需要说明的是,若解密后加固程序的所有dex文件中的任意dex文件名符合步骤S13中确定的特征值,也即与上述特征值对应,则可以得到目标文件,即需要进行处理的加固程序。

步骤S15:获取所述目标dex文件的文件参数。

其中,上述文件参数为文件中相应数据的参数,例如在内存中的起始地址及数据长度等。

步骤S16:根据所述文件参数从内存中将所述目标dex文件中的相应数据dump下来,以完成脱壳操作。

可见,本申请实施例公开的脱壳方法是在Android的art模式下进行的,而并非是和现有技术一样在Dalvik模式下进行。正如本领域技术人员所知,在启用ART模式后,系统在安装应用程序的时候会进行一次预编译,也即将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。其次,在Android的art模式下,加固后的apk在第一次安装的过程中,在dex字节码转换成oat格式前,加固程序本身就已经进行了解密操作,本发明提供的脱壳方法也就是在此刻从所述目标存储位置上获取相应的解密后加固程序,然后经过后续步骤把目标dex文件中的相应数据从内存中dump下来,以完成脱壳。由此可见,本申请实施例公开的脱壳方法可以在不需要过掉加固程序的反动态调试、反注入、反篡改等保护技术的情况下,不对加固程序的加密算法或压缩算法进行研究或分析,进而简单高效地完成脱壳操作。

本申请实施例还相应公开了一种具体的基于art模式的脱壳方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。参见图3所示,该方法具体包括以下步骤:

步骤S11:在Android 4.4及以上版本的源码中,查找dex2oat模块,然后在所述dex2oat模块中的转换程序将dex字节码转换成oat格式之前,确定当前所述转换程序的目标存储位置。

具体的,可通过以下代码实现:

步骤S22:从所述目标存储位置上获取相应的解密后加固程序。

步骤S23:获取预设的dex文件解析加载指针,然后调用相应的dex文件解析函数,以获取所述解密后加固程序中相应的所有dex文件名,从所述所有dex文件名中确定出目标dex文件名,并提取所述目标dex文件名的特征值。

其中,上述dex文件解析函数包括DexFile::GetLocation。需要说明的是,上述获取所述解密后加固程序中相应的所有dex文件名,从所述所有dex文件名中确定出目标dex文件名,并提取所述目标dex文件名的特征值的步骤,可以具体包括:

调用Android的Log日志函数,在DDMS打印出获取到的所述解密后加固程序中相应的所有dex文件名;从所述所有dex文件名中确定出目标dex文件名,并提取所述目标dex文件名的特征值。

可以理解的是,由于每个加固apk的dex文件名不一样,因此安装加固apk时,在DDMS打印出获取到的所述解密后加固程序中相应的所有dex文件名中即可直接获取到相应的加固apk的dex文件名。

步骤S24:从所述解密后加固程序的所有dex文件中确定出与所述特征值对应的dex文件,得到目标dex文件。

步骤S25:获取所述目标dex文件的长度和所述目标dex文件在内存中的起始地址。

步骤S26:根据获取到的所述目标dex文件的长度和所述目标dex文件在内存中的起始地址,调用open函数将该dex文件中的相应数据从所述内存中dump下来,以完成脱壳操作。

需要说明的是,本申请实施例的有益效果可参见本文上述实施例,在此不再赘述。

相应的,本申请实施例还公开了一种基于art模式的脱壳系统,参见图3所示,包括:

目标存储位置确定模块31,用于在利用转换程序将dex字节码转换成oat格式之前,确定当前所述转换程序的目标存储位置。

解密后加固程序获取模块32,用于从所述目标存储位置上获取相应的解密后加固程序。

特征值获取模块33,用于获取所述解密后加固程序中相应的所有dex文件名,从所述所有dex文件名中确定出目标dex文件名,并提取所述目标dex文件名的特征值。

目标dex文件确定模块34,用于从所述解密后加固程序的所有dex文件中确定出与所述特征值对应的dex文件,得到目标dex文件。

文件参数获取模块35,用于获取所述目标dex文件的文件参数。

脱壳模块36,用于根据所述文件参数从内存中将所述目标dex文件中的相应数据dump下来,以完成脱壳操作。

需要说明的是,关于本实施例中各个模块之间的具体工作过程及带来的有益效果请参照本申请前述实施例公开的基于art模式的脱壳方法,在此不再赘述。

相应的,本申请实施例还公开了一种基于art模式的脱壳设备,包括存储器和处理器,其中,所述处理器用于执行所述存储器中存储的计算机程序以实现如前述任意实施例公开的基于art模式的脱壳方法的步骤。

需要说明的是,本申请实施例的技术部分和相应有益效果的具体内容可参见本文上述实施例,在此不再赘述。

相应的,本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述任意实施例公开的基于art模式的脱壳方法的步骤。

需要说明的是,本申请实施例的技术部分和相应有益效果的具体内容可参见本文上述实施例,在此不再赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种基于art模式的脱壳方法、系统、设备及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1