应用文件脱壳方法和装置、计算机可读存储介质制造方法及图纸

技术编号:28838253 阅读:13 留言:0更新日期:2021-06-11 23:36
本公开涉及一种应用文件脱壳方法和装置、计算机可读存储介质。该应用文件脱壳方法包括:判断安卓应用程序包APK文件是否采用了安卓运行模式ART加固方式;在APK文件采用ART加固方式的情况下,获取系统函数;根据系统函数获取APK文件的基址和文件大小;根据APK文件的基址参数和文件大小,导出dex文件;修改应用清单函数入口并重新打包APK文件,对APK文件重新签名,以完成脱壳。本公开提供了一种专门针对ART虚拟机的脱壳方案,效率更高。

【技术实现步骤摘要】
应用文件脱壳方法和装置、计算机可读存储介质
本公开涉及移动应用安全领域,特别涉及一种应用文件脱壳方法和装置、计算机可读存储介质。
技术介绍
随着APK(Androidapplicationpackage,Android应用程序包)加固技术的高速发展,现有技术对APK的安全保护越来越好,但是这也给恶意APK躲避安全检测带来了可乘之机。恶意APK一旦采用了加固技术,会使得对恶意APK的检测难度加大甚至无法检测。另外,对于一般的APK文件,对其进行脱壳则可以检测出很多由于加固而隐藏掉的风险,例如编码不规范、硬编码问题等。并且脱壳后的APK可以获得其更多和更准确的信息,包括但不限于IP(InternetProtocol,网际互连协议)、Email(ElectronicMail,电子邮件)、URL(uniformresourcelocator;统一资源定位系统)、手机号等信息,方便对APK进行溯源或分析。
技术实现思路
专利技术人通过研究发现:从安卓4.4引入ART虚拟机并从安卓5.0开始完全代替Dalvik虚拟机之后,对APK的加固方法也在与时俱进,然而相关技术的大部分脱壳方法针对的都是Dalvik虚拟机,对ART虚拟机的脱壳方法却较少。即便目前有相关技术针对ART虚拟机的脱壳方法,但其实现也较为困难且较难做到完全的自动化处理,很大程度上依赖人工操作。鉴于以上技术问题中的至少一项,本公开提供了一种应用文件脱壳方法和装置、计算机可读存储介质,可以专门针对ART虚拟机的脱壳方案,效率更高。根据本公开的一个方面,提供一种应用文件脱壳方法,包括:判断安卓应用程序包APK文件是否采用了安卓运行模式ART加固方式;在APK文件采用ART加固方式的情况下,获取系统函数;根据系统函数获取APK文件的基址和文件大小;根据APK文件的基址参数和文件大小,导出dex文件;修改应用清单函数入口并重新打包APK文件,对APK文件重新签名,以完成脱壳。在本公开的一些实施例中,所述应用文件脱壳方法还包括:判断dex文件是否需要进行修复;在dex文件需要进行修复的情况下,对dex文件进行修复,之后执行修改应用清单函数入口并重新打包APK文件的步骤;在dex文件不需要进行修复的情况下,执行修改应用清单函数入口并重新打包APK文件的步骤。在本公开的一些实施例中,所述对dex文件进行修复包括:删除包含加固信息的dex文件;将dex文件修改为smali文件;按照文件从大到小修改文件名。在本公开的一些实施例中,所述判断dex文件是否需要进行修复包括:获取dex文件的魔数;根据dex文件的魔数判断dex文件是否为正常dex文件;在dex文件为正常dex文件的情况下,判定dex文件不需要进行修复;在dex文件不是正常dex文件的情况下,则判定需要对dex文件进行修复。在本公开的一些实施例中,在系统函数为第一系统函数的情况下,所述根据系统函数获取APK文件的基址参数和文件大小包括:从第一系统函数中直接获取APK文件的基址参数;通过执行加固的APK加载进内存执行,其中,壳程序会对加固程序解密,并产生dex文件来执行;读取dex文件header中的大小。在本公开的一些实施例中,在系统函数为第二系统函数的情况下,所述根据系统函数获取APK文件的基址参数和文件大小包括:从第二系统函数中直接获取APK文件的基址参数和文件大小。在本公开的一些实施例中,所述应用文件脱壳方法还包括:在APK文件未采用ART加固方式的情况下,判断APK文件是否为未加固;在APK文件采用了其他加固方式的情况下,判断APK文件是否采用了伪加密方式;在APK文件未采用伪加密方式的情况下,则执行获取系统函数的步骤。根据本公开的另一方面,提供一种应用文件脱壳装置,包括:加固方式判断模块,用于判断安卓应用程序包APK文件是否采用了安卓运行模式ART加固方式;系统函数获取模块,用于在APK文件采用ART加固方式的情况下,获取系统函数;参数获取模块,用于根据系统函数获取APK文件的基址参数和文件大小;文件导出模块,用于根据APK文件的基址参数和文件大小,导出dex文件;脱壳模块,用于修改应用清单函数入口并重新打包APK文件,对APK文件重新签名,以完成脱壳。在本公开的一些实施例中,所述应用文件脱壳装置用于执行实现如上述任一实施例所述的应用文件脱壳方法的操作。根据本公开的另一方面,提供一种应用文件脱壳装置,包括:存储器,用于存储指令。处理器,用于执行所述指令,使得所述装置执行实现如上述任一实施例所述的应用文件脱壳方法的操作。根据本公开的另一方面,提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如上述任一实施例所述的应用文件脱壳方法。本公开提供了一种专门针对ART虚拟机的脱壳方案,效率更高。附图说明为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本公开应用文件脱壳方法一些实施例的示意图。图2为本公开应用文件脱壳方法另一些实施例的示意图。图3为本公开应用文件脱壳装置一些实施例的示意图。图4为本公开应用文件脱壳装置另一些实施例的示意图。图5为本公开应用文件脱壳装置又一些实施例的示意图。具体实施方式下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。本文档来自技高网...

【技术保护点】
1.一种应用文件脱壳方法,其特征在于,包括:/n判断安卓应用程序包APK文件是否采用了安卓运行模式ART加固方式;/n在APK文件采用ART加固方式的情况下,获取系统函数;/n根据系统函数获取APK文件的基址和文件大小;/n根据APK文件的基址参数和文件大小,导出dex文件;/n修改应用清单函数入口并重新打包APK文件,对APK文件重新签名,以完成脱壳。/n

【技术特征摘要】
1.一种应用文件脱壳方法,其特征在于,包括:
判断安卓应用程序包APK文件是否采用了安卓运行模式ART加固方式;
在APK文件采用ART加固方式的情况下,获取系统函数;
根据系统函数获取APK文件的基址和文件大小;
根据APK文件的基址参数和文件大小,导出dex文件;
修改应用清单函数入口并重新打包APK文件,对APK文件重新签名,以完成脱壳。


2.根据权利要求1所述的应用文件脱壳方法,其特征在于,还包括:
判断dex文件是否需要进行修复;
在dex文件需要进行修复的情况下,对dex文件进行修复,之后执行修改应用清单函数入口并重新打包APK文件的步骤;
在dex文件不需要进行修复的情况下,执行修改应用清单函数入口并重新打包APK文件的步骤。


3.根据权利要求2所述的应用文件脱壳方法,其特征在于,所述对dex文件进行修复包括:
删除包含加固信息的dex文件;
将dex文件修改为smali文件;
按照文件从大到小修改文件名。


4.根据权利要求2所述的应用文件脱壳方法,其特征在于,所述判断dex文件是否需要进行修复包括:
获取dex文件的魔数;
根据dex文件的魔数判断dex文件是否为正常dex文件;
在dex文件为正常dex文件的情况下,判定dex文件不需要进行修复;
在dex文件不是正常dex文件的情况下,则判定需要对dex文件进行修复。


5.根据权利要求1-4中任一项所述的应用文件脱壳方法,其特征在于,在系统函数为第一系统函数的情况下,所述根据系统函数获取APK文件的基址参数和文件大小包括:
从第一系统函数中直接获取APK文件的基址参数;
通过执行加固的APK加载进内存执行,其中,壳程序会对加固程序解密,并产...

【专利技术属性】
技术研发人员:殷铭向钢伍杰袁淑美闻剑峰
申请(专利权)人:中国电信股份有限公司
类型:发明
国别省市:北京;11

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

1