CN105550585A - 一种应用程序安全性测试方法、装置和系统 - Google Patents

一种应用程序安全性测试方法、装置和系统 Download PDF

Info

Publication number
CN105550585A
CN105550585A CN201610122177.8A CN201610122177A CN105550585A CN 105550585 A CN105550585 A CN 105550585A CN 201610122177 A CN201610122177 A CN 201610122177A CN 105550585 A CN105550585 A CN 105550585A
Authority
CN
China
Prior art keywords
application program
control
eigenwert
call function
path
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.)
Granted
Application number
CN201610122177.8A
Other languages
English (en)
Other versions
CN105550585B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610122177.8A priority Critical patent/CN105550585B/zh
Publication of CN105550585A publication Critical patent/CN105550585A/zh
Application granted granted Critical
Publication of CN105550585B publication Critical patent/CN105550585B/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/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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software 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程序。
本步骤中终端设备可以通过自动化测试、手工测试,或使用该应用程序使该应用程序运行
无论在使用应用程序还是在测试应用程序,都需遍历整个应用程序中的所有控件,即所对应的所有用户界面(UserInterface,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路径为UI0--UI1--UI2--UI3。
当确定对应路径,即图4中的路径上不存在与当前遍历到的UI匹配的UI,则确定该UI为一个新的UI,为该UI分配唯一标识,如4,该UI记录为UI4,将UI4在图4所示的路径末端添加该UI为节点UI4,添加UI4后的路径为UI0--UI1--UI2--UI3—UI4,并记录UI4上的各控件的特征值。
本申请实施例中为UI分配唯一标识,可以为当前UI分配当前已在路径上的UI的标识之外的标识即可;也可以通过预设规则,如根据UI的控件的特征值为该UI确定唯一标识,这里不作限制。
步骤204,该终端设备将生成该UI的控件标记为结束状态,并更新UI路径。
当确定对应路径,即图4中的路径上存在与当前遍历到的UI匹配的UI,如UI1,确定当前遍历到的UI为一个旧的UI,并将当前遍历到的UI标记为UI1,并将生成该UI的控件标记为结束状态,更新后的UI路径为UI0--UI1。
步骤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程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息;该调用信息包括:输入参数,和/或返回值;
当遍历完所述应用程序中的所有控件时,确定在记录的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全。
2.根据权利要求1所述的方法,其特征在于,所述应用程序运行过程为,通过自动化测试、手工测试,或使用该应用程序使该应用程序运行的过程。
3.根据权利要求2所述的方法,其特征在于,所述通过自动化测试该应用程序使该应用程序运行的过程,包括:
根据测试脚本运行所述应用程序,获取所述应用程序当前运行用户界面UI上控件的控件信息;计算各控件的特征值;
根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,其中,所述路径为从启动该应用程序的UI到当前UI的最短路径;如果是,则在所述路径末端添加该UI节点,并为该UI分配唯一标识,记录该UI上的各控件的特征值;否则,将生成该UI的控件标记为结束状态,并更新UI路径;
遍历该应用程序中的所有UI,直到所有UI上的所有控件都标记为结束状态,结束对该应用程序的测试。
4.根据权利要求3所述的方法,其特征在于,
所述计算各控件的特征值时,若任一控件对应动态生成的子控件,则在生成该控件的特征时,不使用该控件的子控件的控件信息,且不生成子控件的特征值。
5.根据权利要求3所述的方法,其特征在于,所述根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,包括:
将该UI上的各控件与对应路径上每个UI上的控件的特征值进行比较;
当所述路径上存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,确定在对应路径上存在与该UI匹配的UI;
当所述路径上不存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,确定在对应路径上不存在与该UI匹配的UI。
6.根据权利要求1-5任意一项所述的方法,其特征在于,所述调用信息还包括:调用时间和调用类;
若确定该应用程序存在安全漏洞,所述方法进一步包括:确定与配置的匹配参数匹配的信息对应的调用函数的调用时间和调用类,并根据确定的调用时间和调用类查找到所述应用程序中存在安全漏洞的位置。
7.一种应用程序安全性测试方法,应用于包括测试设备和被测设备的系统中,其特征在于,
所述被测设备安装应用程序和钩子Hook程序,所述Hook程序配置需监控的调用函数;在运行应用程序的同时,运行Hook程序;当在应用程序运行过程中,通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息,并发送给所述测试设备;直到遍历完所述应用程序中的所有控件;该调用信息包括:输入参数,和/或返回值;
所述测试设备接收并存储所述被测设备发送的调用函数的调用信息;当所述被测设备遍历完所述应用程序中的所有控件时,确定在存储的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全。
8.根据权利要求7所述的方法,其特征在于,
所述被测设备在所述测试设备对该应用程序进行自动化测试的过程中运行所述应用程序;
在对该应用程序进行自动化测试的过程中,所述测试设备根据预先存储的测试脚本通知所述被测设备运行所述应用程序;
所述被测设备接收所述测试设备的通知并根据通知的内容运行所述应用程序;
所述测试设备获取所述被测设备上应用程序当前运行用户界面UI上控件的控件信息;计算各控件的特征值;根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,其中,所述路径为从启动该应用程序的UI到当前UI的最短路径;如果是,则在所述路径末端添加该UI节点,并为该UI分配唯一标识,记录该UI上的各控件的特征值;否则,将生成该UI的控件标记为结束状态,并更新UI路径;遍历该应用程序中的所有UI,直到所有UI上的所有控件都标记为结束状态,结束对该应用程序的测试。
9.一种应用程序安全性测试装置,应用于安装应用程序的终端设备上,其特征在于,该装置包括:安装单元、运行单元、监控单元、记录单元和确定单元;
所述安装单元,用于安装钩子Hook程序,所述Hook程序配置需监控的调用函数;
所述运行单元,用于在运行安装的应用程序的同时,运行所述安装单元安装的Hook程序;
所述监控单元,用于所述运行单元运行应用程序过程中,通过Hook程序监控配置的调用函数;
所述记录单元,用于当所述监控单元通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息;该调用信息包括:输入参数,和/或返回值;
所述确定单元,用于当所述运行单元遍历完所述应用程序中的所有控件时,确定在所述记录单元记录的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全。
10.根据权利要求9所述的装置,其特征在于,该装置进一步包括:测试单元;
所述测试单元,用于通过自动化测试该应用程序使该应用程序运行时,根据测试脚本运行所述应用程序,获取所述应用程序当前运行用户界面UI上控件的控件信息;计算各控件的特征值;根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,其中,所述路径为从启动该应用程序的UI到当前UI的最短路径;如果是,则在所述路径末端添加该UI节点,并为该UI分配唯一标识,记录该UI上的各控件的特征值;否则,将生成该UI的控件标记为结束状态,并更新UI路径;遍历该应用程序中的所有UI,直到所有UI上的所有控件都标记为结束状态,结束对该应用程序的测试。
11.根据权利要求10所述的装置,其特征在于,
所述测试单元,用于计算各控件的特征值时,若任一控件对应动态生成的子控件,则在生成该控件的特征时,不使用该控件的子控件的控件信息,且不生成子控件的特征值。
12.根据权利要求10所述的装置,其特征在于,
所述测试单元,具体用于根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI时,将该UI上的各控件与对应路径上每个UI上的控件的特征值进行比较;当所述路径上存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,确定在对应路径上存在与该UI匹配的UI;当所述路径上不存在与该UI的控件的特征值不同的个数小于预设阈值的UI时,确定在对应路径上不存在与该UI匹配的UI。
13.根据权利要求9-12任意一项所述的装置,其特征在于,
所述记录单元,记录的调用信息还包括:调用时间和调用类;
所述确定单元,进一步用于若确定该应用程序存在安全漏洞,进一步确定与配置的匹配参数匹配的信息对应的调用函数的调用时间和调用类,并根据确定的调用时间和调用类查找到所述应用程序中存在安全漏洞的位置。
14.一种应用程序安全性测试系统,其特征在于,该系统包括:测试设备和被测设备;
所述被测设备,用于安装应用程序和钩子Hook程序,所述Hook程序配置需监控的调用函数;在运行应用程序的同时,运行Hook程序;当在应用程序运行过程中,通过Hook程序监控到与配置的调用函数匹配的调用函数时,记录该调用函数的调用信息,并发送给所述测试设备;直到遍历完所述应用程序中的所有控件;该调用信息包括:输入参数,和/或返回值;
所述测试设备,用于接收并存储所述被测设备发送的调用函数的调用信息;当所述被测设备遍历完所述应用程序中的所有控件时,确定在存储的调用函数的调用信息中是否存在与配置的匹配参数匹配的信息,如果是,确定该应用程序存在安全漏洞;否则,确定该应用程序安全。
15.根据权利要求14所述的系统,其特征在于,
所述测试设备,用于在所述测试设备对该应用程序进行自动化测试的过程中运行所述应用程序,在对该应用程序进行自动化测试的过程中,所述测试设备根据预先存储的测试脚本通知所述被测设备运行所述应用程序;获取所述被测设备上应用程序当前运行用户界面UI上控件的控件信息;计算各控件的特征值;根据该UI上的各控件的特征值确定在对应路径上是否存在与该UI匹配的UI,其中,所述路径为从启动该应用程序的UI到当前UI的最短路径;如果是,则在所述路径末端添加该UI节点,并为该UI分配唯一标识,记录该UI上的各控件的特征值;否则,将生成该UI的控件标记为结束状态,并更新UI路径;遍历该应用程序中的所有UI,直到所有UI上的所有控件都标记为结束状态,结束对该应用程序的测试;
所述被测设备,用于接收所述测试设备的通知并根据通知的内容运行所述应用程序。
CN201610122177.8A 2016-03-02 2016-03-02 一种应用程序安全性测试方法、装置和系统 Active CN105550585B (zh)

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 true CN105550585A (zh) 2016-05-04
CN105550585B 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)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106203077A (zh) * 2016-06-28 2016-12-07 北京金山安全软件有限公司 一种复制信息的处理方法、装置及电子设备
CN106649084A (zh) * 2016-09-14 2017-05-10 腾讯科技(深圳)有限公司 函数调用信息的获取方法及装置、测试设备
CN106919838A (zh) * 2016-11-10 2017-07-04 深圳市安之天信息技术有限公司 一种恶意代码加密配置定位方法及系统
CN107480029A (zh) * 2017-08-02 2017-12-15 北京深思数盾科技股份有限公司 一种函数调用时间的监控方法及装置
CN108734007A (zh) * 2017-04-13 2018-11-02 中国移动通信集团上海有限公司 一种监控应用程序的处理方法及装置
CN109471804A (zh) * 2018-11-14 2019-03-15 苏州科达科技股份有限公司 iOS中的应用检测方法、装置及存储介质
CN109558307A (zh) * 2017-09-26 2019-04-02 卓望数码技术(深圳)有限公司 一种游戏程序的测试方法及系统
CN110865799A (zh) * 2019-10-31 2020-03-06 爱钱进(北京)信息科技有限公司 控件信息显示方法、装置以及存储介质
CN112631904A (zh) * 2020-12-17 2021-04-09 展讯通信(上海)有限公司 函数调用信息的记录方法及设备

Citations (8)

* Cited by examiner, † Cited by third party
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软件用户登录界面安全性检测方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
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软件用户登录界面安全性检测方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106203077A (zh) * 2016-06-28 2016-12-07 北京金山安全软件有限公司 一种复制信息的处理方法、装置及电子设备
CN106203077B (zh) * 2016-06-28 2019-06-07 珠海豹趣科技有限公司 一种复制信息的处理方法、装置及电子设备
CN106649084A (zh) * 2016-09-14 2017-05-10 腾讯科技(深圳)有限公司 函数调用信息的获取方法及装置、测试设备
CN106649084B (zh) * 2016-09-14 2019-05-24 腾讯科技(深圳)有限公司 函数调用信息的获取方法及装置、测试设备
CN106919838A (zh) * 2016-11-10 2017-07-04 深圳市安之天信息技术有限公司 一种恶意代码加密配置定位方法及系统
CN106919838B (zh) * 2016-11-10 2020-11-03 深圳市安之天信息技术有限公司 一种恶意代码加密配置定位方法及系统
CN108734007A (zh) * 2017-04-13 2018-11-02 中国移动通信集团上海有限公司 一种监控应用程序的处理方法及装置
CN107480029A (zh) * 2017-08-02 2017-12-15 北京深思数盾科技股份有限公司 一种函数调用时间的监控方法及装置
CN109558307A (zh) * 2017-09-26 2019-04-02 卓望数码技术(深圳)有限公司 一种游戏程序的测试方法及系统
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 展讯通信(上海)有限公司 函数调用信息的记录方法及设备

Also Published As

Publication number Publication date
CN105550585B (zh) 2020-09-04

Similar Documents

Publication Publication Date Title
CN105550585A (zh) 一种应用程序安全性测试方法、装置和系统
CN106294102B (zh) 应用程序的测试方法、客户端、服务器及系统
CN111353146B (zh) 应用程序敏感权限的检测方法、装置、设备和存储介质
US10210076B2 (en) White box testing
US11068602B2 (en) Server and method for checking vulnerability of mobile application
CN108182359B (zh) 一种测试可信环境下api安全性的方法、装置及存储介质
CN105426298A (zh) 一种基于adb的软件测试方法和系统
CN104036194B (zh) 一种应用程序中泄露隐私数据的漏洞检测方法及装置
CN110928770B (zh) 软件测试的方法、装置、系统、存储介质和电子设备
CN105740144A (zh) 一种Android移动终端的自动化测试方法及系统
CN104424423A (zh) 应用程序的权限确定方法和装置
CN106844219B (zh) 应用检测方法及应用检测装置
CN109815702B (zh) 软件行为的安全检测方法、装置及设备
Zhao et al. The game of twenty questions: Do you know where to log?
CN115080398A (zh) 一种接口自动化测试系统及方法
CN105512562B (zh) 一种漏洞挖掘方法、装置及电子设备
CN107145447B (zh) 检测内存泄漏的方法、装置及电子设备
CN113395287B (zh) 一种记录网络攻击ip和命令执行回显的方法和系统
CN117494638B (zh) 芯片功能的验证方法、验证平台、电子设备及存储介质
CN104063308A (zh) 数据的验证方法及装置
CN108628744B (zh) 故障诊断方法、装置及电子设备
US11573887B2 (en) Extracting code patches from binary code for fuzz testing
CN103914377A (zh) 接口测试方法及装置
KR20150038983A (ko) 객체 추출 기반의 어플리케이션 검증 방법 및 그 장치
KR102145324B1 (ko) 라이브러리 인젝션을 통한 취약점 분석 방법 및 서버

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