Android系统中的文件脱壳方法及装置制造方法及图纸

技术编号:16547185 阅读:88 留言:0更新日期:2017-11-11 11:55
本发明专利技术公开了一种Android系统中的文件脱壳方法及装置,所述Android系统中的文件脱壳方法包括:获取目标应用的应用信息;在所述目标应用指定的运行环境中启动所述目标应用,根据所述应用信息监控启动的所述目标应用的运行状态;当所述目标应用的运行状态为解密状态时,通过结构体得到可执行代码文件,所述结构体是所述目标应用的可执行代码加载至运行环境对应形成的。采用本发明专利技术的Android系统中的文件脱壳方法及装置能够提高文件脱壳效率。

File shelling method and device in Android system

The invention discloses a method and device for shelling files in the Android system, including file shelling method in the Android system: application of information acquisition of the target application; start the target application in the specified operating environment of the target application, according to the operation state of the target application and the application of information monitoring starting the running state of the target application; when the decryption state, through the structure obtained executable file, the structure is the target application executable code is loaded into the runtime environment formed. The file shelling method and device in the Android system of the invention can improve the efficiency of file shelling.

【技术实现步骤摘要】
Android系统中的文件脱壳方法及装置
本专利技术涉及计算机应用
,尤其涉及一种Android系统中的文件脱壳方法及装置。
技术介绍
随着计算机应用技术的飞速发展,针对Android系统所设计的应用程序越来越多,程序员为了缩小应用程序所占用的磁盘空间,或者,为了防止其所设计的应用程序不被非法修改或者反编译,通常都会对应用程序所对应的可执行代码文件进行加壳,以形成应用程序的加壳文件。相对的,应用程序在运行之前就需要对加壳文件进行脱壳,以使应用程序通过加载相应的可执行代码能够顺畅运行。然而,现有的文件脱壳方法通常是利用Android模拟器将应用程序运行时的内存全部转录(dump)下来,再从dump得到的内存中寻找应用程序的可执行代码,进而形成可执行代码文件,以此达到文件脱壳目的。该种方法需要花费大量的时间进行内存的dump,因此,仍存在文件脱壳效率低的问题。
技术实现思路
基于此,有必要提供一种Android系统中的文件脱壳方法,所述方法能够提高文件脱壳效率。此外,还有必要提供一种Android系统中的文件脱壳装置,所述装置能够提高文件脱壳效率。为了解决上述技术问题,本专利技术所采用的技术方案为:一种Android系统中的文件脱壳方法,包括:获取目标应用的应用信息;在所述目标应用指定的运行环境中启动所述目标应用,根据所述应用信息监控启动的所述目标应用的运行状态;当所述目标应用的运行状态为解密状态时,通过结构体得到可执行代码文件,所述结构体是所述目标应用的可执行代码加载至运行环境对应形成的。一种Android系统中的文件脱壳装置,包括:信息获取模块,用以获取目标应用的应用信息;状态监控模块,用以在所述目标应用指定的运行环境中启动所述目标应用,根据所述应用信息监控启动的所述目标应用的运行状态;文件组装模块,用以当所述目标应用的运行状态为解密状态时,通过结构体得到可执行代码文件,所述结构体是所述目标应用的可执行代码加载至运行环境对应形成的。与现有技术相比,本专利技术具有以下有益效果:为实现目标应用的文件脱壳,获取目标应用的应用信息,在目标应用指定的运行环境中启动目标应用,根据应用信息对启动的目标应用进行运行状态监控,当目标应用的运行状态为解密状态时,通过目标应用的可执行代码加载至运行环境所对应的结构体得到可执行代码文件。也就是说,通过对目标应用的运行状态进行监控,在目标应用处于解密状态时加载目标应用的可执行代码至运行环境,进而利用可执行代码加载至运行环境所对应的结构体,即可得到可执行代码文件,以此达到文件脱壳的目的,避免了现有技术中利用Android模拟器对目标应用运行时的全部内存进行dump,从而有效地提高了文件脱壳效率。附图说明图1为本专利技术实施例所提供的一种移动终端的结构示意图;图2为一实施例的Android系统中的文件脱壳方法的流程图;图3为图2中获取目标应用的应用信息的方法流程图;图4为图2中根据应用信息监控启动的目标应用的运行状态的方法流程图;图5为图2中根据结构体得到可执行代码文件的方法流程图;图5a为图5中dex格式的可执行代码文件的结构示意图;图6为另一实施例的Android系统中的文件脱壳方法的流程图;图7为一个实施例的Android系统中的文件脱壳装置的结构框图;图8为图7中信息获取模块的结构框图;图9为图7中状态监控模块的结构框图;图10为图7中文件脱壳模块的结构框图;图11为另一实施例的Android系统中的文件脱壳装置的结构框图。具体实施方式体现本专利技术特征与优点的典型实施方式将在以下的说明中详细叙述。应理解的是本专利技术能够在不同的实施方式上具有各种的变化,其皆不脱离本专利技术的范围,且其中的说明及图示在本质上是当作说明之用,而非用以限制本专利技术。应用程序通过运行来为用户提供各种服务,以满足用户各种请求,而应用程序的运行必将需要进行可执行代码的加载,并执行该应用程序所加载的可执行代码。为了保护应用程序的可执行代码不被篡改或者反编译,程序员通常会对可执行代码所形成的可执行代码文件进行加壳,以形成受保护的加壳文件,从而有效地保护应用程序的安全。相对的,脱壳即是使加壳文件去掉其所加的“壳”,从而得到可执行代码文件,进而通过运行应用程序的可执行代码保证应用程序顺畅运行。然而,现有的文件脱壳方法是通过篡改API(ApplicationProgrammingInterface,应用程序编程接口)接口的方式,获取应用程序的可执行代码文件在内存当中的映射空间,然后在应用程序加载可执行代码完成之后dump下应用程序运行时的全部内存至磁盘,并通过获取到的映射空间进行可执行代码文件的查找,以此实现文件脱壳。该种方法通过Android模拟器来运行应用程序,不仅需要花费大量的时间以及占用大量的磁盘存储空间,而且在全部内存空间中查找可执行代码文件相对困难,因为该全部内存空间中会有很多非真正的可执行代码所形成的可执行代码文件。此外,在应用程序运行过程中,还可能由于Android系统的原因或者应用程序自身的原因,造成可执行代码被覆盖,从而无法查找到可执行代码文件,导致脱壳失败。因此,为了提高文件脱壳效率和文件脱壳的成功率,特提出了一种Android系统中的文件脱壳方法,该方法运行于移动终端之上。请参阅图1,图1为本专利技术实施例所提供的一种移动终端100的结构示意图。该移动终端100可以是智能手机、平板电脑、掌上电脑或者其它可供Android系统运行的终端设备。移动终端100包括存储器101、存储控制器103、一个或多个(图中仅示出一个)处理器105、外设接口107、射频模块109、定位模块111、摄像模块113、音频模块115、触控屏幕117以及按键模块119。这些组件通过一条或多条通讯总线/信号线121相互通讯。可以理解,图1所示的结构仅为示意,移动终端100还可包括比图1中所示更多或更少的组件,或者具有与图1所示不同的组件。图1中所示的各组件可以采用硬件、软件或者其组合来实现。其中,存储器101可用于存储软件程序以及模块,如本专利技术实施例中的文件脱壳方法及装置对应的程序指令及模块,处理器105通过运行存储在存储器101内的程序指令,从而执行各种功能以及数据处理,即实现上述运行于移动终端100的文件脱壳方法。存储器101作为资源存储的载体,可以是随机存储介质、例如高速随机存储器、非易失性存储器,如一个或多个磁性存储装置、闪存、或者其它固态存储器。存储方式可以是短暂存储或者永久存储。外设接口107可以包括至少一有线或无线网络接口、至少一串并联转换接口、至少一输入输出接口以及至少一USB接口等等,用于将外部各种输入/输出装置耦合至存储器101以及处理器105,以实现与外部各种输入/输出装置的通信。射频模块109用于收发电磁波,实现电磁波与电信号的相互转换,从而通过通讯网络与其他设备进行通讯。通信网络包括蜂窝式电话网、无线局域网或者城域网,上述通信网络可以使用各种通信标准、协议及技术。定位模块111用于获取移动终端100的当前所在的地理位置。定位模块111的实例包括但不限于全球卫星定位系统(GPS)、基于无线局域网或者移动通信网的定位技术。摄像模块113用于拍摄照片或者视频。拍摄的照片或者视频可以存储至存储器101内,还可以通过本文档来自技高网...
Android系统中的文件脱壳方法及装置

【技术保护点】
一种Android系统中的文件脱壳方法,其特征在于,包括:获取目标应用的应用信息;在所述目标应用指定的运行环境中启动所述目标应用,根据所述应用信息监控启动的所述目标应用的运行状态;当所述目标应用的运行状态为解密状态时,通过结构体得到可执行代码文件,所述结构体是所述目标应用的可执行代码加载至运行环境对应形成的。

【技术特征摘要】
1.一种Android系统中的文件脱壳方法,其特征在于,包括:获取目标应用的应用信息;在所述目标应用指定的运行环境中启动所述目标应用,根据所述应用信息监控启动的所述目标应用的运行状态;当所述目标应用的运行状态为解密状态时,通过结构体得到可执行代码文件,所述结构体是所述目标应用的可执行代码加载至运行环境对应形成的。2.如权利要求1所述的方法,其特征在于,所述获取目标应用的应用信息的步骤包括:解压所述目标应用的安装包,得到全局配置文件;解析所述全局配置文件得到所述目标应用的应用信息。3.如权利要求1所述的方法,其特征在于,所述在所述目标应用指定的运行环境中启动所述目标应用,根据所述应用信息监控启动的所述目标应用的运行状态的步骤包括:由所述应用信息中得到所述目标应用的活动组件;判断所述运行环境中所述目标应用的活动组件是否启动;若为是,则判定所述目标应用的运行状态为解密状态。4.如权利要求1所述的方法,其特征在于,所述当所述目标应用的运行状态为解密状态时,通过结构体得到可执行代码文件的步骤包括:所述目标应用的运行状态为解密状态时,由所述结构体中得到所述目标应用的可执行代码加载至所述运行环境所对应的内存地址;根据所述内存地址获取对应的脱壳文件信息,并组装所述脱壳文件信息得到所述可执行代码文件。5.如权利要求4所述的方法,其特征在于,所述由所述结构体中得到所述目标应用的可执行代码加载至所述运行环境所对应的内存地址的步骤之前,所述方法还包括:在所述运行环境中加载所述目标应用的加壳文件,通过所述加壳文件中的外壳代码对所述加壳文件进行解密,得到所述可执行代码;加载解密得到的可执行代码至所述运行环境;保存所述可执行代码加载至所述运行环境所对应的内存地...

【专利技术属性】
技术研发人员:易洪
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

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

1