CN105205358B - 一种识别Android APP加固的方法及检测方法 - Google Patents

一种识别Android APP加固的方法及检测方法 Download PDF

Info

Publication number
CN105205358B
CN105205358B CN201510522321.2A CN201510522321A CN105205358B CN 105205358 B CN105205358 B CN 105205358B CN 201510522321 A CN201510522321 A CN 201510522321A CN 105205358 B CN105205358 B CN 105205358B
Authority
CN
China
Prior art keywords
app
name
component
classes
android
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510522321.2A
Other languages
English (en)
Other versions
CN105205358A (zh
Inventor
安亚龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZHONGKE INFORMATION SECURITY COMMON TECHNOLOGY NATIONAL ENGINEERING RESEARCH CENTER Co Ltd
Original Assignee
ZHONGKE INFORMATION SECURITY COMMON TECHNOLOGY NATIONAL ENGINEERING RESEARCH CENTER Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZHONGKE INFORMATION SECURITY COMMON TECHNOLOGY NATIONAL ENGINEERING RESEARCH CENTER Co Ltd filed Critical ZHONGKE INFORMATION SECURITY COMMON TECHNOLOGY NATIONAL ENGINEERING RESEARCH CENTER Co Ltd
Priority to CN201510522321.2A priority Critical patent/CN105205358B/zh
Publication of CN105205358A publication Critical patent/CN105205358A/zh
Application granted granted Critical
Publication of CN105205358B publication Critical patent/CN105205358B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

一种识别Android APP加固的方法,该方法为,获取待检测APP,启动检测程序;解析APP;获取APP内Androidmanifest.xml和classes.dex文件进行解析;获取Androidmanifest.xml中的注册组件列表和classes.dex中的声明组件列表进行匹配;若注册组件列表不能在声明组件列表中找到对应项,则确认APP加固;导出检测结果。通过本发明的静态分析方法,能够自动化判定APP的加固,弥补人工识别的所造成的误判和时间成本,在对抗代码混淆,敏感信息加密方面有显著的效果。

Description

一种识别Android APP加固的方法及检测方法
技术领域
本发明属于网络信息安全技术领域,特别涉及一种识别Android APP加固的方法。
背景技术
随着Android移动终端设备的普及,应用于Android上的APP(Application, 应用程序)也随之被大量开发,各种不同类型APP的应用有效提升了人们日常生活效率。
但由此也带来了各种风险,APP在安装过程中会从Android移动终端设备上获取各种权限,一旦恶意APP获得相应权限,Android移动终端系统防护将会失效,由此导致各种风险的发生,比如存在移动终端设备被他人冒用、设备上的恶意APP可以随意运行、设备上的网络接入和USB、蓝牙、红外等端口可以被随意连接使用等问题。这些问题严重影响了移动终端系统的安全性,容易导致使用者重要信息的泄露等诸多问题。
为避免正常的APP被反编译、恶意二次打包及插入恶意代码的发生,通常APP开发完成后对其进行加固,然后形成安装包;另外,有些恶意软件通过加固后伪装成正常的APP安装包提供给用户使用。由此导致正常APP安装包与伪装的APP安装包混杂在各类Android应用商城中。
普通使用者无法辨别安装的APP安装包是否为正常应用程序,因此,需要杀毒软件对APP安装包进行扫描。而杀毒厂商对加固APP和非加固APP采取不同的查杀方式,在进行查杀APP病毒之前,先识别APP加固,可对待测APP 进行快速分类,提高查杀速率。对企图采用APP加固方式逃过杀毒软件检测的恶意软件,若先识别APP加固,可提高查杀的准确率。
另外,如果APP能够快速被识别是否加固,逆向分析人员即可及时的根据不同的APP类型,采取不同的分析方式,能有效提高工作效率。
现有识别APP加固通常是采用人工的方式,其识别方式较慢,而且还存在一定的误判,工作效率低且成本高。
因此需要一种能够智能识别APP是否加固的技术来解决现有技术存在的问题。
发明内容
本发明针对现有技术的不足,提出一种识别Android APP加固的方法,该方法能够准确识别Android APP是否经过加固处理。
本发明所述的一种识别Android APP加固的方法具体如下:
实现该方法的系统为一监控解析单元,所述监控解析单元包括APP程序识别获取模块、APP解析模块、组件名提取模块、信息匹配模块及数据库;
所述APP程序识别获取模块用于读取待检测的Android APP程序包,并判断待检测的Android APP程序包的有效性;
所述APP解析模块用于对Android APP程序包进行解析并提取Androidmanifest.xml文件和classes.dex文件;
所述组件名提取模块用于从Androidmanifest.xml文件中获取注册组件列表名及从classes.dex文件中获取声明组件列表名;
所述信息匹配模块用于比较所述注册组件列表名与所述声明组件列表名,并将比较结果存入数据库中;
所述数据库用于存储识别信息及结果;
所述方法包括如下步骤:
(1)APP程序识别获取模块获取待识别的Android APP程序包;
(2)APP解析模块对待识别的Android APP程序包进行解析,并从解析文件中提取Androidmanifest.xml文件和classes.dex文件;
(3)组件名提取模块从Androidmanifest.xml文件中获取注册组件列表名及从classes.dex文件中获取声明组件列表名;
(4)信息匹配模块比较组件名提取模块提取的注册组件列表名及声明组件列表名,如注册组件列表名及声明组件列表名相同,则确认Android APP程序包没有加固,如注册组件列表名及声明组件列表名不同,则确认Android APP程序包被加固;
(5)信息匹配模块将识别信息及比较结果存入数据库中。
具体的,所述识别信息包括Android APP程序包、提取的Androidmanifest.xml文件和classes.dex文件、提取的注册组件列表名及声明组件列表名。
根据上述识别Android APP加固的方法,本发明还提出了一种APP加固检测流程,具体如下:
(1)APP程序识别获取模块获取待检测的Android APP程序包,并判定待检测的Android APP程序包是否为有效文件,如果待检测的Android APP程序包为非有效文件,则直接转入步骤(8),即结束检测并将检测结果保存到数据库;否则进行步骤(2);
(2)APP程序识别获取模块判断待检测的Android APP程序包是否加密,如已经加密,则直接进入步骤(8);否则进行步骤(3);
(3)APP解析模块对待识别的Android APP程序包进行解析,并从解析文件中提取Androidmanifest.xml文件和classes.dex文件;
(4)APP解析模块解析Androidmani fest.xml文件和classes.dex文件,并判断Androidmani fest.xml文件和classes.dex文件是否加密,如果Androidmani fest.xml 文件和classes.dex文件经过加密,则直接进入步骤(8),否则进行步骤(5);
(5)组件名提取模块从Androidmanifest.xml文件中获取注册组件列表名及从classes.dex文件中获取声明组件列表名;
(6)信息匹配模块比较组件名提取模块提取的注册组件列表名及声明组件列表名,如注册组件列表名及声明组件列表名相同,则确认Android APP程序包没有加固,如注册组件列表名及声明组件列表名不同,则确认Android APP程序包被加固;
(7)信息匹配模块确认待检测的Android APP程序包加固并生成的检测结果; (8)结束检测,信息匹配模块将识别信息及比较结果存入数据库中。
本发明所述技术方案的有益效果在于:通过静态解析APP的方式获取 APP内的Androidmanifest.xml和classes.dex文件,如果Androidmainfeast.xml文件和classes.dex文件没有加密则对其进行解析,获取其中的注册组件列表和声明组件列表进行对比判断,该种方式弥补了人工识别的所造成的误判和时间成本,在对抗代码混淆,敏感信息加密方面有显著的效果。
附图说明
图1一种识别Android APP加固的方法流程示意图;
图2一种APP加固检测流程示意图。
具体实施方式
本发明主要提供了一种识别Android APP加固的方法,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实例对本发明做进一步说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明涉及的相关技术术语的解释如下:
DEX替换加固:即加固厂商通过一定的技术手段将APP中原始classes.dex加密隐藏,用加固厂商自己的classes.dex替换APP中原始classes.dex。
解密文件:加固APP运行时将原始DEX解密时所需用到的加固厂商的解密文件。
解包:即解析APP文件,获取APP中所包含的所有文件名。
Androidmanifest.xml加固:即加固厂商通过一定的技术手段将APP中原始Androidmanifest.xml的关键字段进行修改,使其无法正常解析。
DEX加固:即加固厂商通过一定的技术手段将APP中原始classes.dex文件的关键字段进行修改,使其无法正常解析。
本发明所述技术方案是根据APP加固技术为基础而提出的一种APP加固识别方法,该识别方法总体是通过对识别APP自身加密、识别 Androidmanifest.xml加固、识别DEX本身加固及识别DEX替换等四个维度进行综合分析和比较形成的,具体技术手段如下:
如图1所示,本发明所述的一种识别Android APP加固的方法,具体如下:
实现该方法的系统为一监控解析单元,所述监控解析单元包括APP程序识别获取模块、APP解析模块、组件名提取模块、信息匹配模块及数据库;
所述APP程序识别获取模块用于读取待检测的Android APP程序包,并判断待检测的Android APP程序包的有效性;
所述APP解析模块用于对Android APP程序包进行解析并提取Androidmanifest.xml文件和classes.dex文件;
所述组件名提取模块用于从Androidmanifest.xml文件中获取注册组件列表名及从classes.dex文件中获取声明组件列表名;
所述信息匹配模块用于比较所述注册组件列表名与所述声明组件列表名,并将比较结果存入数据库中;
所述数据库用于存储识别信息及结果;
所述方法包括如下步骤:
(1)APP程序识别获取模块获取待识别的Android APP程序包;
(2)APP解析模块对待识别的Android APP程序包进行解析,并从解析文件中提取Androidmanifest.xml文件和classes.dex文件;
(3)组件名提取模块从Androidmanifest.xml文件中获取注册组件列表名及从classes.dex文件中获取声明组件列表名;
(4)信息匹配模块比较组件名提取模块提取的注册组件列表名及声明组件列表名,如注册组件列表名及声明组件列表名相同,则确认Android APP程序包没有加固,如注册组件列表名及声明组件列表名不同,则确认Android APP程序包被加固;
(5)信息匹配模块将识别信息及比较结果存入数据库中。
具体的,所述识别信息包括Android APP程序包、提取的 Androidmanifest.xml文件和classes.dex文件、提取的注册组件列表名及声明组件列表名。
如图2所示,根据上述识别Android APP加固的方法,本发明还提出了一种APP加固检测流程,具体如下:
(1)APP程序识别获取模块获取待检测的Android APP程序包,并判定待检测的Android APP程序包是否为有效文件,如果待检测的Android APP程序包为非有效文件,则直接转入步骤(8),即结束检测并将检测结果保存到数据库;否则进行步骤(2);
(2)APP程序识别获取模块判断待检测的Android APP程序包是否加密,如已经加密,则直接进入步骤(8);否则进行步骤(3);
(3)APP解析模块对待识别的Android APP程序包进行解析,并从解析文件中提取Androidmanifest.xml文件和classes.dex文件;
(4)APP解析模块解析Androidmani fest.xml文件和classes.dex文件,并判断Androidmani fest.xml文件和classes.dex文件是否加密,如果Androidmani fest.xml 文件和classes.dex文件经过加密,则直接进入步骤(8),否则进行步骤(5);
(5)组件名提取模块从Androidmanifest.xml文件中获取注册组件列表名及从classes.dex文件中获取声明组件列表名;
(6)信息匹配模块比较组件名提取模块提取的注册组件列表名及声明组件列表名,如注册组件列表名及声明组件列表名相同,则确认Android APP程序包没有加固,如注册组件列表名及声明组件列表名不同,则确认Android APP程序包被加固;
(7)信息匹配模块确认待检测的Android APP程序包加固并生成的检测结果;
(8)结束检测,信息匹配模块将识别信息及比较结果存入数据库中。
另外,尽管已经说明性地对本发明的优选实施例仅了描述,但是对于本领域的技术人员而言,在不偏离所附权利要求的范围和宗旨的前提下,可以有各种修改、改进和替换。

Claims (3)

1.一种识别Android APP加固的方法,其特征在于:
实现该方法的系统为一监控解析单元,所述监控解析单元包括APP程序识别获取模块、APP解析模块、组件名提取模块、信息匹配模块及数据库;
所述APP程序识别获取模块用于读取待检测的Android APP程序包,并判断待检测的Android APP程序包的有效性;
所述APP解析模块用于对Android APP程序包进行解析并提取Androidmanifest.xml文件和classes.dex文件;
所述组件名提取模块用于从Androidmanifest.xml文件中获取注册组件列表名及从classes.dex文件中获取声明组件列表名;
所述信息匹配模块用于比较所述注册组件列表名与所述声明组件列表名,并将比较结果存入数据库中;
所述数据库用于存储识别信息及结果;
所述方法包括如下步骤:
(1)APP程序识别获取模块获取待识别的Android APP程序包;
(2)APP解析模块对待识别的Android APP程序包进行解析,并从解析文件中提取Androidmanifest.xml文件和classes.dex文件;
(3)组件名提取模块从Androidmanifest.xml文件中获取注册组件列表名及从classes.dex文件中获取声明组件列表名;
(4)信息匹配模块比较组件名提取模块提取的注册组件列表名及声明组件列表名,如注册组件列表名及声明组件列表名相同,则确认Android APP程序包没有加固,如注册组件列表名及声明组件列表名不同,则确认Android APP程序包被加固;
(5)信息匹配模块将识别信息及比较结果存入数据库中。
2.如权利要求1所述的一种识别Android APP加固的方法,其特征在于:所述识别信息包括Android APP程序包、提取的Androidmanifest.xml文件和classes.dex文件、提取的注册组件列表名及声明组件列表名。
3.一种识别Android APP加固的检测方法,具体如下:
(1)APP程序识别获取模块获取待检测的Android APP程序包,并判定待检测的AndroidAPP程序包是否为有效文件,如果待检测的Android APP程序包为非有效文件,则直接转入步骤(8),即结束检测并将检测结果保存到数据库;否则进行步骤(2);
(2)APP程序识别获取模块判断待检测的Android APP程序包是否加密,如已经加密,则直接进入步骤(8);否则进行步骤(3);
(3)APP解析模块对待识别的Android APP程序包进行解析,并从解析文件中提取Androidmanifest.xml文件和classes.dex文件;
(4)APP解析模块解析Androidmani fest.xml文件和classes.dex文件,并判断Androidmani fest.xml文件和classes.dex文件是否加密,如果Androidmani fest.xml文件和classes.dex文件经过加密,则直接进入步骤(8),否则进行步骤(5);
(5)组件名提取模块从Androidmanifest.xml文件中获取注册组件列表名及从classes.dex文件中获取声明组件列表名;
(6)信息匹配模块比较组件名提取模块提取的注册组件列表名及声明组件列表名,如注册组件列表名及声明组件列表名相同,则确认Android APP程序包没有加固,如注册组件列表名及声明组件列表名不同,则确认Android APP程序包被加固;
(7)信息匹配模块确认待检测的Android APP程序包加固并生成的检测结果;
(8)结束检测,信息匹配模块将识别信息及比较结果存入数据库中。
CN201510522321.2A 2015-09-21 2015-09-21 一种识别Android APP加固的方法及检测方法 Active CN105205358B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510522321.2A CN105205358B (zh) 2015-09-21 2015-09-21 一种识别Android APP加固的方法及检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510522321.2A CN105205358B (zh) 2015-09-21 2015-09-21 一种识别Android APP加固的方法及检测方法

Publications (2)

Publication Number Publication Date
CN105205358A CN105205358A (zh) 2015-12-30
CN105205358B true CN105205358B (zh) 2018-01-05

Family

ID=54953034

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510522321.2A Active CN105205358B (zh) 2015-09-21 2015-09-21 一种识别Android APP加固的方法及检测方法

Country Status (1)

Country Link
CN (1) CN105205358B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105718764A (zh) * 2016-01-19 2016-06-29 北京鼎源科技有限公司 一种基于Android系统陷阱指令的软件加固方法
CN105897923B (zh) * 2016-05-31 2019-04-30 中国科学院信息工程研究所 一种app安装包网络流量识别方法
CN106845171B (zh) * 2017-01-20 2020-01-17 暨南大学 一种Android应用程序代码保护机制鉴别方法
CN106934260B (zh) * 2017-03-14 2020-03-17 北京深思数盾科技股份有限公司 代码保护方法、装置、服务器及存储介质
CN107301074A (zh) * 2017-06-26 2017-10-27 中广热点云科技有限公司 在服务器上自动打包apk安装包的方法及系统
CN107871080A (zh) * 2017-12-04 2018-04-03 杭州安恒信息技术有限公司 大数据混合式Android恶意代码检测方法及装置
CN108196900B (zh) * 2017-12-08 2021-11-09 五八有限公司 组件的注册方法及装置
CN108710800A (zh) * 2018-05-22 2018-10-26 国家计算机网络与信息安全管理中心 一种安卓应用程序的加壳识别方法
CN109409038A (zh) * 2018-09-30 2019-03-01 北京梆梆安全科技有限公司 一种动态链接库文件的破解风险检测方法及装置
CN109522719A (zh) * 2018-11-29 2019-03-26 北京梆梆安全科技有限公司 应用安装包的加固检测方法、装置及移动终端
CN109784057A (zh) * 2019-01-04 2019-05-21 国家计算机网络与信息安全管理中心 安卓应用加固识别方法、控制器及介质
CN109753412A (zh) * 2019-01-25 2019-05-14 Oppo广东移动通信有限公司 异常处理方法、装置、移动终端以及存储介质
CN111191197A (zh) * 2019-12-31 2020-05-22 北京指掌易科技有限公司 保护移动端应用和移动端应用的运行方法和装置
CN116611067A (zh) * 2023-07-19 2023-08-18 中国电信股份有限公司江西分公司 一种基于IPv6的app检测和加固方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102779257A (zh) * 2012-06-28 2012-11-14 奇智软件(北京)有限公司 一种Android应用程序的安全检测方法及系统
US8387141B1 (en) * 2011-09-27 2013-02-26 Green Head LLC Smartphone security system
CN104636665A (zh) * 2015-02-03 2015-05-20 南京理工大学 一种Android应用程序的描述和匹配方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009108245A2 (en) * 2007-12-21 2009-09-03 University Of Virginia Patent Foundation System, method and computer program product for protecting software via continuous anti-t ampering and obfuscation transforms

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8387141B1 (en) * 2011-09-27 2013-02-26 Green Head LLC Smartphone security system
CN102779257A (zh) * 2012-06-28 2012-11-14 奇智软件(北京)有限公司 一种Android应用程序的安全检测方法及系统
CN104636665A (zh) * 2015-02-03 2015-05-20 南京理工大学 一种Android应用程序的描述和匹配方法

Also Published As

Publication number Publication date
CN105205358A (zh) 2015-12-30

Similar Documents

Publication Publication Date Title
CN105205358B (zh) 一种识别Android APP加固的方法及检测方法
Ma et al. Cdrep: Automatic repair of cryptographic misuses in android applications
Carmony et al. Extract Me If You Can: Abusing PDF Parsers in Malware Detectors.
CN103699844B (zh) 安全保护系统及方法
KR101402057B1 (ko) 위험도 계산을 통한 리패키지 애플리케이션의 분석시스템 및 분석방법
CN104077531B (zh) 基于开放漏洞评估语言的系统漏洞评估方法、装置和系统
CN104951675B (zh) 一种识别盗版应用的方法及系统
KR20180080449A (ko) 보안 이벤트의 연관 분석을 통한 사이버 침해 위협 탐지 방법 및 장치
WO2008030659A2 (en) Component authentication for computer systems
CN104182687A (zh) 移动终端输入窗口的安全检测方法和安全检测装置
DK2767922T3 (en) Password Verification System
CN108920960A (zh) 一种app安全验证方法及系统
CN106709286A (zh) 一种对apk资源包进行安全加固的方法
CN105354494A (zh) 网页数据篡改的检测方法及装置
CN109829304A (zh) 一种病毒检测方法及装置
CN109408810A (zh) 一种恶意pdf文档检测方法及装置
CN106874758A (zh) 一种识别文档代码的方法和装置
CN107392033B (zh) 一种安卓设备渗透测试系统及其自动化渗透测试方法
CN103116543B (zh) 白黑盒结合的Web应用安全检测方法
CN102799824B (zh) 一种针对具有数字签名信息的病毒文件的防御方法及系统
CN104253809A (zh) 一种检测网络中内容的方法和系统
CN103530555B (zh) 防止程序执行恶意操作的方法和装置
CN106936834B (zh) 一种对iec61850数字变电站smv报文的入侵检测的方法
CN109299610A (zh) 安卓系统中不安全敏感输入验证识别方法
CN115643045A (zh) 一种触发式爬虫搜检预警系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant