CN105205358B - 一种识别Android APP加固的方法及检测方法 - Google Patents
一种识别Android APP加固的方法及检测方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000001514 detection method Methods 0.000 title claims description 9
- 238000012360 testing method Methods 0.000 claims abstract description 10
- 238000000605 extraction Methods 0.000 claims description 30
- 230000000712 assembly Effects 0.000 claims description 28
- 238000000429 assembly Methods 0.000 claims description 28
- 230000000052 comparative effect Effects 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 6
- 235000013399 edible fruits Nutrition 0.000 claims 1
- 230000003014 reinforcing effect Effects 0.000 abstract description 9
- 238000004458 analytical method Methods 0.000 abstract description 4
- 230000000694 effects Effects 0.000 abstract description 3
- 230000003068 static effect Effects 0.000 abstract description 2
- 238000009434 installation Methods 0.000 description 7
- 241000700605 Viruses Species 0.000 description 2
- 230000002155 anti-virotic effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000011900 installation process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting 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移动终端设备的普及,应用于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)结束检测,信息匹配模块将识别信息及比较结果存入数据库中。
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)
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)
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)
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 |
-
2015
- 2015-09-21 CN CN201510522321.2A patent/CN105205358B/zh active Active
Patent Citations (3)
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 |