CN106709290A - 一种应用安全性分析方法及装置 - Google Patents

一种应用安全性分析方法及装置 Download PDF

Info

Publication number
CN106709290A
CN106709290A CN201611173729.4A CN201611173729A CN106709290A CN 106709290 A CN106709290 A CN 106709290A CN 201611173729 A CN201611173729 A CN 201611173729A CN 106709290 A CN106709290 A CN 106709290A
Authority
CN
China
Prior art keywords
functional module
analysis
module
preset function
application
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.)
Pending
Application number
CN201611173729.4A
Other languages
English (en)
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.)
Jiangsu Payegis Technology Co Ltd
Original Assignee
Jiangsu Payegis Technology 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 Jiangsu Payegis Technology Co Ltd filed Critical Jiangsu Payegis Technology Co Ltd
Priority to CN201611173729.4A priority Critical patent/CN106709290A/zh
Publication of CN106709290A publication Critical patent/CN106709290A/zh
Pending legal-status Critical Current

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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种应用安全性分析方法及装置,涉及软件安全领域,该方法包括:对应用的安装包文件进行反编译;当根据反编译结果确定安装包文件中包含与预设功能相匹配的功能模块时,提取与预设功能相匹配的功能模块;对提取的功能模块进行静态分析,得到提取的功能模块对应的静态分析结果;以及,对提取的功能模块进行动态分析,得到提取的功能模块对应的动态分析结果;根据静态分析结果以及动态分析结果确定应用是否安全。由此可见,本发明实现了对应用进行有针对性且高效的安全性分析的目的。

Description

一种应用安全性分析方法及装置
技术领域
本发明涉及软件安全领域,具体涉及一种应用安全性分析及装置。
背景技术
随着智能手机的普及,移动应用也呈现出爆炸式地发展,随之而来的便是移动应用的安全问题越来越受到大众的关注,尤其是涉及到用户个人信息以及私人财产的安全问题。
因为安卓平台的开放性和安卓应用获取渠道的广泛性,使得安卓平台的智能手机所受到的安全威胁尤为严重,于是针对应用的安全性分析就变得尤为重要。
发明人在实现本发明的过程中发现,现有技术中的方式至少存在下述问题:现有技术一般是对应用的全部代码进行安全性分析,分析方法一般有静态分析、动态分析和人工分析等,这样的分析方法工作量巨大、针对性不强、效率较低。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的应用安全性分析方法和相应的装置。
根据本发明的一个方面,提供了一种应用安全性分析方法,包括:对应用的安装包文件进行反编译;当根据反编译结果确定安装包文件中包含与预设功能相匹配的功能模块时,提取与预设功能相匹配的功能模块;对提取的功能模块进行静态分析,得到提取的功能模块对应的静态分析结果;以及,对提取的功能模块进行动态分析,得到提取的功能模块对应的动态分析结果;根据静态分析结果以及动态分析结果确定应用是否安全。
根据本发明的另一方面,提供了一种应用安全性分析装置,包括:反编译模块,用于对应用的安装包文件进行反编译;提取模块,用于当根据反编译结果确定安装包文件中包含与预设功能相匹配的功能模块时,提取与预设功能相匹配的功能模块;分析模块,用于对提取的功能模块进行静态分析,得到提取的功能模块对应的静态分析结果;以及,对提取的功能模块进行动态分析,得到提取的功能模块对应的动态分析结果;确定模块,用于根据静态分析结果以及动态分析结果确定应用是否安全。
根据本发明的应用安全性分析方法及装置通过提取应用中特定的功能模块,并对提取出的功能模块进行针对性的分析,由此解决了现有技术中工作量巨大、针对性不强、效率较低的问题,取得了对应用进行有针对性的高效的安全性分析的有益效果。并且,通过针对性地分析用户登录、支付等密切关系到用户隐私和财产的功能模块,从而确保这些功能模块的安全性,更好地保护用户的隐私和财产。与此同时,通过该方法对应用进行筛选,可以有效防止恶意应用流入市场,避免用户遭受损失。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明实施例一提供的一种应用安全性分析方法的流程图;
图2是本发明实施例二提供的一种应用安全性分析方法的流程图;
图3是本发明实施例三提供的一种应用安全性分析装置的结构示意图;
图4是本发明实施例四提供的一种应用安全性分析装置的结构示意图;
图5是本发明提供的应用安全性分析方法中采用机器学习算法提取功能模块的工作流程图;
图6是本发明提供的应用安全性分析方法中API序列表的一个样例;
图7是本发明提供的应用安全性分析方法中静态分析方法的工作流程图;
图8是本发明提供的应用安全性分析方法中动态分析方法的工作流程图;
图9是本发明提供的采用机器学习算法提取功能模块时应用安全性分析方法的总体流程图;
图10是本发明提供的不采用机器学习算法提取功能模块时应用安全性分析方法的总体流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
图1示出了本发明实施例一提供的一种应用安全性分析方法,该方法包括:
步骤S110:对应用的安装包文件进行反编译。
因为本发明实施例需要对应用的功能模块进行安全性分析,而应用的安装包文件是通过代码编译生成的,无法通过安装包文件直接获取功能模块的代码,所以,在进行安全性分析之前需要先将安装包文件进行反编译,以便获得该应用的安装包文件在编译前的代码,从而从该代码中提取出需要进行安全性分析的功能模块代码。
步骤S120:当根据反编译结果确定安装包文件中包含与预设功能相匹配的功能模块时,提取与预设功能相匹配的功能模块。
为了提高分析效率并且使得分析过程和结果更具有针对性,本发明实施例仅针对应用的特定功能模块进行分析,而该特定功能模块由本领域技术人员预先设定,该预设功能包括但不限于:支付功能、登录功能、以及密码输入功能。上述功能都是与用户的隐私和财产密切相关的功能,有极大的必要进行安全性分析。
步骤S130:对提取的功能模块进行安全性分析。
在本发明实施例中,为了保证安全性分析的全面性和可靠性,本方法主要通过静态分析方法与动态分析方法相结合的方式对提取到的功能模块进行安全性分析。在对提取的功能模块进行静态分析后,得到该功能模块对应的静态分析结果;同时,对提取的功能模块进行动态分析,并得到该功能模块对应的动态分析结果。其中,静态分析方法是指在不运行代码的方式下,通过词法分析、语法分析、控制流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术;动态分析方法则是指在真实或者虚拟处理器中运行程序的条件下,进行计算机软件分析的方法,该方法是在程序运行时找到程序的安全错误,而不是反复地离线审查代码。
步骤S140:根据步骤S130的分析结果确定应用是否安全。
在本发明实施例中,最后综合考虑静态分析结果和动态分析结果,从而确定该应用是否安全。
综上所述,本发明实施例提供的应用安全性分析方法通过提取应用中特定的功能模块,并对提取出的功能模块进行针对性的分析,由此解决了现有技术中工作量巨大、针对性不强、效率较低的问题,取得了对应用进行有针对性的高效的安全性分析的有益效果。并且,通过针对性地分析用户登录、支付等密切关系到用户隐私和财产的功能模块,从而确保这些功能模块的安全性,更好地保护用户的隐私和财产。与此同时,通过该方法对应用进行筛选,可以有效防止恶意应用流入市场,避免用户遭受损失。
实施例二
图2示出了本发明实施例二提供的一种应用安全性分析方法,该方法可以适用于移动应用(例如安卓应用或IOS应用等)或非移动应用(例如windows桌面应用等)等各种类型的应用,本发明对具体的应用类型不做限定。该方法包括:
步骤S210:对应用的安装包文件进行反编译。
因为本发明实施例需要对应用的功能模块进行安全性分析,而应用的安装包文件是通过代码编译生成的,无法通过安装包文件直接获取功能模块的代码,所以,在进行安全性分析之前需要先将安装包文件进行反编译,以便获得该应用的安装包文件在编译前的代码,从而从该代码中提取出需要进行安全性分析的功能模块代码。
但是,市面上的应用安装包一般有两种,一种是被安全厂商加固过的,另一种是没有被加固的。未被加固的应用安装包可以直接进行反编译操作,被加固过的应用安装包则不能直接进行反编译。所以,需要先判断应用的安装包文件是否加固过,当判断结果为是时,先采用自动脱壳机对该安装包文件进行脱壳处理,然后再对脱壳处理后的安装包文件进行反编译;当判断结果为否时,则采用反编译工具直接将安装包文件进行反编译,从而保证了绝大部分应用的安装包文件都能被进行功能提取与安全性分析。
步骤S220:当根据反编译结果确定安装包文件中包含与预设功能相匹配的功能模块时,提取与预设功能相匹配的功能模块。
为了提高分析效率并且使得分析过程和结果更具有针对性,本发明实施例仅针对应用的特定功能模块进行分析,而该特定功能模块由本领域技术人员预先设定,该预设功能包括但不限于:支付功能、登录功能、以及密码输入功能。上述功能都是与用户的隐私和财产密切相关的功能,有极大的必要进行安全性分析。
在本发明实施例中,通过机器学习算法确定并提取与预设功能相匹配的功能模块,这样可以比较准确且快速地找出包含预设功能的应用安装包文件并从中提取出相匹配的功能模块。为了方便理解,图5示出了以应用安装包为安卓应用APK为例,通过机器学习算法确定并提取与预设功能相匹配的功能模块的工作流程图。机器学习的流程是首先通过对训练样本的学习和分析,提取出各个样本的特征值,进而通过提取到的特征值进行模型训练,最后建立分类模块。在完成机器学习后,当对一个APK进行功能模块提取时,首先需要提取该APK的特征值,进而将提取到的特征值提供给上述分类模块,从而确定APK中所包含的与预设功能相匹配的功能模块,最后生成预测结果并输出指定功能的相关代码。
在其他实施例中,也可以不通过机器学习算法,而是根据预设的关键字匹配规则和/或模式匹配规则确定并提取与预设功能相匹配的功能模块;还可以采用其他能够达到确定并提取特定功能模块这一目的的方法。本发明对此不作具体限定,本领域技术人员可以根据实际情况灵活设定。
步骤S230:根据功能模块包含的系统API序列确定需要进行安全性分析的功能模块。
步骤S230是一个可选步骤,因为在步骤S220中采用机器学习算法或根据预设的关键字匹配规则和/或模式匹配规则提取功能模块的过程中,会出现不是指定的功能模块却被提取出来的情况。为了避免对这些功能模块进行毫无意义的安全性分析,本发明实施例通过对提取出的功能模块的系统API进行分析,从而过滤掉不符合预设功能的功能模块。
具体地,首先通过静态分析技术确定提取出的功能模块中包含的系统API序列,具体地,通过分析方法之间的调用关系,来获取功能模块中所有可能的运行路径,在从这些路径中提取系统API序列;然后查询预设的API序列表,如果该功能模块中包含的系统API序列未包含在API序列表中,说明该功能模块并非预设功能对应的模块,则丢弃该功能模块。其中,预设的API序列表是一个映射表,用于存储API序列与功能模块的对应关系。在表格中,API序列与功能模块是一对多的关系,即存在一个API序列对应多个功能模块的情况。图6就是该API序列表的一个样例。
在步骤S230的分析过程中,首先查询提取到的API序列是否在该映射表中,若该API序列存在于该映射表中,则查询在表格中该API序列对应的功能模块,并将查询结果与提取到的包含该API序列的功能模块进行比较,若该功能模块在查询结果范围内,则说明提取到的功能模块无误,继续用于后续的安全性分析步骤;反之,则过滤该功能模块,避免不必要的多余分析工作量。
步骤S240:对步骤S230确定的功能模块进行安全性分析。
本发明实施例为了保证安全性分析的全面性和可靠性,本方法主要通过静态分析方法与动态分析方法相结合的方式对提取到的功能模块进行安全性分析。
静态分析主要是在不运行代码的方式下,验证代码是否满足规范性、安全性、可靠性、可维护性等指标。图7是静态分析方法的工作流程图,在静态分析过程中,首先对提取出的功能模块进行AST(即抽象语法树)的构建,然后采用污点分析的技术对该功能模块的安全性进行分析,最后生成静态分析报告。
动态分析则是指在真实或者虚拟处理器中运行程序的条件下,找到程序的安全错误,而不是反复地离线审查代码。动态分析常用的方法有插桩分析方式、插入挂钩方式以及动态污点分析方式。图8是以安卓应用APK为例的动态分析方法的工作流程图,在动态分析过程中,首先对相应的APK进行插桩操作,用于识别指定的功能模块,然后使用预先制定的沙箱对指定的功能模块进行安全性分析,沙箱中会采用动态污点分析技术和Hook(即插入挂钩)技术等进行多方面的检测,最后生成动态分析报告。
步骤S250:根据步骤S240的分析结果确定应用是否安全。
在本发明实施例中,最后综合考虑静态分析结果和动态分析结果,从而确定该应用是否安全。
为了方便进一步理解本发明实施例提供的安全性分析方法,图9示出了采用机器学习算法提取功能模块时本安全性分析方法的总体工作流程,图10示出了不采用机器学习算法提取功能模块时本安全性分析方法的总体工作流程。在上述两幅流程图中,各个步骤的工作流程与上述方法实施例的描述一致,在此不再赘述。
综上所述,本发明实施例提供的应用安全性分析方法通过提取应用中特定的功能模块,并对提取出的功能模块进行针对性的分析,由此解决了现有技术中工作量巨大、针对性不强、效率较低的问题,取得了对应用进行有针对性的高效的安全性分析的有益效果。并且,通过针对性地分析用户登录、支付等密切关系到用户隐私和财产的功能模块,从而确保这些功能模块的安全性,更好地保护用户的隐私和财产。与此同时,通过该方法对应用进行筛选,可以有效防止恶意应用流入市场,避免用户遭受损失。
实施例三
图3示出了本发明实施例三提供的一种应用安全性分析装置,该装置包括:反编译模块310、提取模块320、分析模块330和确定模块340。
反编译模块310,用于对应用的安装包文件进行反编译。
因为本发明实施例需要对应用的功能模块进行安全性分析,而应用的安装包文件是通过代码编译生成的,无法通过安装包文件直接获取功能模块的代码,所以,在进行安全性分析之前,反编译模块310需要先将安装包文件进行反编译,以便获得该应用的安装包文件在编译前的代码,从而从该代码中提取出需要进行安全性分析的功能模块代码。
提取模块320,用于当根据反编译结果确定安装包文件中包含与预设功能相匹配的功能模块时,提取与预设功能相匹配的功能模块。
为了提高分析效率并且使得分析过程和结果更具有针对性,本发明实施例仅针对应用的特定功能模块进行分析,因此,提取模块320需要从反编译结果中提取出特定功能模块,而这些特定功能由本领域技术人员预先设定,该预设功能包括但不限于:支付功能、登录功能、以及密码输入功能。上述功能都是与用户的隐私和财产密切相关的功能,有极大的必要进行安全性分析。
分析模块330,用于对提取的功能模块进行安全性分析。
在本发明实施例中,为了保证安全性分析的全面性和可靠性,分析模块330主要通过静态分析方法与动态分析方法相结合的方式对提取到的功能模块进行安全性分析。具体地,对提取的功能模块进行静态分析,得到该功能模块对应的静态分析结果;同时,对提取的功能模块进行动态分析,并得到该功能模块对应的动态分析结果。其中,静态分析方法是指是指在不运行代码的方式下,通过词法分析、语法分析、控制流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术;动态分析方法则是指在真实或者虚拟处理器中运行程序的条件下,进行计算机软件分析的方法,该方法是在程序运行时找到程序的安全错误,而不是反复地离线审查代码。
确定模块340,用于根据分析结果确定应用是否安全。
在本发明实施例中,确定模块340需要综合考虑静态分析结果和动态分析结果,从而确定该应用是否安全。
上述各个模块的具体工作原理可参照方法实施例中相应步骤的描述,此处不再赘述。
综上所述,本发明实施例提供的应用安全性分析装置通过提取应用中特定的功能模块,并对提取出的功能模块进行针对性的分析,由此解决了现有技术中工作量巨大、针对性不强、效率较低的问题,取得了对应用进行有针对性的高效的安全性分析的有益效果。并且,通过针对性地分析用户登录、支付等密切关系到用户隐私和财产的功能模块,从而确保这些功能模块的安全性,更好地保护用户的隐私和财产。与此同时,通过该方法对应用进行筛选,可以有效防止恶意应用流入市场,避免用户遭受损失。
实施例四
图4示出了本发明实施例四提供的一种应用安全性分析装置,该装置可以适用于移动应用(例如安卓应用或IOS应用等)或非移动应用(例如windows桌面应用等),该装置包括:反编译模块410、提取模块420、API序列模块430、分析模块440和确定模块450,其中,分析模块440进一步包括:静态分析子模块441和动态分析子模块442。
反编译模块410,用于对应用的安装包文件进行反编译。
因为市面上的应用安装包一般有两种,一种是被安全厂商加固过的,另一种是没有被加固的。未被加固的应用安装包可以直接进行反编译操作,被加固过的应用安装包则不能直接进行反编译。所以,反编译模块410需要先判断应用的安装包文件是否加固过,当判断结果为是时,先采用自动脱壳机对该安装包文件进行脱壳处理,然后再对脱壳处理后的安装包文件进行反编译;当判断结果为否时,则采用反编译工具直接将安装包文件进行反编译,从而保证了绝大部分应用的安装包文件都能被进行功能提取与安全性分析。
提取模块420,用于当根据反编译结果确定安装包文件中包含与预设功能相匹配的功能模块时,提取与预设功能相匹配的功能模块。
为了提高分析效率并且使得分析过程和结果更具有针对性,本发明实施例仅针对应用的特定功能模块进行分析,因此,提取模块420需要从反编译模块410生成的结果中提取特定功能对应的功能模块,而这些特定功能由本领域技术人员预先设定,该预设功能包括但不限于:支付功能、登录功能、以及密码输入功能。上述功能都是与用户的隐私和财产密切相关的功能,有极大的必要进行安全性分析。
在本发明实施例中,提取模块420通过机器学习算法确定并提取与预设功能相匹配的功能模块,这样可以比较准确且快速地找出包含预设功能的应用安装包文件并从中提取出相匹配的功能模块。
在其他实施例中,提取模块420也可以不通过机器学习算法,而是根据预设的关键字匹配规则和/或模式匹配规则确定并提取与预设功能相匹配的功能模块;还可以采用其他能够达到确定并提取特定功能模块这一目的的方法。本发明对此不作具体限定,本领域技术人员可以根据实际情况灵活设定。
可选的,该装置进一步包括API序列模块430,用于根据功能模块包含的系统API序列确定需要进行安全性分析的功能模块。
因为当提取模块420通过机器学习算法或根据预设的关键字匹配规则和/或模式匹配规则提取功能模块时,会出现不是指定的功能模块却被提取出来的情况。为了避免对这些功能模块进行毫无意义的安全性分析,API序列模块430通过对提取出的功能模块的系统API进行分析,从而过滤掉不符合预设功能的功能模块。具体地,API序列模块430首先确定提取出的功能模块中包含的系统API序列,具体地,通过分析方法之间的调用关系,来获取功能模块中所有可能的运行路径,在从这些路径中提取系统API序列;然后查询预设的API序列表,如果该功能模块中包含的系统API序列未包含在API序列表中,说明该功能模块并非预设功能对应的模块,则丢弃该功能模块。其中,预设的API序列表是一个映射表,用于存储API序列与功能模块的对应关系。在表格中,API序列与功能模块是一对多的关系,即存在一个API序列对应多个功能模块的情况。图6就是该API序列表的一个样例。
分析模块440,用于对API序列模块430确定的功能模块进行安全性分析。
本发明实施例为了保证安全性分析的全面性和可靠性,本装置通过静态分析方法与动态分析方法相结合的方式对提取到的功能模块进行安全性分析,因此,分析模块440进一步包括:静态分析子模块441和动态分析子模块442。
其中,静态分析子模块441,主要是在不运行代码的方式下,验证代码是否满足规范性、安全性、可靠性、可维护性等指标。该模块对提取的功能模块进行静态分析,进而生成与提取的功能模块对应的静态分析结果。动态分析子模块442,则是指在真实或者虚拟处理器中运行程序的条件下,找到程序的安全错误,而不是反复地离线审查代码。动态分析常用的方法有插桩分析方式、插入挂钩方式以及动态污点分析方式。该模块对提取的功能模块进行动态分析,从而生成与提取的功能模块对应的动态分析结果。静态分析子模块441和动态分析子模块442的具体工作流程与上述方法示例中的相应步骤的描述一致,在此不再赘述。
确定模块450,用于根据分析模块440的分析结果确定应用是否安全。
在本发明实施例中,确定模块450最后将综合考虑分析模块440生成的静态分析结果和动态分析结果,从而确定该应用是否安全。
上述各个模块的具体工作原理可参照方法实施例中相应步骤的描述,此处不再赘述。
综上所述,本发明实施例提供的安全性分析装置通过提取应用中特定的功能模块,并对提取出的功能模块进行针对性的分析,由此解决了现有技术中工作量巨大、针对性不强、效率较低的问题,取得了对应用进行有针对性的高效的安全性分析的有益效果。并且,通过针对性地分析用户登录、支付等密切关系到用户隐私和财产的功能模块,从而确保这些功能模块的安全性,更好地保护用户的隐私和财产。与此同时,通过该方法对应用进行筛选,可以有效防止恶意应用流入市场,避免用户遭受损失。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应该被理解和认定为覆盖了所有这些其他变型或修改。
本领域技术人员应当理解,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。此外,本发明也不针对任何特定编程语言,应当明白,可以利用各种编程语言实现本发明描述的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
需要注意的是,尽管在上面的说明中详细描述了应用安全性分析装置的若干模块,但是这种划分仅仅是示例性的,并非是强制性的。本领域的技术人员可以理解,实际上,可以对实施例中的模块进行自适应性地改变,将实施例中的多个模块组合成一个模块,也可将一个模块划分成多个模块。
此外,尽管在附图中以特定顺序描述了本发明实施操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。可以省略某些步骤,将多个步骤合并为一个步骤执行,或者将一个步骤分成多个步骤执行。
综上所述,应用本发明所述的应用安全性分析方法及装置,通过提取应用中特定的功能模块,并对提取出的功能模块进行针对性的分析,由此解决了现有技术中工作量巨大、针对性不强、效率较低的问题,取得了对应用进行有针对性的高效的安全性分析的有益效果。并且,通过针对性地分析用户登录、支付等密切关系到用户隐私和财产的功能模块,从而确保这些功能模块的安全性,更好地保护用户的隐私和财产。与此同时,通过该方法对应用进行筛选,可以有效防止恶意应用流入市场,避免用户遭受损失。
以上对本发明的方法和具体实施方法进行了详细的介绍,并给出了相应的实施例。当然,除上述实施例外,本发明还可以有其它实施方式,凡采用等同替换或等效变换形成的技术方案,均落在本发明所要保护的范围之内。
本发明公开了:A1、一种应用安全性分析方法,其中,包括:
对应用的安装包文件进行反编译;
当根据反编译结果确定所述安装包文件中包含与预设功能相匹配的功能模块时,提取所述与预设功能相匹配的功能模块;
对提取的功能模块进行静态分析,得到所述提取的功能模块对应的静态分析结果;以及,对所述提取的功能模块进行动态分析,得到所述提取的功能模块对应的动态分析结果;
根据所述静态分析结果以及所述动态分析结果确定所述应用是否安全。
A2、根据A1所述的方法,其中,所述当根据反编译结果确定所述安装包文件中包含与预设功能相匹配的功能模块时,提取所述与预设功能相匹配的功能模块的步骤具体包括:通过机器学习算法确定并提取所述与预设功能相匹配的功能模块。
A3、根据A1所述的方法,其中,所述当根据反编译结果确定所述安装包文件中包含与预设功能相匹配的功能模块时,提取所述与预设功能相匹配的功能模块的步骤具体包括:根据预设的关键字匹配规则和/或模式匹配规则确定并提取所述与预设功能相匹配的功能模块。
A4、根据A2或A3所述的方法,其中,所述确定并提取所述与预设功能相匹配的功能模块的步骤之后,进一步包括:
确定提取出的功能模块中包含的系统API序列;
查询预设的API序列表,若所述功能模块中包含的系统API序列未包含在所述API序列表中,则丢弃该功能模块;
其中,所述API序列表中存储了与所述预设功能相对应的系统API序列。
A5、根据A1-A4任一所述的方法,其中,所述对提取的功能模块进行静态分析的步骤具体包括:
构建与提取的功能模块对应的抽象语法树,根据所述抽象语法树执行静态污点分析。
A6、根据A1-A5任一所述的方法,其中,所述对提取的功能模块进行动态分析具体包括以下方式中的至少一种:插桩分析方式、插入挂钩方式以及动态污点分析方式。
A7、根据A1-A6任一所述的方法,其中,所述对应用的安装包文件进行反编译的步骤具体包括:
判断所述应用的安装包文件是否加固,当判断结果为是时,对所述安装包文件进行脱壳处理,并对脱壳处理后的安装包文件进行反编译。
A8、根据A1-A7任一所述的方法,其中,所述预设功能包括以下中的至少一个:支付功能、登录功能、以及密码输入功能。
A9、根据A1-A8任一所述的方法,其中,所述应用包括:移动应用,或非移动应用。
本发明还公开了:B10、一种应用安全性分析装置,其中,包括:
反编译模块,用于对应用的安装包文件进行反编译;
提取模块,用于当根据反编译结果确定所述安装包文件中包含与预设功能相匹配的功能模块时,提取所述与预设功能相匹配的功能模块;
分析模块,用于对提取的功能模块进行静态分析,得到所述提取的功能模块对应的静态分析结果;以及,对所述提取的功能模块进行动态分析,得到所述提取的功能模块对应的动态分析结果;
确定模块,用于根据所述静态分析结果以及所述动态分析结果确定所述应用是否安全。
B11、根据B10所述的装置,其中,所述提取模块具体用于:通过机器学习算法确定并提取所述与预设功能相匹配的功能模块。
B12、根据B10所述的装置,其中,所述提取模块具体用于:根据预设的关键字匹配规则和/或模式匹配规则确定并提取所述与预设功能相匹配的功能模块。
B13、根据B11或B12所述的装置,其中,所述装置进一步包括:
API序列模块,用于确定提取出的功能模块中包含的系统API序列;查询预设的API序列表,若所述功能模块中包含的系统API序列未包含在所述API序列表中,则丢弃该功能模块;
其中,所述API序列表中存储了与所述预设功能相对应的系统API序列。
B14、根据B10-B13任一所述的装置,其中,所述分析模块进一步包括:静态分析子模块,具体用于构建与提取的功能模块对应的抽象语法树,根据所述抽象语法树执行静态污点分析。
B15、根据B10-B14任一所述的装置,其中,所述分析模块进一步包括:动态分析子模块,具体采用以下方式中的至少一种方式进行动态分析:插桩分析方式、插入挂钩方式以及动态污点分析方式。
B16、根据B10-B15任一所述的装置,其中,所述反编译模块具体用于判断所述应用的安装包文件是否加固,当判断结果为是时,对所述安装包文件进行脱壳处理,并对脱壳处理后的安装包文件进行反编译。
B17、根据B10-B16任一所述的装置,其中,所述预设功能包括以下中的至少一个:支付功能、登录功能、以及密码输入功能。
B18、根据B10-B17任一所述的装置,其中,所述应用包括:移动应用,或非移动应用。

Claims (10)

1.一种应用安全性分析方法,其特征在于,包括:
对应用的安装包文件进行反编译;
当根据反编译结果确定所述安装包文件中包含与预设功能相匹配的功能模块时,提取所述与预设功能相匹配的功能模块;
对提取的功能模块进行静态分析,得到所述提取的功能模块对应的静态分析结果;以及,对所述提取的功能模块进行动态分析,得到所述提取的功能模块对应的动态分析结果;
根据所述静态分析结果以及所述动态分析结果确定所述应用是否安全。
2.根据权利要求1所述的方法,其特征在于,所述当根据反编译结果确定所述安装包文件中包含与预设功能相匹配的功能模块时,提取所述与预设功能相匹配的功能模块的步骤具体包括:通过机器学习算法确定并提取所述与预设功能相匹配的功能模块。
3.根据权利要求1所述的方法,其特征在于,所述当根据反编译结果确定所述安装包文件中包含与预设功能相匹配的功能模块时,提取所述与预设功能相匹配的功能模块的步骤具体包括:根据预设的关键字匹配规则和/或模式匹配规则确定并提取所述与预设功能相匹配的功能模块。
4.根据权利要求2或3所述的方法,其特征在于,所述确定并提取所述与预设功能相匹配的功能模块的步骤之后,进一步包括:
确定提取出的功能模块中包含的系统API序列;
查询预设的API序列表,若所述功能模块中包含的系统API序列未包含在所述API序列表中,则丢弃该功能模块;
其中,所述API序列表中存储了与所述预设功能相对应的系统API序列。
5.根据权利要求1-4任一所述的方法,其特征在于,所述对提取的功能模块进行静态分析的步骤具体包括:
构建与提取的功能模块对应的抽象语法树,根据所述抽象语法树执行静态污点分析。
6.根据权利要求1-5任一所述的方法,其特征在于,所述对提取的功能模块进行动态分析具体包括以下方式中的至少一种:插桩分析方式、插入挂钩方式以及动态污点分析方式。
7.一种应用安全性分析装置,其特征在于,包括:
反编译模块,用于对应用的安装包文件进行反编译;
提取模块,用于当根据反编译结果确定所述安装包文件中包含与预设功能相匹配的功能模块时,提取所述与预设功能相匹配的功能模块;
分析模块,用于对提取的功能模块进行静态分析,得到所述提取的功能模块对应的静态分析结果;以及,对所述提取的功能模块进行动态分析,得到所述提取的功能模块对应的动态分析结果;
确定模块,用于根据所述静态分析结果以及所述动态分析结果确定所述应用是否安全。
8.根据权利要求7所述的装置,其特征在于,所述装置进一步包括:
API序列模块,用于确定提取出的功能模块中包含的系统API序列;查询预设的API序列表,若所述功能模块中包含的系统API序列未包含在所述API序列表中,则丢弃该功能模块;
其中,所述API序列表中存储了与所述预设功能相对应的系统API序列。
9.根据权利要求7或8所述的装置,其特征在于,所述分析模块进一步包括:静态分析子模块,具体用于构建与提取的功能模块对应的抽象语法树,根据所述抽象语法树执行静态污点分析。
10.根据权利要求7-9任一所述的装置,其特征在于,所述分析模块进一步包括:动态分析子模块,具体采用以下方式中的至少一种方式进行动态分析:插桩分析方式、插入挂钩方式以及动态污点分析方式。
CN201611173729.4A 2016-12-16 2016-12-16 一种应用安全性分析方法及装置 Pending CN106709290A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611173729.4A CN106709290A (zh) 2016-12-16 2016-12-16 一种应用安全性分析方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611173729.4A CN106709290A (zh) 2016-12-16 2016-12-16 一种应用安全性分析方法及装置

Publications (1)

Publication Number Publication Date
CN106709290A true CN106709290A (zh) 2017-05-24

Family

ID=58939200

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611173729.4A Pending CN106709290A (zh) 2016-12-16 2016-12-16 一种应用安全性分析方法及装置

Country Status (1)

Country Link
CN (1) CN106709290A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108763061A (zh) * 2018-04-29 2018-11-06 西安交通大学 一种计算机软件产品品质管制管理系统
CN109726551A (zh) * 2017-10-31 2019-05-07 武汉安天信息技术有限责任公司 一种应用安装前不良行为的展示方法和系统
CN110213243A (zh) * 2019-05-15 2019-09-06 浙江大学 一种基于动态污点分析的工业通信协议逆向分析方法
CN110737891A (zh) * 2018-07-19 2020-01-31 北京京东金融科技控股有限公司 一种主机入侵检测方法和装置
CN113656308A (zh) * 2021-08-18 2021-11-16 福建卫联科技有限公司 一种计算机软件分析系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268474A (zh) * 2014-09-30 2015-01-07 电子科技大学 一种基于浏览器脚本行为的入侵检测方法及装置
CN104517054A (zh) * 2014-12-25 2015-04-15 北京奇虎科技有限公司 一种检测恶意apk的方法、装置、客户端和服务器
CN104537309A (zh) * 2015-01-23 2015-04-22 北京奇虎科技有限公司 应用程序漏洞检测方法、装置及服务器
CN105184160A (zh) * 2015-07-24 2015-12-23 哈尔滨工程大学 一种基于API对象调用关系图的Android手机平台应用程序恶意行为检测的方法
CN105205396A (zh) * 2015-10-15 2015-12-30 上海交通大学 一种基于深度学习的安卓恶意代码检测系统及其方法
CN105630536A (zh) * 2015-07-17 2016-06-01 宇龙计算机通信科技(深圳)有限公司 一种信息处理方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268474A (zh) * 2014-09-30 2015-01-07 电子科技大学 一种基于浏览器脚本行为的入侵检测方法及装置
CN104517054A (zh) * 2014-12-25 2015-04-15 北京奇虎科技有限公司 一种检测恶意apk的方法、装置、客户端和服务器
CN104537309A (zh) * 2015-01-23 2015-04-22 北京奇虎科技有限公司 应用程序漏洞检测方法、装置及服务器
CN105630536A (zh) * 2015-07-17 2016-06-01 宇龙计算机通信科技(深圳)有限公司 一种信息处理方法及装置
CN105184160A (zh) * 2015-07-24 2015-12-23 哈尔滨工程大学 一种基于API对象调用关系图的Android手机平台应用程序恶意行为检测的方法
CN105205396A (zh) * 2015-10-15 2015-12-30 上海交通大学 一种基于深度学习的安卓恶意代码检测系统及其方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
张剑: "《信息安全技术应用》", 31 May 2015 *
苏欣 等: "《Android手机应用网络流量分析与恶意行为检测研究》", 31 October 2016 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109726551A (zh) * 2017-10-31 2019-05-07 武汉安天信息技术有限责任公司 一种应用安装前不良行为的展示方法和系统
CN108763061A (zh) * 2018-04-29 2018-11-06 西安交通大学 一种计算机软件产品品质管制管理系统
CN110737891A (zh) * 2018-07-19 2020-01-31 北京京东金融科技控股有限公司 一种主机入侵检测方法和装置
CN110213243A (zh) * 2019-05-15 2019-09-06 浙江大学 一种基于动态污点分析的工业通信协议逆向分析方法
CN110213243B (zh) * 2019-05-15 2020-05-12 浙江大学 一种基于动态污点分析的工业通信协议逆向分析方法
CN113656308A (zh) * 2021-08-18 2021-11-16 福建卫联科技有限公司 一种计算机软件分析系统

Similar Documents

Publication Publication Date Title
CN106709290A (zh) 一种应用安全性分析方法及装置
CN107483458A (zh) 网络攻击的识别方法及装置、计算机可读存储介质
CN105989283A (zh) 一种识别病毒变种的方法及装置
CN104573515A (zh) 一种病毒处理方法、装置和系统
CN103810428B (zh) 一种宏病毒检测方法及装置
CN110096433B (zh) 一种iOS平台上获取加密数据的方法
CN109101815A (zh) 一种恶意软件检测方法及相关设备
CN107247902A (zh) 恶意软件分类系统及方法
CN106709325A (zh) 一种监控程序的方法及装置
CN104680065A (zh) 病毒检测方法、装置及设备
CN112769840B (zh) 一种基于强化学习Dyna框架的网络攻击行为识别方法
CN107103237A (zh) 一种恶意文件的检测方法及装置
CN109726601A (zh) 违规行为的识别方法及装置、存储介质、计算机设备
CN113158197A (zh) 一种基于主动iast的sql注入漏洞检测方法、系统
CN117131508A (zh) 一种智能物联终端容器的自动化渗透攻击测试方法和系统
CN105930728A (zh) 一种应用审查方法及装置
CN105243328A (zh) 一种基于行为特征的摆渡木马防御方法
CN111177663A (zh) 编译器的代码混淆改进方法及装置、存储介质、电子装置
CN104715018B (zh) 基于语义分析的智能防sql注入方法
CN111291377A (zh) 一种应用漏洞的检测方法及系统
Zhang et al. A new semantics-based android malware detection
CN109472135A (zh) 一种检测进程注入的方法、装置及存储介质
CN116204892B (zh) 漏洞处理方法、装置、设备以及存储介质
CN103914652B (zh) 恶意程序控制指令识别方法及装置
CN106599637A (zh) 一种在验证界面输入验证码的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170524

RJ01 Rejection of invention patent application after publication