CN110941833A - 一种检测apk文件中漏洞的方法、装置及存储介质 - Google Patents

一种检测apk文件中漏洞的方法、装置及存储介质 Download PDF

Info

Publication number
CN110941833A
CN110941833A CN201911228798.4A CN201911228798A CN110941833A CN 110941833 A CN110941833 A CN 110941833A CN 201911228798 A CN201911228798 A CN 201911228798A CN 110941833 A CN110941833 A CN 110941833A
Authority
CN
China
Prior art keywords
file
dex
ssl
net
class
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
CN201911228798.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.)
Xiamen Anscen Network Technology Co Ltd
Original Assignee
Xiamen Anscen Network 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 Xiamen Anscen Network Technology Co Ltd filed Critical Xiamen Anscen Network Technology Co Ltd
Priority to CN201911228798.4A priority Critical patent/CN110941833A/zh
Publication of CN110941833A publication Critical patent/CN110941833A/zh
Pending legal-status Critical Current

Links

Images

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种检测apk文件中漏洞的方法、装置及存储介质,该方法包括:首先将所述apk文件读取至内存中,并将所述apk文件中的多个dex格式的文件解压至内存中;再对所述多个dex格式的文件逐一进行检测,判断所述dex格式的文件中是否存在特定的字段,如果是,则继续判断该dex格式的文件是否继承了特定的类或存在特定的操作码,如果是,则所述apk文件存在漏洞。本发明通过解析dex文件结构,使用类关键字识别含有潜在漏洞代码的dex文件,并解析dex文件,提取出类中关键方法的opcode,对其进行检测,从而不需要对apk文件进行反编译,且检测过程是逐步进行的,避免了对反编译后的所有文件进行扫描,提高了漏洞的检测速度。

Description

一种检测apk文件中漏洞的方法、装置及存储介质
技术领域
本发明涉及计算机安全技术领域,特别是一种检测apk文件中漏洞的方法、装置及存储介质。
背景技术
随着数据安全的普及,为了保障数据在客户端和服务器之间传输的完整性和安全性,防止在传输过程中被篡改或者被窃取,https协议作为一种相对安全的通信协议,被广泛应用在客户端和服务器之间的加密信息传输。但是由于开发者对https相关模块的不熟悉或为了简化流程,导致在开发过程中错误的使用https相关模块,从而导致https协议的安全性降低,形成中间人攻击漏洞。
为了能在大量Android应用检测出存在上述漏洞的应用程序,目前通用方案是对应用程序进行反编译,对反编译后的代码进行扫描,识别出有漏洞的代码。其缺点如下:1、反编译所需时间、以及反编译后的文件数量和体积和应用程序中代码的大小相关,代码越大,文件数量和体积越大,越耗时。2、如果应用程序做过防止反编译处理,则会导致反编译失败,无法进行步骤。3、检测过程是对反编译后的所有文件进行扫描,文件越多,速度越慢。
发明内容
本发明针对上述现有技术中的缺陷,提出了如下技术方案。
一种检测apk文件中漏洞的方法,该方法包括:
解压步骤,将所述apk文件读取至内存中,并将所述apk文件中的多个dex格式的文件解压至内存中;
检测步骤,对所述多个dex格式的文件逐一进行检测,判断所述dex格式的文件中是否存在特定的字段,如果是,则继续判断该dex格式的文件是否继承了特定的类或存在特定的操作码,如果是,则所述apk文件存在漏洞。
更进一步地,判断所述dex格式的文件中是否存在特定的字段,如果否,则所述apk文件不存在漏洞。
更进一步地,判断所述dex格式的文件中是否存在特定的字段是指:获取dex格式的文件中所有字符串,检测所有字符串是否包含"Ljavax/net/ssl/X509TrustManager;"、"Ljavax/net/ssl/HostnameVerifier;"或“ALLOW_ALL_HOSTNAME_VERIFIER”。
更进一步地,判断该dex格式的文件是否继承了特定的类的操作为:获取所述dex格式的文件的所有类,检测所有类中是否有类继承自"Ljavax/net/ssl/X509TrustManager;"或"Ljavax/net/ssl/HostnameVerifier;",如果有类继承自"Ljavax/net/ssl/X509TrustManager;",则遍历该类中的所有virtual方法,获取名称为checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)和checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)的方法,读取二者的字节码,检测二者的字节码是否为return-void,若是,则所述apk文件存在漏洞存漏洞;如果有类继承自"Ljavax/net/ssl/HostnameVerifier;",则遍历该类中的所有virtual方法,获取名称为verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)的方法,读取其字节码,检测是否为“const/4p1,1;return p1”,若是,则所述apk文件存在漏洞。
更进一步地,判断该dex格式的文件是否存在特定的操作码的操作为:遍历所述dex格式的文件中所有字段类型项,检测是否存在org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER类型,若有,则记录该字段的索引id,然后搜索所述dex格式的文件中所有类中的方法的字节码,检测字节码中是否存在sget-object操作码,且该字节码第二个操作数为所述字段索引id,若是,则所述apk文件存在漏洞。
本发明还提出了一种检测apk文件中漏洞的装置,该装置包括:
解压单元,将所述apk文件读取至内存中,并将所述apk文件中的多个dex格式的文件解压至内存中;
检测单元,对所述多个dex格式的文件逐一进行检测,判断所述dex格式的文件中是否存在特定的字段,如果是,则继续判断该dex格式的文件是否继承了特定的类或存在特定的操作码,如果是,则所述apk文件存在漏洞。
更进一步地,判断所述dex格式的文件中是否存在特定的字段,如果否,则所述apk文件不存在漏洞。
更进一步地,判断所述dex格式的文件中是否存在特定的字段是指:获取dex格式的文件中所有字符串,检测所有字符串是否包含"Ljavax/net/ssl/X509TrustManager;"、"Ljavax/net/ssl/HostnameVerifier;"或“ALLOW_ALL_HOSTNAME_VERIFIER”。
更进一步地,判断该dex格式的文件是否继承了特定的类的操作为:获取所述dex格式的文件的所有类,检测所有类中是否有类继承自"Ljavax/net/ssl/X509TrustManager;"或"Ljavax/net/ssl/HostnameVerifier;",如果有类继承自"Ljavax/net/ssl/X509TrustManager;",则遍历该类中的所有virtual方法,获取名称为checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)和checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)的方法,读取二者的字节码,检测二者的字节码是否为return-void,若是,则所述apk文件存在漏洞存漏洞;如果有类继承自"Ljavax/net/ssl/HostnameVerifier;",则遍历该类中的所有virtual方法,获取名称为verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)的方法,读取其字节码,检测是否为“const/4p1,1;return p1”,若是,则所述apk文件存在漏洞。
更进一步地,判断该dex格式的文件是否存在特定的操作码的操作为:遍历所述dex格式的文件中所有字段类型项,检测是否存在org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER类型,若有,则记录该字段的索引id,然后搜索所述dex格式的文件中所有类中的方法的字节码,检测字节码中是否存在sget-object操作码,且该字节码第二个操作数为所述字段索引id,若是,则所述apk文件存在漏洞。
本发明还提出了一种计算机可读存储介质,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行上述之任一的装置。
本发明的技术效果在于:本发明的一种检测apk文件中漏洞的方法,该方法包括:解压步骤,将所述apk文件读取至内存中,并将所述apk文件中的多个dex格式的文件解压至内存中;检测步骤,对所述多个dex格式的文件逐一进行检测,判断所述dex格式的文件中是否存在特定的字段,如果是,则继续判断该dex格式的文件是否继承了特定的类或存在特定的操作码,如果是,则所述apk文件存在漏洞。本发明通过解析dex文件结构,使用类关键字识别含有潜在漏洞代码的dex文件,并解析dex文件,提取出类中关键方法的opcode,对其进行检测,从而不需要对apk文件进行反编译,且检测过程是逐步进行的,避免了对反编译后的所有文件进行扫描,提高了漏洞的检测速度。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显。
图1是根据本发明的实施例的一种检测apk文件中漏洞的方法的流程图。
图2是根据本发明的实施例的一种检测apk文件中漏洞的装置的结构图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了本发明的一种检测apk文件中漏洞的方法,该方法包括:
解压步骤S101,将所述apk文件读取至内存中,并将所述apk文件中的多个dex格式的文件解压至内存中。一般来说,读取待检测应用程序(apk文件)到内存,解压其中的classes.dex到内存当中,apk中通常有多个dex文件(即dex格式的文件),并以classes.dex、classes2.dex、classes3.dex到classesN.dex的文件名称存在于apk文件中,将这些dex文件解压至内存中,进行后续的处理。
检测步骤S102,对所述多个dex格式的文件逐一进行检测,判断所述dex格式的文件中是否存在特定的字段,如果是,则继续判断该dex格式的文件是否继承了特定的类或存在特定的操作码,如果是,则所述apk文件存在漏洞。这是本发明中关键的一步,其通过逐步递进的方式判断是否存在漏洞,该漏洞为中间攻击漏洞,又称为中间人攻击漏洞。
即在一个实施例中,判断所述dex格式的文件中是否存在特定的字段,如果否,则所述apk文件不存在漏洞,即一个apk文件中的所有dex文件均不存在特定的字段,则该apk文件不存在漏洞,无需要再进行后续的判断,提高了检测时间,这是本发明的重要发明点之一。
在一个实施例中,判断所述dex格式的文件中是否存在特定的字段是指:获取dex格式的文件中所有字符串,检测所有字符串是否包含"Ljavax/net/ssl/X509TrustManager;"、"Ljavax/net/ssl/HostnameVerifier;"或“ALLOW_ALL_HOSTNAME_VERIFIER”。即一个apk文件中的所有dex文件均不存在"Ljavax/net/ssl/X509TrustManager;"、"Ljavax/net/ssl/HostnameVerifier;"或“ALLOW_ALL_HOSTNAME_VERIFIER”,则说明此apk文件不包含可能导致漏洞的代码,该apk是安全的。
如果一个apk文件中的某一个dex文件中存在"Ljavax/net/ssl/X509TrustManager;"、"Ljavax/net/ssl/HostnameVerifier;"或“ALLOW_ALL_HOSTNAME_VERIFIER”,则需要继续判断该dex格式的文件是否继承了特定的类或存在特定的操作码,如果是,则所述apk文件存在漏洞。
在一个实施例中,判断该dex格式的文件是否继承了特定的类的操作为:获取所述dex格式的文件的所有类,检测所有类中是否有类继承自"Ljavax/net/ssl/X509TrustManager;"或"Ljavax/net/ssl/HostnameVerifier;",如果有类继承自"Ljavax/net/ssl/X509TrustManager;",则遍历该类中的所有virtual方法,获取名称为checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)和checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)的方法,读取二者的字节码,检测二者的字节码是否为return-void(对应十六进制为0x0E),若是,则所述apk文件存在漏洞存漏洞;如果有类继承自"Ljavax/net/ssl/HostnameVerifier;",则遍历该类中的所有virtual方法,获取名称为verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)的方法,读取其字节码,检测是否为“const/4p1,1;return p1(对应十六进制为0x12110F01)”,若是,则所述apk文件存在漏洞。
在一个实施例中,判断该dex格式的文件是否存在特定的操作码的操作为:遍历所述dex格式的文件中所有字段类型项,检测是否存在org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER类型,若有,则记录该字段的索引id,然后搜索所述dex格式的文件中所有类中的方法的字节码,检测字节码中是否存在sget-object操作码(对应十六进制为0x62),且该字节码第二个操作数为所述字段索引id,若是,则所述apk文件存在漏洞。
本发明中,判断该dex格式的文件是否继承了特定的类或存在特定的操作码,如果其中之一成立,就不需要再进行判断另一个,就表明该应用程序存在中间人攻击漏洞,就可以精确定位到漏洞代码所在的类和方法,节约了检测时间,提高了用户体验。
图2示出了本发明的本发明的一种检测apk文件中漏洞的装置,该装置包括:
解压单元201,将所述apk文件读取至内存中,并将所述apk文件中的多个dex格式的文件解压至内存中。一般来说,读取待检测应用程序(apk文件)到内存,解压其中的classes.dex到内存当中,apk中通常有多个dex文件(即dex格式的文件),并以classes.dex、classes2.dex、classes3.dex到classesN.dex的文件名称存在于apk文件中,将这些dex文件解压至内存中,进行后续的处理。
检测单元202,对所述多个dex格式的文件逐一进行检测,判断所述dex格式的文件中是否存在特定的字段,如果是,则继续判断该dex格式的文件是否继承了特定的类或存在特定的操作码,如果是,则所述apk文件存在漏洞。这是本发明中关键的一步,其通过逐步递进的方式判断是否存在漏洞,该漏洞为中间攻击漏洞,又称为中间人攻击漏洞。
即在一个实施例中,判断所述dex格式的文件中是否存在特定的字段,如果否,则所述apk文件不存在漏洞,即一个apk文件中的所有dex文件均不存在特定的字段,则该apk文件不存在漏洞,无需要再进行后续的判断,提高了检测时间,这是本发明的重要发明点之一。
在一个实施例中,判断所述dex格式的文件中是否存在特定的字段是指:获取dex格式的文件中所有字符串,检测所有字符串是否包含"Ljavax/net/ssl/X509TrustManager;"、"Ljavax/net/ssl/HostnameVerifier;"或“ALLOW_ALL_HOSTNAME_VERIFIER”。即一个apk文件中的所有dex文件均不存在"Ljavax/net/ssl/X509TrustManager;"、"Ljavax/net/ssl/HostnameVerifier;"或“ALLOW_ALL_HOSTNAME_VERIFIER”,则说明此apk文件不包含可能导致漏洞的代码,该apk是安全的。
如果一个apk文件中的某一个dex文件中存在"Ljavax/net/ssl/X509TrustManager;"、"Ljavax/net/ssl/HostnameVerifier;"或“ALLOW_ALL_HOSTNAME_VERIFIER”,则需要继续判断该dex格式的文件是否继承了特定的类或存在特定的操作码,如果是,则所述apk文件存在漏洞。
在一个实施例中,判断该dex格式的文件是否继承了特定的类的操作为:获取所述dex格式的文件的所有类,检测所有类中是否有类继承自"Ljavax/net/ssl/X509TrustManager;"或"Ljavax/net/ssl/HostnameVerifier;",如果有类继承自"Ljavax/net/ssl/X509TrustManager;",则遍历该类中的所有virtual方法,获取名称为checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)和checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)的方法,读取二者的字节码,检测二者的字节码是否为return-void(对应十六进制为0x0E),若是,则所述apk文件存在漏洞存漏洞;如果有类继承自"Ljavax/net/ssl/HostnameVerifier;",则遍历该类中的所有virtual方法,获取名称为verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)的方法,读取其字节码,检测是否为“const/4p1,1;return p1(对应十六进制为0x12110F01)”,若是,则所述apk文件存在漏洞。
在一个实施例中,判断该dex格式的文件是否存在特定的操作码的操作为:遍历所述dex格式的文件中所有字段类型项,检测是否存在org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER类型,若有,则记录该字段的索引id,然后搜索所述dex格式的文件中所有类中的方法的字节码,检测字节码中是否存在sget-object操作码(对应十六进制为0x62),且该字节码第二个操作数为所述字段索引id,若是,则所述apk文件存在漏洞。
本发明中,判断该dex格式的文件是否继承了特定的类或存在特定的操作码,如果其中之一成立,就不需要再进行判断另一个,就表明该应用程序存在中间人攻击漏洞,就可以精确定位到漏洞代码所在的类和方法,节约了检测时间,提高了用户体验。
本发明中dex文件中的字符串获取、类获取以及类方法获取是通过解析内存中的dex文件得到,dex文件是一种公开的文件格式,因此,本领域技术人员可进行解析。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的装置。
最后所应说明的是:以上实施例仅以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。

Claims (11)

1.一种检测apk文件中漏洞的方法,其特征在于,该方法包括:
解压步骤,将所述apk文件读取至内存中,并将所述apk文件中的多个dex格式的文件解压至内存中;
检测步骤,对所述多个dex格式的文件逐一进行检测,判断所述dex格式的文件中是否存在特定的字段,如果是,则继续判断该dex格式的文件是否继承了特定的类或存在特定的操作码,如果是,则所述apk文件存在漏洞。
2.根据权利要求1所述的方法,其特征在于,判断所述dex格式的文件中是否存在特定的字段,如果否,则所述apk文件不存在漏洞。
3.根据权利要求1或2所述的方法,其特征在于,判断所述dex格式的文件中是否存在特定的字段是指:获取dex格式的文件中所有字符串,检测所有字符串是否包含"Ljavax/net/ssl/X509TrustManager;"、"Ljavax/net/ssl/HostnameVerifier;"或“ALLOW_ALL_HOSTNAME_VERIFIER”。
4.根据权利要求3所述的方法,其特征在于,判断该dex格式的文件是否继承了特定的类的操作为:获取所述dex格式的文件的所有类,检测所有类中是否有类继承自"Ljavax/net/ssl/X509TrustManager;"或"Ljavax/net/ssl/HostnameVerifier;",如果有类继承自"Ljavax/net/ssl/X509TrustManager;",则遍历该类中的所有virtual方法,获取名称为checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)和checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)的方法,读取二者的字节码,检测二者的字节码是否为return-void,若是,则所述apk文件存在漏洞存漏洞;如果有类继承自"Ljavax/net/ssl/HostnameVerifier;",则遍历该类中的所有virtual方法,获取名称为verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)的方法,读取其字节码,检测是否为“const/4p1,1;return p1”,若是,则所述apk文件存在漏洞。
5.根据权利要求4所述的方法,其特征在于,判断该dex格式的文件是否存在特定的操作码的操作为:遍历所述dex格式的文件中所有字段类型项,检测是否存在org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER类型,若有,则记录该字段的索引id,然后搜索所述dex格式的文件中所有类中的方法的字节码,检测字节码中是否存在sget-object操作码,且该字节码第二个操作数为所述字段索引id,若是,则所述apk文件存在漏洞。
6.一种检测apk文件中漏洞的装置,其特征在于,该装置包括:
解压单元,将所述apk文件读取至内存中,并将所述apk文件中的多个dex格式的文件解压至内存中;
检测单元,对所述多个dex格式的文件逐一进行检测,判断所述dex格式的文件中是否存在特定的字段,如果是,则继续判断该dex格式的文件是否继承了特定的类或存在特定的操作码,如果是,则所述apk文件存在漏洞。
7.根据权利要求6所述的装置,其特征在于,判断所述dex格式的文件中是否存在特定的字段,如果否,则所述apk文件不存在漏洞。
8.根据权利要求6或7所述的装置,其特征在于,判断所述dex格式的文件中是否存在特定的字段是指:获取dex格式的文件中所有字符串,检测所有字符串是否包含"Ljavax/net/ssl/X509TrustManager;"、"Ljavax/net/ssl/HostnameVerifier;"或“ALLOW_ALL_HOSTNAME_VERIFIER”。
9.根据权利要求8所述的装置,其特征在于,判断该dex格式的文件是否继承了特定的类的操作为:获取所述dex格式的文件的所有类,检测所有类中是否有类继承自"Ljavax/net/ssl/X509TrustManager;"或"Ljavax/net/ssl/HostnameVerifier;",如果有类继承自"Ljavax/net/ssl/X509TrustManager;",则遍历该类中的所有virtual方法,获取名称为checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)和checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)的方法,读取二者的字节码,检测二者的字节码是否为return-void,若是,则所述apk文件存在漏洞存漏洞;如果有类继承自"Ljavax/net/ssl/HostnameVerifier;",则遍历该类中的所有virtual方法,获取名称为verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)的方法,读取其字节码,检测是否为“const/4 p1,1;return p1”,若是,则所述apk文件存在漏洞。
10.根据权利要求9所述的装置,其特征在于,判断该dex格式的文件是否存在特定的操作码的操作为:遍历所述dex格式的文件中所有字段类型项,检测是否存在org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER类型,若有,则记录该字段的索引id,然后搜索所述dex格式的文件中所有类中的方法的字节码,检测字节码中是否存在sget-object操作码,且该字节码第二个操作数为所述字段索引id,若是,则所述apk文件存在漏洞。
11.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序代码,当所述计算机程序代码被计算机执行时执行权利要求1-5之任一的装置。
CN201911228798.4A 2019-12-04 2019-12-04 一种检测apk文件中漏洞的方法、装置及存储介质 Pending CN110941833A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911228798.4A CN110941833A (zh) 2019-12-04 2019-12-04 一种检测apk文件中漏洞的方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911228798.4A CN110941833A (zh) 2019-12-04 2019-12-04 一种检测apk文件中漏洞的方法、装置及存储介质

Publications (1)

Publication Number Publication Date
CN110941833A true CN110941833A (zh) 2020-03-31

Family

ID=69909569

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911228798.4A Pending CN110941833A (zh) 2019-12-04 2019-12-04 一种检测apk文件中漏洞的方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN110941833A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663286A (zh) * 2012-03-21 2012-09-12 奇智软件(北京)有限公司 一种病毒apk的识别方法及装置
CN103365699A (zh) * 2012-12-21 2013-10-23 北京安天电子设备有限公司 基于apk的系统api和运行时字符串提取方法及系统
CN104751054A (zh) * 2013-12-31 2015-07-01 贝壳网际(北京)安全技术有限公司 恶意程序的识别方法及装置、移动终端
CN105975862A (zh) * 2015-11-25 2016-09-28 武汉安天信息技术有限责任公司 一种基于漏洞触发方式的漏洞检测方法及系统
US20190180035A1 (en) * 2017-12-07 2019-06-13 Virtual Forge GmbH Method for detecting vulnerabilities in software

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663286A (zh) * 2012-03-21 2012-09-12 奇智软件(北京)有限公司 一种病毒apk的识别方法及装置
CN103365699A (zh) * 2012-12-21 2013-10-23 北京安天电子设备有限公司 基于apk的系统api和运行时字符串提取方法及系统
CN104751054A (zh) * 2013-12-31 2015-07-01 贝壳网际(北京)安全技术有限公司 恶意程序的识别方法及装置、移动终端
CN105975862A (zh) * 2015-11-25 2016-09-28 武汉安天信息技术有限责任公司 一种基于漏洞触发方式的漏洞检测方法及系统
US20190180035A1 (en) * 2017-12-07 2019-06-13 Virtual Forge GmbH Method for detecting vulnerabilities in software

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
YINGJIE WANG ET AL: "DCDroid: Automated Detection of SSL/TLS Certificate Verification Vulnerabilities in Android Apps", 《ACM TURC "19: PROCEEDINGS OF THE ACM TURING CELEBRATION CONFERENCE - CHINA》 *
吕婷婷: "Android应用漏洞扫描系统的设计与实现", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 *

Similar Documents

Publication Publication Date Title
AU2018217323B2 (en) Methods and systems for identifying potential enterprise software threats based on visual and non-visual data
CN104123493B (zh) 应用程序的安全性检测方法和装置
US8800042B2 (en) Secure web application development and execution environment
JP5802848B2 (ja) モバイル環境用のトロイの木馬化されたアプリケーション(アプリ)を特定するためのコンピュータ実装方法、非一時コンピュータ読み取り可能な媒体およびコンピュータシステム
JP6223458B2 (ja) アプリケーションが悪意のあるものであるかどうかを識別するための方法、処理システム、およびコンピュータ・プログラム
US9336389B1 (en) Rapid malware inspection of mobile applications
EP3178011B1 (en) Method and system for facilitating terminal identifiers
US9270467B1 (en) Systems and methods for trust propagation of signed files across devices
CN110929264B (zh) 漏洞检测方法、装置、电子设备及可读存储介质
CN106899566A (zh) 一种认证方法、设备以及认证客户端
WO2013139215A1 (zh) 病毒apk的识别方法及装置
CN111163095B (zh) 网络攻击分析方法、网络攻击分析装置、计算设备和介质
US11275835B2 (en) Method of speeding up a full antivirus scan of files on a mobile device
CN110888838A (zh) 基于对象存储的请求处理方法、装置、设备及存储介质
CN110071924B (zh) 基于终端的大数据分析方法及系统
US20210157909A1 (en) Sample data generation apparatus, sample data generation method, and computer readable medium
US11200317B2 (en) Systems and methods for protecting a computing device against malicious code
CN112953896A (zh) 日志报文的回放方法及装置
CN109818972B (zh) 一种工业控制系统信息安全管理方法、装置及电子设备
CN109145589B (zh) 应用程序获取方法及装置
CN108600259B (zh) 设备的认证和绑定方法及计算机存储介质、服务器
CN109214179B (zh) 一种程序模块安全检测方法及装置
KR101482700B1 (ko) 해시를 이용한 프로그램의 무결성 검증 방법
CN109522683A (zh) 软件溯源方法、系统、计算机设备及存储介质
CN110941833A (zh) 一种检测apk文件中漏洞的方法、装置及存储介质

Legal Events

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

Application publication date: 20200331