CN105550585B - 一种应用程序安全性测试方法、装置和*** - Google Patents
一种应用程序安全性测试方法、装置和*** Download PDFInfo
- Publication number
- CN105550585B CN105550585B CN201610122177.8A CN201610122177A CN105550585B CN 105550585 B CN105550585 B CN 105550585B CN 201610122177 A CN201610122177 A CN 201610122177A CN 105550585 B CN105550585 B CN 105550585B
- Authority
- CN
- China
- Prior art keywords
- application program
- control
- program
- path
- calling
- 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
Images
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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Quality & Reliability (AREA)
- Telephone Function (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种应用程序安全性测试方法、装置和***。该方法包括:终端设备安装Hook程序,所述Hook程序配置需监控的调用函数;在运行应用程序的同时,运行Hook程序;当在应用程序运行过程中,通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息;该调用信息包括:输入参数,和/或返回值;当遍历完所述应用程序中的所有控件时,确定在记录的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全。通过该技术方案能够提高应用程序安全性测试的准确度。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种应用程序安全性测试方法、装置和***。
背景技术
不可否认,手机应用无论是在个人领域还是企业应用领域都变得举足轻重,而其中,安卓(Android)的份额最大。但是Android应用一直以来都有一个为用户所诟病的问题,就是其安全性,因而构建一款成功的Android应用程序,安全的重要性不言而喻。
针对Android应用程序的安全性测试现有实现中采用静态特征代码检测方案,即反编译安卓安装包(AndroidPackage,APk)。
由于静态扫描出来的代码在实际运行时并不一定被执行,因此会产生漏报和误报;并且静态特征代码检测依赖于反编译APk,而市面上很多经过加壳或特殊处理的APk无法被反编译,因此,该种测试方式也存在很大的局限性。
发明内容
有鉴于此,本申请提供一种应用程序安全性测试方法、装置和***,以提高应用程序安全性测试的准确性。
为解决上述技术问题,本申请的技术方案是这样实现的:
一种应用程序安全性测试方法,应用于安装应用程序的终端设备上,该方法包括:
该终端设备安装Hook程序,所述Hook程序配置需监控的调用函数;
在运行应用程序的同时,运行Hook程序;
当在应用程序运行过程中,通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息;该调用信息包括:输入参数,和/或返回值;
当遍历完所述应用程序中的所有控件时,确定在记录的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全。
一种应用程序安全性测试方法,应用于包括测试设备和被测设备的***中,
所述被测设备安装应用程序和Hook程序,所述Hook程序配置需监控的调用函数;在运行应用程序的同时,运行Hook程序;当在应用程序运行过程中,通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息,并发送给所述测试设备;直到遍历完所述应用程序中的所有控件;该调用信息包括:输入参数,和/或返回值;
所述测试设备接收并存储所述被测设备发送的调用函数的调用信息;当所述被测设备遍历完所述应用程序中的所有控件时,确定在存储的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全。
一种应用程序安全性测试装置,应用于安装应用程序的终端设备上,该装置包括:安装单元、运行单元、监控单元、记录单元和确定单元;
所述安装单元,用于安装Hook程序,所述Hook程序配置需监控的调用函数;
所述运行单元,用于在运行安装的应用程序的同时,运行所述安装单元安装的Hook程序;
所述监控单元,用于所述运行单元运行应用程序过程中,通过Hook程序监控配置的调用函数;
所述记录单元,用于当所述监控单元通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息;该调用信息包括:输入参数,和/或返回值;
所述确定单元,用于当所述运行单元遍历完所述应用程序中的所有控件时,确定在记录的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全。
一种应用程序安全性测试***,该***包括:测试设备和被测设备;
所述被测设备,用于安装应用程序和Hook程序,所述Hook程序配置需监控的调用函数;在运行应用程序的同时,运行Hook程序;当在应用程序运行过程中,通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息,并发送给所述测试设备;直到遍历完所述应用程序中的所有控件;该调用信息包括:输入参数,和/或返回值;
所述测试设备,用于接收并存储所述被测设备发送的调用函数的调用信息;当所述被测设备遍历完所述应用程序中的所有控件时,确定在存储的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全。
由上面的技术方案可知,本申请中通过配置的Hook程序,在应用程序运行时,记录Hook程序中配置的调用函数的调用信息,通过记录的调用信息确定该应用程序是否存在安全漏洞。通过该技术方案能够提高应用程序安全性测试的准确性。
附图说明
图1为本申请实施例一中应用程序安全性测试流程示意图;
图2为本申请实施例一中自动化测试流程示意图;
图3为本申请实施例一中UI上的控件示意图;
图4为已生成的UI路径示意图;
图5为本申请实施例二中应用程序安全性测试流程示意图;
图6为本申请实施例中安全性测试装置结构示意图;
图7为本申请具体实施例中应用程序安全性测试的终端设备的硬件架构组成示意图;
图8为本申请实施例中应用程序安全性测试***示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图并举实施例,对本发明的技术方案进行详细说明。
本申请实施例中提供一种应用程序安全性测试方案,通过配置的钩子(Hook)程序,在应用程序运行时,记录Hook程序中配置的调用函数的调用信息,通过记录的调用信息确定该应用程序是否存在安全漏洞。通过该技术方案能够提高应用程序安全性测试的准确性。
在具体实现时,需预先编写Hook程序,在Hook程序中配置需监控的调用函数,具体配置哪些调用函数,根据实际要测试的应用程序确定,即测试一应用程序的安全性时,需要监控哪些调用函数来确定应用程序是否存在漏洞,则配置哪些调用函数。
如,针对android应用程序,配置的调用函数如:org.apache.http.conn.ssl.SSLSocketFactory类setHostnameVerifier函数等。
在终端设备上安装待测试的应用程序,以及配编写的Hook程序。本申请实施例中,可以仅使用终端设备完成应用程序的安全性测试,也可以使用测试设备配合终端设备完成应用程序的安全测试,此时,终端设备可以被称为被测设备。这里的终端设备为应用程序安装使用的设备,如手机、平板等;测试设备可以为有计算处理能力的设备,如PC等。
下文通过多个实施例来详细说明本申请提供的应用程序安全性测试方案。
实施例一
本实施例以仅使用终端设备完成应用程序安全性测试为例。
参见图1,图1为本申请实施例一中应用程序安全性测试流程示意图。具体步骤为:
步骤101,终端设备在运行应用程序的同时,运行Hook程序。
本步骤中终端设备可以通过自动化测试、手工测试,或使用该应用程序使该应用程序运行
无论在使用应用程序还是在测试应用程序,都需遍历整个应用程序中的所有控件,即所对应的所有用户界面(User Interface,UI);当然如果仅需要确定应用程序中的某个部分是否存在安全漏洞,只运行程序的某个部分即可。
当对应用程序进行自动化测试时,可以使用现有实现中的各种自动化测试方式。本申请实施例中为了简化测试中的遍历的逻辑,提高遍历效率,给出如下自动化测试方案:
参见图2,图2为本申请实施例一中自动化测试流程示意图。具体步骤为:
步骤201,终端设备根据测试脚本运行应用程序,获取所述应用程序当前运行UI上控件的控件信息,并计算各控件的特征值。
测试脚本根据要测试的应用程序预先编写,测试脚本的具体编写不作限制,只要在执行测试脚本时,能够使待测试的应用程序遍历所需要测试的UI即可,如可以按照深度优先的原则遍历,也可以按照广度优先的原则遍历。
终端设备获取的UI上控件的控件信息包括:控件类型、位置、大小、文字、是否可点击、是否禁止、资源ID等。
当一个UI界面上存在多个控件,分别计算各控件的特征值,在计算各控件的特征值时,可以根据各控件的控件信息按照预设规则计算特征值,如使用哈希、求平均等规则,使用计算出的特征值唯一标识一个控件。
终端设备在计算UI上的控件的特征值时,若任一控件对应动态生成的子控件,则在生成该控件的特征时,不使用该控件的子控件的控件信息,且不生成子控件的特征值。
如存在控件ListView、GridView、Webview的UI,忽略掉其对应的子控件。
参见图3,图3为本申请实施例一中UI上的控件示意图。在图3中控件ListView对应7个子控件,在进行UI上控件的特征值计算时,不计算控件ListView对应的7个子控件的特征值,在计算控件ListView的特征值时,也不考虑对应的7个子控件。
存在动态生成的子控件的控件为聊天室等控件,如果测试时间短,或者聊天室滚动内容少的时候,也可以部分考虑子控件,将一些相似的控件信息对应的控件作为同一控件。
步骤202,该终端设备根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,如果是,执行步骤204;否则,执行步骤203。
本步骤中UI对应的路径为从启动该应用程序的UI到当前UI的最短路径。
本步骤中根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,包括:
该终端设备将该UI上的各控件与对应路径上每个UI上的控件的特征值进行比较;
当所述路径上存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,该终端设备确定在对应路径上存在与该UI匹配的UI;
当所述路径上不存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,该终端设备确定在对应路径上不存在与该UI匹配的UI。
这里设置的预设阈值,根据实际应用配置,如2、3,即具体实现时,将不控件个数小于这个预设阈值的两个UI,近似地看作同一UI。
如一个UI存在三个控件,且特征值分别为5、16、8;另外一个UI也存在三个特征值,且特征值分别为5、8、16,则确定这两个UI匹配,为同一UI。
若预设阈值为2,一个UI存在5个控件,且特征值分别为1、2、3、4、5,另外一个UI存在4个控件,且特征值分别为2、3、4、5,则两个UI上的控件的特征值不同的个数为1,由于不同特征值的控件的个数小于2,因此,确定这两个UI匹配,为同一UI。
若预设阈值为2,一个UI存在5个控件,且特征值分别为1、2、3、4、5,另外一个UI存在4个控件,且特征值分别为5、6、7、8,则两个UI上的控件的特征值不同的个数为4,由于不同特征值的控件的个数大于2,因此,确定这两个UI不匹配,不为同一UI。
步骤203,该终端设备在所述路径末端添加该UI节点,并为该UI分配唯一标识,记录该UI上的各控件的特征值,执行步骤205。
参见图4,图4为已生成的UI路径示意图。图4中当前的UI路径为UI 0--UI 1--UI2--UI 3。
当确定对应路径,即图4中的路径上不存在与当前遍历到的UI匹配的UI,则确定该UI为一个新的UI,为该UI分配唯一标识,如4,该UI记录为UI 4,将UI 4在图4所示的路径末端添加该UI为节点UI 4,添加UI 4后的路径为UI 0--UI 1--UI 2--UI 3—UI 4,并记录UI4上的各控件的特征值。
本申请实施例中为UI分配唯一标识,可以为当前UI分配当前已在路径上的UI的标识之外的标识即可;也可以通过预设规则,如根据UI的控件的特征值为该UI确定唯一标识,这里不作限制。
步骤204,该终端设备将生成该UI的控件标记为结束状态,并更新UI路径。
当确定对应路径,即图4中的路径上存在与当前遍历到的UI匹配的UI,如UI 1,确定当前遍历到的UI为一个旧的UI,并将当前遍历到的UI标记为UI 1,并将生成该UI的控件标记为结束状态,更新后的UI路径为UI 0--UI 1。
步骤205,该终端设备遍历该应用程序中的所有UI,直到所有UI上的所有控件都标记为结束状态,结束对该应用程序的测试。
到此为止,自动化测试过程结束。
步骤102,该终端设备在应用程序运行过程中,通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息。
该调用信息包括:输入参数,和/或返回值。
步骤103,该终端设备当遍历完所述应用程序中的所有控件时,确定在记录的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,执行步骤104;否则,执行步骤105。
步骤104,该终端设备确定该应用程序存在安全漏洞。
步骤105,该终端设备确定该应用程序安全。
配置匹配参数时,根据实际要测试的应用程序确定,在具体配置时,可以针对每个调用函数配置对应的匹配参数,也可以针对所有调用函数配置匹配参数,本申请具体实现时不作具体限制。
实施例二
本实施例以使用测试设备和被测设备组合完成应用程序的安全性测试。这里的测试设备可以为PC等;被测试设备,如手机、平板等。
在该实施例中,应用程序和Hook程序在被测设备上运行,被测设备和测试设备之间可以无线通信,也可以通过USB接口连接通信。
如对android程序测试时,使用android程序的被测设备(终端设备)上通常会安装ADB服务端程序,则在测试设备上安装ADB客户端程序,使用ADB客户端调用android***的uiautomator程序,即可获取终端设备上运行的应用程序的相关信息。
参见图5,图5为本申请实施例二中应用程序安全性测试流程示意图。具体步骤为:
步骤501,被测设备在运行应用程序的同时,运行Hook程序。
步骤502,该被测设备当在应用程序运行过程中,通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息,并发送给所述测试设备;直到遍历完所述应用程序中的所有控件。
该调用信息包括:输入参数,和/或返回值;
步骤503,测试设备接收并存储所述被测设备发送的调用函数的调用信息。
步骤504,当被测设备遍历完所述应用程序中的所有控件时,该测试设备确定在存储的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,执行步骤505;否则,执行步骤506。
步骤505,该测试设备确定该应用程序存在安全漏洞。
步骤506,该测试设备确定该应用程序安全。
本申请实施例中可以通过自动化测试、手工测试,获知使用所述应用程序使所述应用程序运行。
被测设备在测试设备对该应用程序进行自动化测试的过程中运行所述应用程序。
在对该应用程序进行自动化测试的过程中,测试设备根据预先存储的测试脚本通知所述被测设备运行所述应用程序;
被测设备接收所述测试设备的通知并根据通知的内容运行所述应用程序;
具体实现时,可以通过input指令指示被测设备对应用程序按照指令内容进行操作。
该被测设备根据所述测试设备的通知(input指令)运行所述应用程序;
该测试设备获取所述被测设备上应用程序当前运行UI上控件的控件信息;计算各控件的特征值;根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,其中,所述路径为从启动该应用程序的UI到当前UI的最短路径;如果是,则在所述路径末端添加该UI节点,并为该UI分配唯一标识,记录该UI上的各控件的特征值;否则,将生成该UI的控件标记为结束状态,并更新UI路径;遍历该应用程序中的所有UI,直到所有UI上的所有控件都标记为结束状态,结束对该应用程序的测试。
测试设备计算各控件的特征值时,若任一控件对应动态生成的子控件,则在生成该控件的特征时,不使用该控件的子控件的控件信息,且不生成子控件的特征值。
测试设备根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,包括:
将该UI上的各控件与对应路径上每个UI上的控件的特征值进行比较;
当所述路径上存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,确定在对应路径上存在与该UI匹配的UI;
当所述路径上不存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,确定在对应路径上不存在与该UI匹配的UI。
针对实施例一和实施例二的实现中,调用信息还包括:调用时间和调用类,用于定位应用程序中出现安全漏洞的位置,以及出现安全漏洞的原因,如在什么时间点击哪个控件导致安全漏洞的出现。具体实现如下:
若确定该应用程序存在安全漏洞,本申请实施例进一步确定与配置的匹配参数匹配的信息对应的调用函数的调用时间和调用类,并根据确定的调用时间和调用类查找到所述应用程序中存在安全漏洞的位置。
在对应用程序进行自动化测试遍历时通过录像或截屏方式记录遍历过程,然后根据调用时间确定触发漏洞时的程序界面,从而确定应用程序中存在安全漏洞的位置。
基于同样的发明构思,本申请还提出一种应用程序安全性测试装置,应用于安装应用程序的终端设备上。参见图6,图6为本申请实施例中安全性测试装置结构示意图。该装置包括:安装单元601、运行单元602、监控单元603、记录单元604和确定单元605;
安装单元601,用于安装Hook程序,所述Hook程序配置需监控的调用函数;
运行单元602,用于在运行安装的应用程序的同时,运行安装单元601安装的Hook程序;
监控单元603,用于运行单元602运行应用程序过程中,通过Hook程序监控配置的调用函数;
记录单元604,用于当监控单元603通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息;该调用信息包括:输入参数,和/或返回值;
确定单元605,用于当运行单元602遍历完所述应用程序中的所有控件时,确定在记录单元604记录的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全。
较佳地,该装置进一步包括:测试单元606;
测试单元606,用于通过自动化测试该应用程序使该应用程序运行时,根据测试脚本运行所述应用程序,获取所述应用程序当前运行UI上控件的控件信息;计算各控件的特征值;根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,其中,所述路径为从启动该应用程序的UI到当前UI的最短路径;如果是,则在所述路径末端添加该UI节点,并为该UI分配唯一标识,记录该UI上的各控件的特征值;否则,将生成该UI的控件标记为结束状态,并更新UI路径;遍历该应用程序中的所有UI,直到所有UI上的所有控件都标记为结束状态,结束对该应用程序的测试。
较佳地,
所述测试单元,用于计算各控件的特征值时,若任一控件对应动态生成的子控件,则在生成该控件的特征时,不使用该控件的子控件的控件信息,且不生成子控件的特征值。
较佳地,
所述测试单元,具体用于根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI时,将该UI上的各控件与对应路径上每个UI上的控件的特征值进行比较;当所述路径上存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,确定在对应路径上存在与该UI匹配的UI;当所述路径上不存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,确定在对应路径上不存在与该UI匹配的UI。
较佳地,
记录单元604,记录的调用信息还包括:调用时间和调用类;
确定单元605,进一步用于若确定该应用程序存在安全漏洞,进一步确定与配置的匹配参数匹配的信息对应的调用函数的调用时间和调用类,并根据确定的调用时间和调用类查找到所述应用程序中存在安全漏洞的位置。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
本申请各实施例中的各单元可以以机械方式或电子方式实现。例如,一个硬件模块可以包括专门设计的永久性电路或逻辑器件(如专用处理器,如FPGA或ASIC)用于完成特定的操作。硬件模块也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理器或其它可编程处理器)用于执行特定操作。至于具体采用机械方式,或是采用专用的永久性电路,或是采用临时配置的电路(如由软件进行配置)来实现硬件模块,可以根据成本和时间上的考虑来决定。
以上对本申请具体实施例中的应用程序安全性测试装置进行了说明,下面给出本申请具体实施例中终端设备的硬件架构组成,该设备是可以软硬件结合的可编程设备,具体参见图7,图7为本申请具体实施例中应用程序安全性测试的终端设备的硬件架构组成示意图。该终端设备可包括:处理器710,存储器720,端口730以及总线740。处理器710和存储器720通过总线740互联。处理器710可通过端口730获取和输出数据;其中,
安装601被处理器710执行时可以为:用于安装Hook程序,所述Hook程序配置需监控的调用函数;
运行单元602被处理器710执行时可以为:在运行安装的应用程序的同时,运行安装单元601安装的Hook程序;
监控单元603被处理器710执行时可以为:运行单元602运行应用程序过程中,通过Hook程序监控配置的调用函数;
记录单元604被处理器710执行时可以为:用于当监控单元603通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息;该调用信息包括:输入参数,和/或返回值;
确定单元605被处理器710执行时可以为:用于当运行单元602遍历完所述应用程序中的所有控件时,确定在记录单元604记录的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全。
测试单元606被处理器710执行时可以为:当运行单元602在对所述应用程序运行过程为,对该应用程序进行自动化测试的过程时,根据测试脚本运行所述应用程序,获取所述应用程序当前运行UI上控件的控件信息;计算各控件的特征值;根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,其中,所述路径为从启动该应用程序的UI到当前UI的最短路径;如果是,则在所述路径末端添加该UI节点,并为该UI分配唯一标识,记录该UI上的各控件的特征值;否则,将生成该UI的控件标记为结束状态,并更新UI路径;遍历该应用程序中的所有UI,直到所有UI上的所有控件都标记为结束状态,结束对该应用程序的测试。
由此可以看出,当存储在存储器720中的指令模块被处理器710执行时,可实现前述技术方案中安装单元、运行单元、监控单元、记录单元、确定单元和测试单元的各种功能。
另外,本发明的实施例中可以通过由设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本发明。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和/或内存)中执行。因此,这样的存储介质也构成了本发明。存储介质可以使用任何类型的记录方式,例如纸张存储介质(如纸带等)、磁存储介质(如软盘、硬盘、闪存等)、光存储介质(如CD-ROM等)、磁光存储介质(如MO等)等。
因此,本发明还公开了一种存储介质,其中存储有数据处理程序,该数据处理程序用于执行本发明上述技术方案。
需要说明的是,图7所示的终端设备只是一个具体的例子,也可以通过其他的与本实施例描述不同结构实现,例如,执行上述指令代码时所完成的操作,也可以由特定应用专用集成电路(ASIC)实现。另外,上述的处理器710可以是一个或多个,如果是多个,则由多个处理器共同负责读取和执行所述指令代码。因此,本申请对终端设备的具体结构不作具体限定。
基于同样的发明构思,本申请还提出一种应用程序安全性测试***。参见图8,图8为本申请实施例中应用程序安全性测试***示意图。该***包括:测试设备和被测设备;
被测设备,用于安装应用程序和Hook程序,所述Hook程序配置需监控的调用函数;在运行应用程序的同时,运行Hook程序;当在应用程序运行过程中,通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息,并发送给所述测试设备;直到遍历完所述应用程序中的所有控件;该调用信息包括:输入参数,和/或返回值;
测试设备,用于接收并存储所述被测设备发送的调用函数的调用信息;当所述被测设备遍历完所述应用程序中的所有控件时,确定在存储的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全。
较佳地,
测试设备,用于在所述测试设备对该应用程序进行自动化测试的过程中运行所述应用程序,在对该应用程序进行自动化测试的过程中,所述测试设备根据预先存储的测试脚本通知所述被测设备运行所述应用程序;获取所述被测设备上应用程序当前运行用户界面UI上控件的控件信息;计算各控件的特征值;根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,其中,所述路径为从启动该应用程序的UI到当前UI的最短路径;如果是,则在所述路径末端添加该UI节点,并为该UI分配唯一标识,记录该UI上的各控件的特征值;否则,将生成该UI的控件标记为结束状态,并更新UI路径;遍历该应用程序中的所有UI,直到所有UI上的所有控件都标记为结束状态,结束对该应用程序的测试;
被测设备,用于接收所述测试设备的通知并根据通知的内容运行所述应用程序。
综上所述,本申请通过配置的Hook程序,在应用程序运行时,记录Hook程序中配置的调用函数的调用信息,通过记录的调用信息确定该应用程序是否存在安全漏洞。通过该技术方案能够提高应用程序安全性测试的准确性。
并且通过提供一种自动化测试方法运行应用程序,提高自动化测试的效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (15)
1.一种应用程序安全性测试方法,应用于安装应用程序的终端设备上,其特征在于,该方法包括:
该终端设备安装钩子Hook程序,所述Hook程序配置需监控的调用函数;
在通过自动化测试应用程序使该应用程序运行的同时,运行Hook程序;
当在应用程序运行过程中,通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息;该调用信息包括:输入参数,和/或返回值;
当遍历完所述应用程序中的所有控件时,确定在记录的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全;
其中,通过自动化测试该应用程序使该应用程序运行的过程,包括:
根据测试脚本运行所述应用程序,获取所述应用程序当前运行用户界面UI上控件的控件信息;计算各控件的特征值;
根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,其中,所述路径为从启动该应用程序的UI到当前UI的最短路径;如果是,则在所述路径末端添加该UI节点,并为该UI分配唯一标识,记录该UI上的各控件的特征值;否则,将生成该UI的控件标记为结束状态,并更新UI路径;
遍历该应用程序中的所有UI,直到所有UI上的所有控件都标记为结束状态,结束对该应用程序的测试。
2.根据权利要求1所述的方法,其特征在于,
所述计算各控件的特征值时,若任一控件对应动态生成的子控件,则在生成该控件的特征时,不使用该控件的子控件的控件信息,且不生成子控件的特征值。
3.根据权利要求1所述的方法,其特征在于,所述根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,包括:
将该UI上的各控件与对应路径上每个UI上的控件的特征值进行比较;
当所述路径上存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,确定在对应路径上存在与该UI匹配的UI;
当所述路径上不存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,确定在对应路径上不存在与该UI匹配的UI。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述调用信息还包括:调用时间和调用类;
若确定该应用程序存在安全漏洞,所述方法进一步包括:确定与配置的匹配参数匹配的信息对应的调用函数的调用时间和调用类,并根据确定的调用时间和调用类查找到所述应用程序中存在安全漏洞的位置。
5.一种应用程序安全性测试方法,应用于包括测试设备和被测设备的***中,其特征在于,
所述被测设备安装应用程序和钩子Hook程序,所述Hook程序配置需监控的调用函数;在通过自动化测试应用程序使应用程序运行的同时,运行Hook程序;当在应用程序运行过程中,通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息,并发送给所述测试设备;直到遍历完所述应用程序中的所有控件;该调用信息包括:输入参数,和/或返回值;
所述测试设备接收并存储所述被测设备发送的调用函数的调用信息;当所述被测设备遍历完所述应用程序中的所有控件时,确定在存储的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全;
所述测试设备通过自动化测试应用程序使应用程序运行的过程,包括:
所述测试设备获取所述被测设备上应用程序当前运行用户界面UI上控件的控件信息;计算各控件的特征值;根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,其中,所述路径为从启动该应用程序的UI到当前UI的最短路径;如果是,则在所述路径末端添加该UI节点,并为该UI分配唯一标识,记录该UI上的各控件的特征值;否则,将生成该UI的控件标记为结束状态,并更新UI路径;遍历该应用程序中的所有UI,直到所有UI上的所有控件都标记为结束状态,结束对该应用程序的测试。
6.根据权利要求5所述的方法,其特征在于,所述被测设备通过自动化测试应用程序使应用程序运行,包括:
所述被测设备在所述测试设备对该应用程序进行自动化测试的过程中运行所述应用程序。
7.根据权利要求6所述的方法,其特征在于,所述被测设备在所述测试设备对该应用程序进行自动化测试的过程中运行所述应用程序,包括:
在对该应用程序进行自动化测试的过程中,所述测试设备根据预先存储的测试脚本通知所述被测设备运行所述应用程序;
所述被测设备接收所述测试设备的通知并根据通知的内容运行所述应用程序。
8.一种应用程序安全性测试装置,应用于安装应用程序的终端设备上,其特征在于,该装置包括:安装单元、运行单元、监控单元、记录单元和确定单元;
所述安装单元,用于安装钩子Hook程序,所述Hook程序配置需监控的调用函数;
所述运行单元,用于在通过自动化测试应用程序使该安装的应用程序运行的同时,运行所述安装单元安装的Hook程序;
所述监控单元,用于所述运行单元运行应用程序过程中,通过Hook程序监控配置的调用函数;
所述记录单元,用于当所述监控单元通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息;该调用信息包括:输入参数,和/或返回值;
所述确定单元,用于当所述运行单元遍历完所述应用程序中的所有控件时,确定在所述记录单元记录的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全;
测试单元,用于在通过自动化测试该应用程序使该应用程序运行时,根据测试脚本运行所述应用程序,获取所述应用程序当前运行用户界面UI上控件的控件信息;计算各控件的特征值;根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,其中,所述路径为从启动该应用程序的UI到当前UI的最短路径;如果是,则在所述路径末端添加该UI节点,并为该UI分配唯一标识,记录该UI上的各控件的特征值;否则,将生成该UI的控件标记为结束状态,并更新UI路径;遍历该应用程序中的所有UI,直到所有UI上的所有控件都标记为结束状态,结束对该应用程序的测试。
9.根据权利要求8所述的装置,其特征在于,
所述测试单元,用于计算各控件的特征值时,若任一控件对应动态生成的子控件,则在生成该控件的特征时,不使用该控件的子控件的控件信息,且不生成子控件的特征值。
10.根据权利要求8所述的装置,其特征在于,
所述测试单元,具体用于根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI时,将该UI上的各控件与对应路径上每个UI上的控件的特征值进行比较;当所述路径上存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,确定在对应路径上存在与该UI匹配的UI;当所述路径上不存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,确定在对应路径上不存在与该UI匹配的UI。
11.根据权利要求8-10任意一项所述的装置,其特征在于,
所述记录单元,记录的调用信息还包括:调用时间和调用类;
所述确定单元,进一步用于若确定该应用程序存在安全漏洞,进一步确定与配置的匹配参数匹配的信息对应的调用函数的调用时间和调用类,并根据确定的调用时间和调用类查找到所述应用程序中存在安全漏洞的位置。
12.一种应用程序安全性测试***,其特征在于,该***包括:测试设备和被测设备;
所述被测设备,用于安装应用程序和钩子Hook程序,所述Hook程序配置需监控的调用函数;在运行应用程序的同时,运行Hook程序;当在应用程序运行过程中,通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息,并发送给所述测试设备;直到遍历完所述应用程序中的所有控件;该调用信息包括:输入参数,和/或返回值;
所述测试设备,用于接收并存储所述被测设备发送的调用函数的调用信息;当所述被测设备遍历完所述应用程序中的所有控件时,确定在存储的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全;
所述测试设备,进一步用于在对该应用程序进行自动化测试的过程中,获取所述被测设备上应用程序当前运行用户界面UI上控件的控件信息;计算各控件的特征值;根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,其中,所述路径为从启动该应用程序的UI到当前UI的最短路径;如果是,则在所述路径末端添加该UI节点,并为该UI分配唯一标识,记录该UI上的各控件的特征值;否则,将生成该UI的控件标记为结束状态,并更新UI路径;遍历该应用程序中的所有UI,直到所有UI上的所有控件都标记为结束状态,结束对该应用程序的测试。
13.根据权利要求12所述的***,其特征在于,
所述被测设备,用于接收所述测试设备的通知并根据通知的内容运行所述应用程序。
14.一种终端设备,其特征在于,处理器和存储器;所述存储器中存储有计算机可读指令,使所述处理器执行权利要求1-7中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,存储有数据处理程序,所述数据处理程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610122177.8A CN105550585B (zh) | 2016-03-02 | 2016-03-02 | 一种应用程序安全性测试方法、装置和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610122177.8A CN105550585B (zh) | 2016-03-02 | 2016-03-02 | 一种应用程序安全性测试方法、装置和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105550585A CN105550585A (zh) | 2016-05-04 |
CN105550585B true CN105550585B (zh) | 2020-09-04 |
Family
ID=55829772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610122177.8A Active CN105550585B (zh) | 2016-03-02 | 2016-03-02 | 一种应用程序安全性测试方法、装置和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105550585B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106203077B (zh) * | 2016-06-28 | 2019-06-07 | 珠海豹趣科技有限公司 | 一种复制信息的处理方法、装置及电子设备 |
CN106649084B (zh) * | 2016-09-14 | 2019-05-24 | 腾讯科技(深圳)有限公司 | 函数调用信息的获取方法及装置、测试设备 |
CN106919838B (zh) * | 2016-11-10 | 2020-11-03 | 深圳市安之天信息技术有限公司 | 一种恶意代码加密配置定位方法及*** |
CN108734007A (zh) * | 2017-04-13 | 2018-11-02 | ***通信集团上海有限公司 | 一种监控应用程序的处理方法及装置 |
CN107480029B (zh) * | 2017-08-02 | 2019-02-15 | 北京深思数盾科技股份有限公司 | 一种函数调用时间的监控方法及装置 |
CN109558307B (zh) * | 2017-09-26 | 2022-03-22 | 卓望数码技术(深圳)有限公司 | 一种游戏程序的测试方法及*** |
CN109471804A (zh) * | 2018-11-14 | 2019-03-15 | 苏州科达科技股份有限公司 | iOS中的应用检测方法、装置及存储介质 |
CN110865799A (zh) * | 2019-10-31 | 2020-03-06 | 爱钱进(北京)信息科技有限公司 | 控件信息显示方法、装置以及存储介质 |
CN112631904A (zh) * | 2020-12-17 | 2021-04-09 | 展讯通信(上海)有限公司 | 函数调用信息的记录方法及设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364988A (zh) * | 2008-09-26 | 2009-02-11 | 深圳市迅雷网络技术有限公司 | 一种确定网页安全性的方法和装置 |
CN101551842A (zh) * | 2009-05-05 | 2009-10-07 | 天津大学 | 一种基于模型驱动的安全测试方法 |
CN102542201A (zh) * | 2011-12-26 | 2012-07-04 | 北京奇虎科技有限公司 | 一种网页中恶意代码的检测方法及*** |
CN102651060A (zh) * | 2012-03-31 | 2012-08-29 | 北京奇虎科技有限公司 | 一种漏洞检测的方法和*** |
US8468595B1 (en) * | 2006-03-22 | 2013-06-18 | Trend Micro Incorporated | Content filtering prior to data encryption |
CN103473505A (zh) * | 2012-06-06 | 2013-12-25 | 腾讯科技(深圳)有限公司 | 一种软件漏洞的扫描提示方法和装置 |
CN103617396A (zh) * | 2013-11-29 | 2014-03-05 | 杭州华三通信技术有限公司 | 一种漏洞利用的检测方法和*** |
CN104683327A (zh) * | 2015-01-29 | 2015-06-03 | 中国科学院信息工程研究所 | 一种Android软件用户登录界面安全性检测方法 |
-
2016
- 2016-03-02 CN CN201610122177.8A patent/CN105550585B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8468595B1 (en) * | 2006-03-22 | 2013-06-18 | Trend Micro Incorporated | Content filtering prior to data encryption |
CN101364988A (zh) * | 2008-09-26 | 2009-02-11 | 深圳市迅雷网络技术有限公司 | 一种确定网页安全性的方法和装置 |
CN101551842A (zh) * | 2009-05-05 | 2009-10-07 | 天津大学 | 一种基于模型驱动的安全测试方法 |
CN102542201A (zh) * | 2011-12-26 | 2012-07-04 | 北京奇虎科技有限公司 | 一种网页中恶意代码的检测方法及*** |
CN102651060A (zh) * | 2012-03-31 | 2012-08-29 | 北京奇虎科技有限公司 | 一种漏洞检测的方法和*** |
CN103473505A (zh) * | 2012-06-06 | 2013-12-25 | 腾讯科技(深圳)有限公司 | 一种软件漏洞的扫描提示方法和装置 |
CN103617396A (zh) * | 2013-11-29 | 2014-03-05 | 杭州华三通信技术有限公司 | 一种漏洞利用的检测方法和*** |
CN104683327A (zh) * | 2015-01-29 | 2015-06-03 | 中国科学院信息工程研究所 | 一种Android软件用户登录界面安全性检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105550585A (zh) | 2016-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105550585B (zh) | 一种应用程序安全性测试方法、装置和*** | |
CN107979508B (zh) | 微服务测试方法及装置 | |
Vidas et al. | A5: Automated analysis of adversarial android applications | |
US10719610B2 (en) | Generating security manifests for software components using binary static analysis | |
US10481964B2 (en) | Monitoring activity of software development kits using stack trace analysis | |
US9715421B2 (en) | Wrapped applications providing operational insight to users based on rules for acceptable operational state performance | |
US11055416B2 (en) | Detecting vulnerabilities in applications during execution | |
AU2021206497B2 (en) | Method and apparatus for authority control, computer device and storage medium | |
US10296311B2 (en) | Finding uninitialized variables outside the local scope | |
KR102105753B1 (ko) | 모바일 어플리케이션 환경설정을 시험하기 위한 시험 항목 자동 생성 방법 및 시스템 | |
CN109684795B (zh) | 应用程序反调试的方法、装置及电子设备 | |
CN108021791B (zh) | 数据保护方法及装置 | |
CN109508249B (zh) | 崩溃处理方法、装置及电子设备 | |
US9069895B2 (en) | Analyzing concurrent debugging sessions | |
US20180144134A1 (en) | Detection system and detection method | |
CN112182581B (zh) | 应用测试方法、装置、应用测试设备和存储介质 | |
US20160210223A1 (en) | Detecting potential class loader problems using the class search path sequence for each class loader | |
US20230315620A1 (en) | System and Method for Diagnosing a Computing Device in Safe Mode | |
US11392686B2 (en) | Detecting stack cookie utilization in a binary software component using binary static analysis | |
Johnson et al. | Dazed droids: A longitudinal study of android inter-app vulnerabilities | |
KR101434094B1 (ko) | 안드로이드 플랫폼에서 인텐트 모니터링을 통한 유해 어플리케이션 차단 방법 | |
CN114254301A (zh) | 基于PaC管理安全策略的方法及装置 | |
CN110443043B (zh) | 一种对安卓应用程序的漏洞检测方法以及设备 | |
US10824540B2 (en) | Terminal failure buster | |
CN109933357B (zh) | 应用程序升级方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |