组件测试方法和装置的制造方法_5

文档序号:9471856阅读:来源:国知局
判断子模块E。
[0140] 判断子模块D2用于判断第二静态组件的属性中是否包括权限属性,权限属性是 指permission属性(非系统权限且添加签名级别保护的自定义权限,包括rea化ermission 和writepermiSSion),其中,在判断出第二静态组件的属性中包括权限属性的情况下,确定 第二静态组件为非目标组件,在判断出第二静态组件的属性中不包括权限属性的情况下, 确定第二静态组件为目标组件。
[0141] 判断子模块E用于判断第二静态组件的属性中是否包括权限属性,权限属性是指 permission属性(非系统权限且添加签名级别保护的自定义权限,包括rea化ermission和 writepermission),其中,在判断出第二静态组件的属性中包括权限属性的情况下,确定第 二静态组件为非目标组件,在判断出第二静态组件的属性中不包括权限属性的情况下,调 用判断子模块F。
[0142] 判断子模块F用于判断第二静态组件的属性中是否存在权限为经过签名级别保 护的子路径标签(即,path标签),即,在判断出第二静态组件的属性中不包括权限属性的 情况下,进一步判断第二静态组件的属性中是否存在子路径标签,并且子路径标签的权限 (即,path-permission)已经过签名级别保护,其中,在判断出第二静态组件的属性中存在 权限为经过签名级别保护的子路径标签的情况下,确定第二静态组件为非目标组件,在判 断出第二静态组件的属性中不存在权限为经过签名级别保护的子路径标签的情况下,确定 第二静态组件为目标组件。
[0143] 对于动态组件包括未通过系统类本地广播管理器注册的广播接收器组件的情况, 第四确定子单元802主要通过图19中示出的结构来执行根据java源文件确定待测试应 用程序动态组件中的目标组件,如图19所示,第四确定子单元802主要包括第H读取模块 8021和第H判断模块8022,其中:
[0144] 第H读取模块8021用于读取java源文件的文本内容,得到多个动态组件及每个 动态组件的属性。
[0145] 第H判断模块8022用于通过第一判断子模块80221和确定子模块80222判断第 一动态组件是否为目标组件,其中,第一动态组件为多个动态组件中的任一组件:
[0146] 第一判断子模块80221用于判断第一动态组件的属性中是否包括消息过滤器标 签,消息过滤器标签是指intent-filter标签,判断第一动态组件的属性中是否包括非系统 预定义的动作标签,动作标签是指action标签,W及判断第一动态组件是否通过未添加权 限校验的注册接收巧egisiterReceiver)接口动态注册,即,判断第一动态组件是否通过 注册接收巧egisiterReceiver)接口动态注册广播,并且所通过的注册接收接口是未权限 校验的接口,其中,权限校验是指permision校验,意思是非系统权限且添加签名级别保护 的权限。
[0147] 确定子模块80222用于在第一判断子模块80221判断出第一动态组件的属性中包 括消息过滤器标签、第一动态组件的属性中包括非系统预定义的动作标签、W及第一动态 组件通过未添加权限校验的注册接收接口动态注册的情况下,确定第一动态组件为目标组 件。
[014引从W上的描述中,可W看出,本发明采用静态和动态相结合的方式实现,通过归纳An化oidapp四类组件暴露的完整规则,静态分析An化oidManifest.xml文档和反编译的源 码确定app中哪些组件对外暴露的目标组件,对于app的Activity、Se;rvice和化oadcast Receiver暴露组件,自动发送异常Intent触发其响应,并通过系统日志信息自动判定app 是否出现异常;对于暴露的ContentProvider组件,审查源码查找可用的ContentURI,并 通过ContentResolver接口查询关联数据,输入崎形的ContentURI判定是否存在目录遍 历安全风险。相比现有检测方案,本发明实施例所提供的测试方法具有W下几点优势:1、 测试过程不需人工干预,自动化完成;2、组件暴露的检查规则更完备准确;3、实现自动化 Intent模拟发送和异常识别;4、检测结果不存在误报。
[0149] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0150] 在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有 详述的部分,可W参见其他实施例的相关描述。
[0151] 在本申请所提供的几个实施例中,应该理解到,所掲露的组件测试装置,可通过其 它的方式实现。其中,W上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅 仅为一种逻辑功能划分,实际实现时可W有另外的划分方式,例如多个单元或组件可W结 合或者可W集成到另一个系统,或一些特征可W忽略,或不执行。另一点,所显示或讨论的 相互之间的禪合或直接禪合或通信连接可W是通过一些接口,单元或模块的间接禪合或通 信连接,可W是电性或其它的形式。
[0152] 所述作为分离部件说明的单元可W是或者也可W不是物理上分开的,作为单元显 示的部件可W是或者也可W不是物理单元,即可W位于一个地方,或者也可W分布到多个 网络单元上。可W根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目 的。
[0153] 另外,在本发明各个实施例中的各功能单元可W集成在一个处理单元中,也可W 是各个单元单独物理存在,也可W两个或两个W上单元集成在一个单元中。上述集成的单 元既可W采用硬件的形式实现,也可W采用软件功能单元的形式实现。
[0154] 所述集成的单元如果W软件功能单元的形式实现并作为独立的产品销售或使用 时,可W存储在一个计算机可读取存储介质中。基于送样的理解,本发明的技术方案本质上 或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可ww软件产品的形式 体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用W使得一台计算机 设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部 或部分步骤。而前述的存储介质包括;U盘、只读存储器(ROM,ReacK)nlyMemo巧)、随机存 取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可W存储程序代码 的介质。
[0155] W上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本发明原理的前提下,还可W做出若干改进和润饰,送些改进和润饰也应 视为本发明的保护范围。
【主权项】
1. 一种组件测试方法,其特征在于,包括: 获取待测试应用程序中的目标组件的组件类型,其中,所述目标组件为允许被第三方 应用程序访问的组件; 获取与所述组件类型对应的测试指令; 发送所述测试指令至安装有所述待测试应用程序的目标设备; 获取所述目标设备对所述测试指令的响应结果;以及 根据所述响应结果确定所述目标组件的状态。2. 根据权利要求1所述的组件测试方法,其特征在于,所述目标组件包括以下至少之 一:所述待测试应用程序的静态组件中的活动组件、广播接收器组件和服务器组件以及所 述待测试应用程序的动态组件中未通过系统类本地广播管理器注册的广播接收器组件,其 中, 获取与所述组件类型对应的测试指令包括:获取所述测试指令中的空消息指令; 发送所述测试指令至目标设备包括:发送所述空消息指令至所述目标设备; 获取所述目标设备对所述测试指令的响应结果包括:获取所述目标设备的日志输出; 根据所述响应结果确定所述目标组件的状态包括:判断所述日志输出中的任一日志记 录是否同时包括目标包名和预设标识,其中,所述目标包名为所述应用程序的包名;以及在 判断出所述日志输出中的任一日志记录同时包括所述目标包名和所述预设标识的情况下, 确定所述目标组件处于所述预设标识对应的状态。3. 根据权利要求1所述的组件测试方法,其特征在于,所述目标组件包括所述待测试 应用程序的静态组件中的内容提供者组件,其中, 获取与所述组件类型对应的测试指令包括:获取所述测试指令中的访问路径查询指 令; 发送所述测试指令至目标设备包括:发送所述访问路径查询指令至所述目标设备的内 容接收接口; 获取所述目标设备对所述测试指令的响应结果包括:获取所述内容接收接口对所述访 问路径查询指令的查询响应; 根据所述响应结果确定所述目标组件的状态包括:判断所述查询响应是否表示查询失 败;以及在判断出所述查询响应表示查询失败的情况下,确定所述目标组件处于安全状态。4. 根据权利要求1所述的组件测试方法,其特征在于,在获取待测试应用程序中的目 标组件的组件类型之前,所述组件测试方法还包括通过以下方式确定所述目标组件: 解压缩所述待测试应用程序的安装文件,得到解压缩文件; 反编译所述解压缩文件,得到反编译文档;以及 根据所述反编译文档确定所述目标组件。5. 根据权利要求4所述的组件测试方法,其特征在于,所述解压缩文件包括所述待测 试应用程序的配置文档和对所述待测试应用程序的源代码进行编译得到的二进制文件,其 中, 反编译所述解压缩文件,得到反编译文档包括:将所述配置文档转换为xml文档;以及 将所述二进制文件反编译为java源文件; 根据所述反编译文档确定所述目标组件包括:根据所述xml文档确定所述待测试应用 程序的静态组件中的所述目标组件;以及根据所述java源文件确定所述待测试应用程序 的动态组件中的所述目标组件。6. 根据权利要求5所述的组件测试方法,其特征在于,所述静态组件包括以下至少之 一:活动组件、广播接收器组件和服务器组件,其中,根据所述xml文档确定所述待测试应 用程序的静态组件中的所述目标组件包括: 读取所述xml文档,并解析所述xml文档的根节点,得到多个所述静态组件及每个所述 静态组件的属性;以及 采用以下方式判断第一静态组件是否为所述目标组件,其中,所述第一静态组件为多 个所述静态组件中的任一组件: Al判断:判断所述第一静态组件的属性中是否包括开放属性,其中,在判断出所述第 一静态组件的属性中包括所述开放属性的情况下,执行Bl判断,在判断出所述第一静态组 件的属性中不包括所述开放属性的情况下,执行Cl判断; 所述Bl判断:判断所述开放属性的属性值是否为假,其中,在判断出所述开放属性的 属性值为假的情况下,确定所述第一静态组件为非目标组件,在判断出所述开放属性的属 性值为真的情况下,执行Dl判断; 所述Cl判断:判断所述第一静态组件的属性中是否包括消息过滤器标签,其中,在判 断出所述第一静态组件的属性中包括所述消息过滤器标签的情况下,执行所述Dl判断,在 判断出所述第一静态组件的属性中不包括所述消息过滤器标签的情况下,确定所述第一静 态组件为所述非目标组件; 所述Dl判断:判断所述第一静态组件的属性中是否包括权限属性,其中,在判断出所 述第一静态组件的属性中包括所述权限属性的情况下,确定所述第一静态组件为所述非目 标组件,在判断出所述第一静态组件的属性中不包括所述权限属性的情况下,确定所述第 一静态组件为所述目标组件。7. 根据权利要求5所述的组件测试方法,其特征在于,所述静态组件包括内容提供者 组件,根据所述xml文档确定所述待测试应用程序的静态组件中的所述目标组件包括: 读取所述xml文档,并解析所述xml文档的根节点,得到多个所述静态组件及每个所述 静态组件的属性;以及 采用以下方式判断第二静态组件是否为所述目标组件,其中,所述第二静态组件为多 个所述静态组件中的任一组件: A2判断:判断所述第二静态组件的属性中是否包括开放属性,其中,在判断出所述第 二静态组件的属性中包括所述开放属性的情况下,执行B2判断,在判断出所述第二静态组 件的属性中不包括所述开放属性
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1