一种应用程序的脱壳方法、装置、终端设备和介质与流程

文档序号:21319604发布日期:2020-06-30 20:50阅读:186来源:国知局
一种应用程序的脱壳方法、装置、终端设备和介质与流程

本申请涉及通信技术领域,尤其涉及一种应用程序的脱壳方法、装置、终端设备和介质。



背景技术:

随着终端设备的发展,安卓(android)平台的应用的不断增多,android平台的恶意软件也在不断增多。用户的隐私和资产安全受到了严重的威胁。由于恶意应用通过加壳技术对恶意代码逻辑进行了隐藏,因此,为分析恶意软件行为,通常需要针对加壳的android应用进行脱壳操作,从而对获得的脱壳文件进行代码分析。

其中,软件加壳是指在一些计算机软件里有一段专门负责保护软件不被非法修改或反编译的程序。软件脱壳是对软件加壳的逆操作,把软件上存在的壳去掉,获取软件的源代码。在android平台上是指获得加壳前的dex文件。

现有技术下,针对android平台的应用脱壳时,通常采用以下两种方式:

第一种方式为:定制android系统,即在android系统代码中插入脱壳代码,获取原始的dex文件。

但是,采用这种方式,需要对源代码比较熟悉,并且每次修改系统源代码后都需要进行重新编译和刷机,操作步骤繁琐。

第二种方式为:采用容器技术动态加载需要脱壳的应用,并通过拦截dex调用的关键方法,获取原始的dex文件。

但是,很多加固的应用会检测自身的运行环境,若检测到自身运行在容器中时退出,导致无法脱壳,存在兼容性问题,适用范围较小。



技术实现要素:

本申请实施例提供一种应用程序的脱壳方法、装置、终端设备和介质,用以在对应用进行软件脱壳时,简化软件脱壳的复杂步骤,扩大适用范围。

一方面,提供一种应用程序的脱壳方法,包括:

基于接收的包含指定文件名的文件获取消息,向服务器返回指定文件,指定文件中包含openmemory方法的签名信息;

接收服务器发送的包含openmemory方法的签名信息的脱壳脚本,脱壳脚本用于:根据openmemory方法的签名信息拦截openmemory方法获得目标应用的脱壳文件的地址信息,并根据地址信息导出脱壳文件;

加载脱壳脚本并运行目标应用,获得脱壳文件。

较佳的,加载脱壳脚本并运行目标应用,获得脱壳文件,包括:

运行目标应用;

根据openmemory方法的签名信息,若确定目标应用调用openmemory方法,则通过指定的拦截hook应用拦截openmemory方法,获得目标应用的脱壳文件的地址信息;

根据脱壳文件的地址信息,确定脱壳文件的文件大小;

根据脱壳文件的地址信息和文件大小,将脱壳文件从内存导出至指定目录下。

较佳的,在基于接收的包含指定文件名的文件获取消息,向服务器返回指定文件之前,进一步包括:

获取系统用户权限;

安装并运行指定hook应用;

通过指定hook应用,建立监听。

较佳的,指定hook应用为服务端应用frida-server;

脱壳文件的文件类型为dex文件。

一方面,一种应用程序的脱壳装置,包括:

返回单元,用于基于接收的包含指定文件名的文件获取消息,向服务器返回指定文件,指定文件中包含openmemory方法的签名信息;

接收单元,用于接收服务器发送的包含openmemory方法的签名信息的脱壳脚本,脱壳脚本用于:根据openmemory方法的签名信息拦截openmemory方法获得目标应用的脱壳文件的地址信息,并根据地址信息导出脱壳文件;

获得单元,用于加载脱壳脚本并运行目标应用,获得脱壳文件。

较佳的,获得单元用于:

运行目标应用;

根据openmemory方法的签名信息,若确定目标应用调用openmemory方法,则通过指定的拦截hook应用拦截openmemory方法,获得目标应用的脱壳文件的地址信息;

根据脱壳文件的地址信息,确定脱壳文件的文件大小;

根据脱壳文件的地址信息和文件大小,将脱壳文件从内存导出至指定目录下。

较佳的,返回单元还用于:

获取系统用户权限;

安装并运行指定hook应用;

通过指定hook应用,建立监听。

较佳的,指定hook应用为服务端应用frida-server;

脱壳文件的文件类型为dex文件。

一方面,提供一种终端设备,包括至少一个处理单元、以及至少一个存储单元,其中,存储单元存储有计算机程序,当程序被处理单元执行时,使得处理单元执行上述任一种应用程序的脱壳方法的步骤。

一方面,提供一种计算机可读介质,其存储有可由终端设备执行的计算机程序,当程序在终端设备上运行时,使得终端设备执行上述任一种应用程序的脱壳方法的步骤。

本申请实施例提供的一种应用程序的脱壳方法、装置、终端设备和介质中,基于接收的包含指定文件名的文件获取消息,向服务器返回指定文件,指定文件中包含openmemory方法的签名信息;接收服务器发送的包含openmemory方法的签名信息的脱壳脚本,脱壳脚本用于:根据openmemory方法的签名信息拦截openmemory方法获得目标应用的脱壳文件的地址信息,并根据地址信息导出脱壳文件;加载脱壳脚本并运行目标应用,获得脱壳文件。这样,直接通过根据openmemory方法的签名信息拦截openmemory方法获得目标应用的脱壳文件的地址信息,并根据地址信息导出脱壳文件,简化了软件脱壳的繁琐操作,可以应用于不同应用环境,兼容性高,适用范围广。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请提供的一种应用场景图;

图2为本申请实施方式中一种应用程序的脱壳方法的实施流程图;

图3为本申请实施方式中一种应用程序的脱壳装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

为了在对应用进行软件脱壳时,简化软件脱壳的复杂步骤,避免兼容性问题,扩大适用范围,本申请实施例提供了一种应用程序的脱壳方法、装置、终端设备和介质。

本申请实施例中的应用程序的脱壳方法,可以应用于如图1所示的应用场景,在该应用场景中包括:服务器101和终端设备102。

服务器101可以是一台服务器或若干台服务器组成的服务器集群或云计算中心。终端设备102是具备网络通信能力的电子设备,该电子设备可以是智能手机、平板电脑或便携式个人计算机等,主要为采用android系统的电子设备。

终端设备102基于接收的包含指定文件名的文件获取消息,向服务器101返回指定文件,指定文件中包含openmemory方法的签名信息;接收服务器101发送的包含openmemory方法的签名信息的脱壳脚本,脱壳脚本用于:根据openmemory方法的签名信息拦截openmemory方法获得目标应用的脱壳文件的地址信息,并根据地址信息导出脱壳文件;加载脱壳脚本并运行目标应用,获得脱壳文件。

这样,直接通过根据openmemory方法的签名信息拦截openmemory方法获得目标应用的脱壳文件的地址信息,并根据地址信息导出脱壳文件,简化了软件脱壳的繁琐操作,可以应用于不同应用环境,兼容性高,适用范围广。

参阅图2所示,为本申请提供的一种应用程序的脱壳方法的实施流程图。该方法的具体实施流程如下:

步骤200:终端设备根据用户指令进行root操作,获得系统用户权限。

具体的,用户通过root工具对终端设备进行root操作,获得系统用户权限。

现代操作系统一般属于多用户的操作系统,也就是说,同一台机器可以为多个用户建立账户,一般这些用户都是为普通用户,这些普通用户能同时登录这台计算机,计算机对这些用户分配一定的资源,普通用户在所分配到的资源内进行各自的操作,相互之间不受影响。但是这些普通用户的权限是有限制的,且用户太多的话,管理就不便,从而引入root用户,此用户是唯一的,且拥有系统的所有权限。

步骤201:终端设备安装以及运行hook应用,建立监听。

具体的,终端设备直接下载hook安装包,或者接收服务器推送的hook安装包,并通过hook安装包安装以及运行hook应用,建立监听。

可选的,hook应用可以为服务端应用frida-serve。frida是一款基于python+java的hook框架,可运行在android/ios/linux/winosx等各平台,主要使用动态二进制插桩技术。插桩技术是指将额外的代码注入程序中以收集运行时的信息。

本申请实施例中,以采用frida-serve进行hook为例进行说明。

步骤202:服务器获取终端设备的openmemory方法的签名信息。

具体的,服务器向终端设备发送包含指定文件名的文件获取消息,并接收终端设备返回的指定文件,以及在该指定文件中获取openmemory方法的签名信息。

可选的,指定文件可以为libart.so。服务器可以采用linux系统上的nm命令“nmlibart.so|grepopenmemory”在libart.so文件包含的文件内容中搜索获得openmemory方法的签名信息。

步骤203:服务器根据openmemory方法的签名信息生成脱壳脚本。

具体的,服务器生成脱壳脚本,脱壳脚本用于根据openmemory方法的签名信息拦截终端设备的openmemory方法,获取openmemory方法中包含的脱壳文件的地址信息,并通过地址信息计算脱壳文件的文件大小,以及根据脱壳文件的地址信息和文件大小,将脱壳文件导出到目标应用的指定目录下。

其中,openmemory方法的各参数中至少包括脱壳文件的地址信息参数。脱壳文件可以为dex文件。

步骤204:终端设备接收服务器发送的脱壳脚本。

步骤205:终端设备加载脱壳脚本并运行目标应用,获得脱壳文件。

具体的,终端设备加载脱壳脚本后运行目标应用,则执行脱壳脚本的各项指令,根据openmemory方法的签名信息,通过hook应用拦截运行目标应用时调用的openmemory方法,获得脱壳文件的地址信息,并根据脱壳文件的地址信息计算脱壳文件的大小,以及根据脱壳文件的地址信息和大小,将脱壳文件导出到目标应用的指定目录下。

这是由于目标应用的运行时,会调用终端设备系统的openmemory方法,openmemory方法中包含多个参数,通过openmemory方法的各参数中的地址参数可以获得脱壳文件的地址信息。

本申请实施例中,一种电子设备,包括:一个或多个处理器;

以及,一个或多个计算机可读介质,可读介质上存储有用于应用程序的脱壳的程序,其中,程序被一个或多个处理器执行时,实现上述实施例中的各个步骤。

本申请实施例中,一个或多个计算机可读介质,可读介质上存储有用于应用程序的脱壳的程序,其中,程序被一个或多个处理器执行时,使得通信设备可以执行上述实施例中的各个步骤。

基于同一发明构思,本申请实施例中还提供了一种应用程序的脱壳装置,由于上述装置及设备解决问题的原理与一种应用程序的脱壳方法相似,因此,上述装置的实施可以参见方法的实施,重复之处不再赘述。

如图3所示,其为本申请实施例提供的一种应用程序的脱壳装置的结构示意图,包括:

返回单元30,用于基于接收的包含指定文件名的文件获取消息,向服务器返回指定文件,指定文件中包含openmemory方法的签名信息;

接收单元31,用于接收服务器发送的包含openmemory方法的签名信息的脱壳脚本,脱壳脚本用于:根据openmemory方法的签名信息拦截openmemory方法获得目标应用的脱壳文件的地址信息,并根据地址信息导出脱壳文件;

获得单元32,用于加载脱壳脚本并运行目标应用,获得脱壳文件。

较佳的,获得单元32用于:

运行目标应用;

根据openmemory方法的签名信息,若确定目标应用调用openmemory方法,则通过指定的拦截hook应用拦截openmemory方法,获得目标应用的脱壳文件的地址信息;

根据脱壳文件的地址信息,确定脱壳文件的文件大小;

根据脱壳文件的地址信息和文件大小,将脱壳文件从内存导出至指定目录下。

较佳的,返回单元30还用于:

获取系统用户权限;

安装并运行指定hook应用;

通过指定hook应用,建立监听。

较佳的,指定hook应用为服务端应用frida-server;

脱壳文件的文件类型为dex文件。

本申请实施例提供的一种应用程序的脱壳方法、装置、终端设备和介质中,基于接收的包含指定文件名的文件获取消息,向服务器返回指定文件,指定文件中包含openmemory方法的签名信息;接收服务器发送的包含openmemory方法的签名信息的脱壳脚本,脱壳脚本用于:根据openmemory方法的签名信息拦截openmemory方法获得目标应用的脱壳文件的地址信息,并根据地址信息导出脱壳文件;加载脱壳脚本并运行目标应用,获得脱壳文件。这样,直接通过根据openmemory方法的签名信息拦截openmemory方法获得目标应用的脱壳文件的地址信息,并根据地址信息导出脱壳文件,简化了软件脱壳的繁琐操作,可以应用于不同应用环境,兼容性高,适用范围广。

为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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