一种识别AndroidAPP加固的方法及检测方法

文档序号:9453335阅读:2592来源:国知局
一种识别Android APP加固的方法及检测方法
【技术领域】
[0001 ] 本发明属于网络信息安全技术领域,特别涉及一种识别Android APP加固的方法。
【背景技术】
[0002]随着Android移动终端设备的普及,应用于Android上的APP (Applicat1n,应用程序)也随之被大量开发,各种不同类型APP的应用有效提升了人们日常生活效率。
[0003]但由此也带来了各种风险,APP在安装过程中会从Android移动终端设备上获取各种权限,一旦恶意APP获得相应权限,Android移动终端系统防护将会失效,由此导致各种风险的发生,比如存在移动终端设备被他人冒用、设备上的恶意APP可以随意运行、设备上的网络接入和USB、蓝牙、红外等端口可以被随意连接使用等问题。这些问题严重影响了移动终端系统的安全性,容易导致使用者重要信息的泄露等诸多问题。
[0004]为避免正常的APP被反编译、恶意二次打包及插入恶意代码的发生,通常APP开发完成后对其进行加固,然后形成安装包;另外,有些恶意软件通过加固后伪装成正常的APP安装包提供给用户使用。由此导致正常APP安装包与伪装的APP安装包混杂在各类Android应用商城中。
[0005]普通使用者无法辨别安装的APP安装包是否为正常应用程序,因此,需要杀毒软件对APP安装包进行扫描。而杀毒厂商对加固APP和非加固APP采取不同的查杀方式,在进行查杀APP病毒之前,先识别APP加固,可对待测APP进行快速分类,提高查杀速率。对企图采用APP加固方式逃过杀毒软件检测的恶意软件,若先识别APP加固,可提高查杀的准确率。
[0006]另外,如果APP能够快速被识别是否加固,逆向分析人员即可及时的根据不同的APP类型,采取不同的分析方式,能有效提高工作效率。
[0007]现有识别APP加固通常是采用人工的方式,其识别方式较慢,而且还存在一定的误判,工作效率低且成本高。
[0008]因此需要一种能够智能识别APP是否加固的技术来解决现有技术存在的问题。

【发明内容】

[0009]本发明针对现有技术的不足,提出一种识别Android APP加固的方法,该方法能够准确识别Android APP是否经过加固处理。
[0010]本发明所述的一种识别Android APP加固的方法具体如下:
实现该方法的系统为一监控解析单元,所述监控解析单元包括APP程序识别获取模块、APP解析模块、组件名提取模块、信息匹配模块及数据库;
所述APP程序识别获取模块用于读取待检测的Android APP程序包,并判断待检测的Android APP程序包的有效性;
所述APP解析模块用于对Android APP程序包进行解析并提取Androidmainfest.xml文件和classes, dex文件; 所述组件名提取模块用于从Androidmainfest.xml文件中获取注册组件列表名及从classes, dex文件中获取声明组件列表名;
所述信息匹配模块用于比较所述注册组件列表名与所述声明组件列表名,并将比较结果存入数据库中;
所述数据库用于存储识别信息及结果;
所述方法包括如下步骤:
(1)APP程序识别获取模块获取待识别的AndroidAPP程序包;
(2)APP解析模块对待识别的Android APP程序包进行解析,并从解析文件中提取Androidmainfest.xml 文件和 classes, dex 文件;
(3)组件名提取模块从Androidmainfest.xml文件中获取注册组件列表名及从classes, dex文件中获取声明组件列表名;
(4)信息匹配模块比较组件名提取模块提取的注册组件列表名及声明组件列表名,如注册组件列表名及声明组件列表名相同,则确认Android APP程序包没有加固,如注册组件列表名及声明组件列表名不同,则确认Android APP程序包被加固;
(5)信息匹配模块将识别信息及比较结果存入数据库中。
[0011]具体的,所述识别信息包括Android APP程序包、提取的Androidmainfest.xml文件和classes, dex文件、提取的注册组件列表名及声明组件列表名。
[0012]根据上述识别Android APP加固的方法,本发明还提出了一种APP加固检测流程,具体如下:
(1)APP程序识别获取模块获取待检测的Andrο i d APP程序包,并判定待检测的Android APP程序包是否为有效文件,如果待检测的Android APP程序包为非有效文件,则直接转入步骤(8),即结束检测并将检测结果保存到数据库;否则进行步骤(2);
(2)APP程序识别获取模块判断待检测的Android APP程序包是否加密,如已经加密,则直接准入步骤(7);否则进行步骤(3);
(3)APP解析模块对待识别的Android APP程序包进行解析,并从解析文件中提取Androidmainfest.xml 文件和 classes, dex 文件;
(4)APP解析模块解析Androidmainfeast.xml文件和classes, dex文件,并判断Androidmainfeast.xml 文件和 classes, dex 文件是否加密,如果 Androidmainfeast.xml 文件和classes, dex文件经过加密,则直接进入步骤(7),否则进行步骤(5);
(5)组件名提取模块从Androidmainfest.xml文件中获取注册组件列表名及从classes, dex文件中获取声明组件列表名;
(6)信息匹配模块比较组件名提取模块提取的注册组件列表名及声明组件列表名,如注册组件列表名及声明组件列表名相同,则确认Android APP程序包没有加固,如注册组件列表名及声明组件列表名不同,则确认Android APP程序包被加固;
(7)信息匹配模块确认待检测的AndroidAPP程序包加固并生成的检测结果;
(8 )结束检测,信息匹配模块将识别信息及比较结果存入数据库中。
[0013]本发明所述技术方案的有益效果在于:通过静态解析APP的方式获取APP内的Androidmainfest.xml 和 classes, dex 文件,如果 Androidmainfeast.xml 文件和 classes,dex文件没有加密则对其进行解析,获取其中的注册组件列表和声明组件列表进行对比判断,该种方式弥补了人工识别的所造成的误判和时间成本,在对抗代码混淆,敏感信息加密方面有显著的效果。
【附图说明】
[0014]图1 一种识别Android APP加固的方法流程示意图;
图2 —种APP加固检测流程示意图。
【具体实施方式】
[0015]本发明主要提供了一种识别Android APP加固的方法,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实例对本发明做进一步说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0016]本发明涉及的相关技术术语的解释如下:
DEX替换加固:即加固厂商通过一定的技术手段将APP中原始classes, dex加密隐藏,用加固厂商自己的classes, dex替换APP中原始classes, dex。
[0017]解密文件:加固APP运行时将原始DEX解密时所需用到的加固厂商的解密文件。
[0018]解包:即解析APP文件,获取APP中所包含的所有文件名。
[0019]Androidmainfest.xml加固:即加固厂商通过一定的技术手段将APP中原始Androidmainfest.xml的关键字段进行修改,使其无法正常解析。
[0020]DEX加固:即加固厂商通过一定的技术手段将APP中原始classes, dex文件的关键字段进行修改,使其无法正常解析。
[0021]本发明所述技术方案是根据APP加固技术为基础而提出的一种APP加固识别方法,该识别方法总体是通过对识别APP自身加密、识别Androidmainfest.xml加固、识别DEX本身加固及识别DEX替换等四个维度进行综合分析和比较形成的,具体技术手段如下:
如图1所示,本发明所述的一种识别Android APP加固的方法,具体如下:
实现该方法的系统为一监控解析单元,所述监控解析单元包括APP程序识别获取模块、APP解析模块
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1