CN116974715A - 调用信息的定位方法、装置、计算机设备和存储介质 - Google Patents

调用信息的定位方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN116974715A
CN116974715A CN202211614907.8A CN202211614907A CN116974715A CN 116974715 A CN116974715 A CN 116974715A CN 202211614907 A CN202211614907 A CN 202211614907A CN 116974715 A CN116974715 A CN 116974715A
Authority
CN
China
Prior art keywords
call
function
information
calling
relation
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
CN202211614907.8A
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.)
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 CN202211614907.8A priority Critical patent/CN116974715A/zh
Publication of CN116974715A publication Critical patent/CN116974715A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本申请涉及一种调用信息的定位方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:获取调用信息之间的函数调用关系集合,调用信息至少包括:调用函数以及函数字段,函数调用关系集合包括多个调用信息之间的函数调用关系;确定被调用的待定位调用信息;通过函数调用关系集合,构建与待定位调用信息匹配的函数调用关系链,函数调用关系链由多个相邻的调用信息组成,相邻调用信息之间存在函数调用关系,且函数调用关系链的终止调用信息为待定位调用信息;对每一函数调用关系链进行信息分析处理,以确定目标调用信息,目标调用信息为请求调用待定位调用信息的调用信息。采用本方法能够提升调用信息的定位的效率。

Description

调用信息的定位方法、装置、计算机设备和存储介质
技术领域
本申请涉及互联网技术领域,特别是涉及一种调用信息的定位方法、装置、计算机设备和存储介质。
背景技术
随着信息技术的高速发展,用户个人信息的泄露可能会导致用户安全问题,因此对于用户隐私权限和用户个人信息的使用检测越来越严格。因此,对于应用程序(Application,APP)而言,在用户同意隐私协议之前,APP不能有收集用户隐私数据的行为,即使在用户同意隐私协议之后,APP搜集用户隐私数据的行为不能超出实际业务服务场景所需数据。
目前,通常需要对应用程序相关运行数据进行反编译,再对反编译得到的数据进行格式转换后通过静态扫描的方式,以查找对隐私函数的调用信息。然而,通过反编译以及格式转换通常需要数据编译以及转换的时间,且静态扫描具体需要进行字符串匹配的方式进行,导致对调用信息进行定位的耗时较长,即调用信息的定位的效率较低。因此,如何提升调用信息的定位的效率是亟需解决的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够降低对调用信息进行定位的耗时,以提升调用信息的定位的效率的调用信息的定位方法、装置、计算机设备和存储介质。
第一方面,本申请提供了一种调用信息的定位方法。所述方法包括:
获取调用信息之间的函数调用关系集合,调用信息至少包括:调用函数以及函数字段,函数调用关系集合包括多个调用信息之间的函数调用关系;
确定被调用的待定位调用信息;
通过函数调用关系集合,构建与待定位调用信息匹配的函数调用关系链,函数调用关系链由多个相邻的调用信息组成,相邻调用信息之间存在函数调用关系,且函数调用关系链的终止调用信息为待定位调用信息;
对每一函数调用关系链进行信息分析处理,以确定目标调用信息,目标调用信息为请求调用待定位调用信息的调用信息。
第二方面,本申请还提供了一种调用信息的定位装置。所述装置包括:
函数调用关系获取模块,用于获取调用信息之间的函数调用关系集合,调用信息至少包括:调用函数以及函数字段,函数调用关系集合包括多个调用信息之间的函数调用关系;
调用信息确定模块,用于确定被调用的待定位调用信息;
关系链构建模块,用于通过函数调用关系集合,构建与待定位调用信息匹配的函数调用关系链,函数调用关系链由多个相邻的调用信息组成,相邻调用信息之间存在函数调用关系,且函数调用关系链的终止调用信息为待定位调用信息;
定位模块,用于对每一函数调用关系链进行信息分析处理,以确定目标调用信息,目标调用信息为请求调用待定位调用信息的调用信息。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取调用信息之间的函数调用关系集合,调用信息至少包括:调用函数以及函数字段,函数调用关系集合包括多个调用信息之间的函数调用关系;
确定被调用的待定位调用信息;
通过函数调用关系集合,构建与待定位调用信息匹配的函数调用关系链,函数调用关系链由多个相邻的调用信息组成,相邻调用信息之间存在函数调用关系,且函数调用关系链的终止调用信息为待定位调用信息;
对每一函数调用关系链进行信息分析处理,以确定目标调用信息,目标调用信息为请求调用待定位调用信息的调用信息。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取调用信息之间的函数调用关系集合,调用信息至少包括:调用函数以及函数字段,函数调用关系集合包括多个调用信息之间的函数调用关系;
确定被调用的待定位调用信息;
通过函数调用关系集合,构建与待定位调用信息匹配的函数调用关系链,函数调用关系链由多个相邻的调用信息组成,相邻调用信息之间存在函数调用关系,且函数调用关系链的终止调用信息为待定位调用信息;
对每一函数调用关系链进行信息分析处理,以确定目标调用信息,目标调用信息为请求调用待定位调用信息的调用信息。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取调用信息之间的函数调用关系集合,调用信息至少包括:调用函数以及函数字段,函数调用关系集合包括多个调用信息之间的函数调用关系;
确定被调用的待定位调用信息;
通过函数调用关系集合,构建与待定位调用信息匹配的函数调用关系链,函数调用关系链由多个相邻的调用信息组成,相邻调用信息之间存在函数调用关系,且函数调用关系链的终止调用信息为待定位调用信息;
对每一函数调用关系链进行信息分析处理,以确定目标调用信息,目标调用信息为请求调用待定位调用信息的调用信息。
上述调用信息的定位方法、装置、计算机设备、存储介质和计算机程序产品,获取调用信息之间的函数调用关系集合,调用信息至少包括:调用函数以及函数字段,函数调用关系集合包括多个调用信息之间的函数调用关系,再确定被调用的待定位调用信息,并且通过函数调用关系集合,构建与待定位调用信息匹配的函数调用关系链,函数调用关系链由多个相邻的调用信息组成,相邻调用信息之间存在函数调用关系,且函数调用关系链的终止调用信息为待定位调用信息,最后对每一函数调用关系链进行信息分析处理,以确定目标调用信息,目标调用信息为请求调用待定位调用信息的调用信息。由于函数调用关系集合包括多个调用信息之间的函数调用关系,因此与待定位调用信息匹配的函数调用关系链中,能够准确定位每一与待定位调用信息存在函数调用关系的调用信息,且终止调用信息为待定位调用信息,也就是通过函数调用关系链,还能够准确描述对待定位调用信息进行调用时所需要经过的所有调用信息,由此能够基于函数调用关系链完成对目标调用信息的准确定位,避免数据编译以及转换所带来的时间消耗,由于仅需要对函数调用关系链中的调用信息进行信息匹配,还能够降低对所有字符串进行信息匹配的耗时,从而提升调用信息的定位的效率。
附图说明
图1为一个实施例中调用信息的定位方法的现有流程示意图;
图2为一个实施例中调用信息的定位方法的应用环境图;
图3为一个实施例中安卓系统下应用程序打包的流程示意图;
图4为一个实施例中通过Transform过程中构建调用信息之间的函数调用关系集合的流程示意图;
图5为一个实施例中调用信息的定位方法的流程示意图;
图6为一个实施例中获取调用信息之间的函数调用关系集合的部分流程示意图;
图7为一个实施例中调用节点与调用节点之间的有向边的示意图;
图8为一个实施例中构建函数调用关系图谱的流程示意图;
图9为一个实施例中构建函数调用关系链的部分流程示意图;
图10为一个实施例中基于函数调用关系图谱构建函数调用关系链的流程示意图;
图11为另一个实施例中获取调用信息之间的函数调用关系集合的部分流程示意图;
图12为一个实施例中划分多个函数调用关系子图的流程示意图;
图13为一个实施例中构建函数调用关系链的流程示意图;
图14为另一个实施例中调用信息的定位方法的流程示意图;
图15为一个实施例中调用函数的定位方法的流程示意图;
图16为一个实施例中调用函数的代码示意图;
图17为一个实施例中函数字段的定位方法的流程示意图;
图18为一个实施例中函数字段的代码示意图;
图19为一个实施例中构建函数调用关系的代码示意图;
图20为一个实施例中调用信息的定位方法的完整流程示意图;
图21为一个实施例中调用信息的定位装置的结构框图;
图22为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
随着信息技术的高速发展,用户个人信息的泄露可能会导致用户安全问题,因此对于用户隐私权限和用户个人信息的使用检测越来越严格,而对用户隐私权限和用户个人信息相关的敏感函数的排查以及定位通常需要耗费大量的人力和时间成本。基于此,各种APP而言,在用户同意隐私协议之前,不能有收集用户隐私数据的行为,即使在用户同意隐私协议之后,APP搜集用户隐私数据的行为不能超出实际业务服务场景所需数据。目前,需要对应用程序相关运行数据进行反编译,再对反编译得到的数据进行格式转换后通过静态扫描的方式查找对隐私函数的调用信息,为便于理解,以在安卓(Android)系统下对隐私函数的调用信息进行定位为例进行说明,如图1所示,安卓系统下的应用程序相关运行数据具体为安卓应用程序包(Android application package,APK),也就是对应用程序配置安卓应用程序包安卓应用程序包,通过命令行参数进行准备步骤,先确定是否存在应用程序的安卓应用程序包的相关文件,若不存在,则对安卓应用程序包解压处理,并在解压处理后的安卓应用程序包中提取安卓应用程序包中的dex文件,以及将dex文件转为Java归档(JavaArchive,JAR)文件,再通过反编译工具对JAR进行文件反编译处理,从而完成Java归档文件转Java文件的需求,即得到Java文件,然后对Java文件中的各字符串进行字符串匹配的方式,以查找对隐私函数的调用信息。
通过图1可知,通过反编译以及格式转换通常需要数据编译以及转换的时间,且需要对同一APP中的所有代码进行字符串匹配,导致对调用信息进行定位的耗时较长,即调用信息的定位的效率较低。因此,如何提升调用信息的定位的效率是亟需解决的问题。而本申请实施例提供的调用信息的定位方法能够降低对调用信息进行定位的耗时,以提升调用信息的定位的效率。
本申请实施例提供的调用信息的定位方法,可以应用于如图2所示的应用环境中。其中,终端202通过网络与服务器204进行通信。数据存储系统可以存储服务器204需要处理的数据。数据存储系统可以集成在服务器204上,也可以放在云上或其他服务器上。
具体地,以该方法应用于终端202为例进行说明,终端202先获取调用信息之间的函数调用关系集合,前述调用信息至少包括调用函数以及函数字段,而函数调用关系集合包括多个调用信息之间的函数调用关系。基于此,终端202再确定被调用的待定位调用信息,并通过所获取的函数调用关系集合,构建与待定位调用信息匹配的函数调用关系链,函数调用关系链由多个相邻的调用信息组成,相邻调用信息之间存在函数调用关系,且函数调用关系链的终止调用信息为待定位调用信息。由此,终端可以对每一函数调用关系链进行信息分析处理,以确定目标调用信息,目标调用信息为请求调用待定位调用信息的调用信息。通过函数调用关系链能够准确定位每一与待定位调用信息存在函数调用关系的调用信息,还能够准确描述对待定位调用信息进行调用时所需要经过的所有调用信息,由此能够基于函数调用关系链完成对目标调用信息的准确定位,避免数据编译以及转换所带来的时间消耗,由于仅需要对函数调用关系链中的调用信息进行信息匹配,还能够降低对所有字符串进行信息匹配的耗时,从而提升调用信息的定位的效率。
其中,终端202可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器204可以用独立的服务器或者是多个服务器组成的服务器集群或者云服务器来实现。
在实际应用中,本申请实施例提供的调用信息的定位方法可以应用于:对各应用程序中敏感信息相关的调用信息,或隐私信息相关的调用信息的定位。本申请实施例提供的调用信息的定位方法中需要获取调用信息之间的函数调用关系集合,而函数调用关系集合的生成过程具体在应用程序打包过程中,为便于理解,安卓系统下应用程序打包过程如图3所示,在aapt过程中会为Res目录下的应用程序资源生成R.java文件,还会为AndroidManinfest.xml生成Manifest.java文件。其次,在aidl过程中会基于应用程序中自定义的.aidl文件,生成每一.aidl文件所对应的Java文件。基于此,把所有的java代码编译成.class文件,.class文件至少包括三部分Java代码:应用程序开发人员自行编写的业务逻辑代码、在aapt过程中生成的R.java文件、在aidl过程中生成的Java文件。
进一步地,在dex过程中把所有.class文件转换为.dex文件,此时在dex过程中进行转换的.class文件还包括第三方库的.class文件。然后还是使用aapt,通过aapt的打包功能,把Res目录下的资源以及Assets目录下的文件打包成一个.ap文件。最后进行apkbuilde流程,也就是在apk builde流程中将所有的.dex文件、.ap文件以及AndroidManifest.xml打包成.apk文件,打包生成的.apk文件是一个未签名的apk文件,通过Jarsigner流程对打包生成的.apk文件进行签名处理,最后在Zipalign流程中对要发布的.apk文件进行对齐操作,以便在应用程序的实际运行时节省内存。
本申请实施例中提供的调用信息的定位方法,对调用信息之间的函数调用关系集合进行构建的过程具体发生在通过图3所介绍的dex过程中,也就是在把所有.class文件转换为dex文件的过程中构建调用信息之间的函数调用关系集合。具体利用Transform API,通过第三方的插件在.class文件转为dex文件之前,对一些.class文件进行处理。本申请具体在Transform过程302中,通过预设的第三方插件(gradle插件)使用字节码插装库ASM检查字节码,对于每一调用函数而言,对其他的调用函数的调用指令在ASM内会体现为一次visitMethodInsn()方法的调用,即能够得到一个调用函数与另一调用函数之间的函数调用关系。其次,每一调用函数具体对另一调用函数中一个函数字段的访问会体现为一个visitFieldInsn()调用,即能够得到一个调用函数与另一调用函数中具体函数字段之间的函数调用关系。因此,通过自定义MethodVisitor覆写前述visitMethodInsn()方法以及visitFieldInsn(),即可获知调用函数与调用函数之间的函数调用关系,以及调用函数与函数字段之间的函数调用关系,由此构建调用信息之间的函数调用关系集合。
因此,具体如图4所示,通过Transform过程302构建调用信息之间的函数调用关系集合后,通过转换过程使得.dex文件中能够包括调用信息之间的函数调用关系集合。从而在实际应用中,在确定被调用的待定位调用信息之后,通过通过函数调用关系集合,可以构建与待定位调用信息匹配的函数调用关系链。并进一地通过函数调用关系链确定请求调用待定位调用信息的目标调用信息,使得应用程序开发人员基于目标调用信息确定具体调用位置,若为新增的调用位置可以新增第三方代码列表记录前述目标调用信息,并对目标调用信息设置相应的调用权限,避免再次对待定位调用信息进行调用。
在一个实施例中,如图5所示,提供了一种调用信息的定位方法,以该方法由图2中的终端执行为例进行说明,可以理解的是,该方法也可以由服务器执行,或者由终端和服务器的交互实现。本实施例中,该方法包括以下步骤:
步骤502,获取调用信息之间的函数调用关系集合,调用信息至少包括:调用函数以及函数字段,函数调用关系集合包括多个调用信息之间的函数调用关系。
其中,函数调用关系集合包括多个调用信息之间的函数调用关系。且函数调用关系集合具体可以为函数调用关系图谱,或者为函数调用关系列表,此处不对函数调用关系集合的具体形式进行限定。其次,调用信息至少包括:调用函数以及函数字段,前述调用函数的一般形式为加上分号即构成函数语句,即调用函数用于执行特定的调用操作,而函数字段为调用函数中的代码字段,即函数字段为调用函数中执行具体操作的代码字段。因此,函数调用关系集合可以包括调用函数与调用函数之间的函数调用关系,或调用函数与函数字段之间的函数调用关系,此处不做限定。
具体地,终端获取调用信息之间的函数调用关系集合。通过图3的示例可知,在把所有.class文件转换为dex文件的过程中构建调用信息之间的函数调用关系集合,然后所构建的调用信息之间的函数调用关系集合会存储于dex文件,从而在打包生成.apk文件的过程中,将存储有调用信息之间的函数调用关系集合的dex文件一起打包,即应用程序中会存储有函数调用关系集合。那么在应用程序运行时即可获取预先构建的调用信息之间的函数调用关系集合。
示例性地,以函数调用关系集合包括调用函数与调用函数之间的函数调用关系为例进行说明,函数调用关系集合至少可以包括:调用函数A1对调用函数A2进行调用,调用函数A1对调用函数A3进行调用,调用函数A2对调用函数A3进行调用,以及调用函数A3对调用函数A4进行调用。其次,以函数调用关系集合包括调用函数与函数字段之间的函数调用关系为例进行说明,函数调用关系集合至少可以包括:调用函数A1对函数字段B1进行调用,调用函数A1对调用函数A2进行调用,调用函数A2对调用函数A3进行调用,以及调用函数A3对函数字段B1进行调用。
步骤504,确定被调用的待定位调用信息。
其中,待定位调用信息为被调用的调用信息,即待定位调用信息可以为被调用的调用函数,也可以为被调用的函数字段,待定位调用信息具体可以为与敏感信息相关的调用信息,或与隐私信息相关的调用信息,如待定位调用信息为:对与用户个人信息以及用户设备信息等需要用户授权或者经过各方充分授权的信息进行调用的调用信息。
具体地,终端确定被调用的待定位调用信息。终端可以通过敏感信息检测或隐私信息检测,当被调用的调用信息具体用于访问或读取敏感信息或隐私信息时,确定该调用信息为待定位调用信息,也就是确定与敏感信息或隐私信息相关的调用信息为待定位调用信息。或者,在实际应用中,在用户同意隐私协议之前,终端不应有收集读取用户隐私数据的调用行为,因此在用户同意隐私协议之前,终端用于执行对敏感信息或隐私信息的收集读取的调用行为的调用信息为待定位调用信息。例如,在用户同意之前,终端不能获取用户设备信息以及用户个人信息等隐私数据,因此,若终端在同意隐私协议之前存在对隐私数据进行收集读取的调用行为,那么终端将用于执行该调用行为的调用信息确定为待定位调用信息。
其次,在实际应用中,即使在用户同意隐私协议之后,收集用户隐私数据的行为也不能超出实现服务场景所必需的最低频率,也就是在用户同意隐私协议之后,终端用于执行对敏感信息或隐私信息的收集读取的调用行为的频率大于程序需求频率阈值时,确定用于执行该调用行为的调用信息为待定位调用信息,程序需求频率阈值可以为1分钟1次、2分钟1次、或启动程序后调用2次等,此处不作限定。例如,在启动某应用程序时需要收集用户设备信息,然而在应用程序的运行时刻不需要再次收集用户设备信息,若某应用程序运行时还在请求收集用户设备信息,此时也能够将用于执行收集用户设备信息的调用信息确定为待定位调用信息。
步骤506,通过函数调用关系集合,构建与待定位调用信息匹配的函数调用关系链,函数调用关系链由多个相邻的调用信息组成,相邻调用信息之间存在函数调用关系,且函数调用关系链的终止调用信息为待定位调用信息。
其中,函数调用关系链由多个相邻的调用信息组成,即一个函数调用关系链中至少包括两个调用信息,且前述两个调用信息相邻,以及相邻调用信息之间存在函数调用关系。示例性地,函数调用关系链C1包括调用函数A1、调用函数A2至调用函数A3,此时调用函数A1与调用函数A2之间相邻、以及调用函数A2与调用函数A3之间相邻。即调用函数A1与调用函数A2之间存在函数调用关系,且具体为调用函数A1对调用函数A2进行调用。同理,调用函数A2与调用函数A3之间存在函数调用关系,且具体为调用函数A2对调用函数A3进行调用。
其次,函数调用关系链的终止调用信息为待定位调用信息,即终止调用信息为实际对敏感信息或隐私信息进行读取操作的调用信息。示例性地,对于前述示例的函数调用关系链C1而言,函数调用关系链C1包括调用函数A1、调用函数A2至调用函数A3,那么函数调用关系链C1的终止调用信息即为调用函数A3。
具体地,终端通过函数调用关系集合,构建与待定位调用信息匹配的函数调用关系链,即终端先从函数调用关系集合中确定待定位调用信息,然后遍历函数调用关系集合,以确定对待定位调用信息进行调用的调用信息,以及与对待定位调用信息进行调用的调用信息之间存在函数调用关系的调用信息,直至无法再次确定存在函数调用关系的调用信息,由此构建与待定位调用信息匹配的函数调用关系链,因此函数调用关系链中的终止调用信息为待定位调用信息,且函数调用关系链中存在至少一个调用信息与待定位调用信息存在函数调用关系。
例如,以函数调用关系集合至少可以包括:调用函数A1对调用函数A2进行调用,调用函数A1对调用函数A3进行调用,调用函数A2对调用函数A3进行调用,以及调用函数A3对调用函数A4进行调用,且待定位调用信息具体为调用函数A4为例进行说明,存在调用函数A3对调用函数A4进行调用,因此可以构建至少包括“调用函数A3至调用函数A4”的函数调用关系链,而调用函数A1以及调用函数A2均能够对调用函数A3进行调用,此时可以构建“调用函数A1至调用函数A3至调用函数A4”、以及“调用函数A2至调用函数A3至调用函数A4”的两个函数调用关系链。再进一步地,调用函数A1还可以对调用函数A2进行调用,因此最终可以得到与待定位调用信息(即调用函数A4)匹配的两个函数调用关系链:“调用函数A1至调用函数A3至调用函数A4”、以及“调用函数A1至调用函数A2至调用函数A3至调用函数A4”。
步骤508,对每一函数调用关系链进行信息分析处理,以确定目标调用信息,目标调用信息为请求调用待定位调用信息的调用信息。
其中,信息分析处理用户对函数调用关系链中每一调用信息进行定位分析,即确定每一调用信息的调用来源。其次,目标调用信息为请求调用待定位调用信息的调用信息,且目标调用信息属于至少一条函数调用关系链。
具体地,终端对每一函数调用关系链进行信息分析处理,也就是终端从函数调用关系链中确定具体调用待定位调用信息的目标调用信息。目标调用信息可以为多个函数调用关系链中共同存在调用信息,即通过该调用信息通过不同的调用路径对待定位调用信息进行调用,或者,目标调用信息还可以为多个函数调用关系链的初始调用信息,即每一函数调用关系链中发出调用请求且未被其他调用信息进行调用的调用信息为目标调用信息。
示例性地,以前述示例进行进一步地说明,待定位调用信息匹配的两个函数调用关系链:“调用函数A1至调用函数A3至调用函数A4”、以及“调用函数A1至调用函数A2至调用函数A3至调用函数A4”,通过信息分析处理可知:前述两个函数调用关系链中相同的调用信息包括调用函数A1以及调用函数A3,由于实质上调用函数A3还被调用函数A2以及调用函数A1调用,即前述两条调用链均为调用函数A1发出请求后所进行的调用链路,因此终端可以确定调用函数A1为目标调用信息,调用函数A1为请求调用待定位调用信息的调用信息。
可以理解的是,前述示例均用于理解本方案,而不应该理解为对本方案的限定。
上述调用信息的定位方法中,由于函数调用关系集合包括多个调用信息之间的函数调用关系,因此与待定位调用信息匹配的函数调用关系链中,能够准确定位每一与待定位调用信息存在函数调用关系的调用信息,且终止调用信息为待定位调用信息,也就是通过函数调用关系链,还能够准确描述对待定位调用信息进行调用时所需要经过的所有调用信息,由此能够基于函数调用关系链完成对目标调用信息的准确定位,避免数据编译以及转换所带来的时间消耗,由于仅需要对函数调用关系链中的调用信息进行信息匹配,还能够降低对所有字符串进行信息匹配的耗时,从而提升调用信息的定位的效率。
通过前述实施例可知,调用信息之间的函数调用关系集合具体在把所有.class文件转换为dex文件的过程中构建,且函数调用关系集合具体可以为函数调用关系图谱,或者为函数调用关系列表,下面将介绍在把所有.class文件转换为dex文件的过程中构建函数调用关系图谱的具体方式:
在一个实施例中,如图6所示,获取调用信息之间的函数调用关系集合,包括:
步骤602,获取每一调用函数之间的调用函数调用关系、以及每一调用函数与每一函数字段之间的函数字段调用关系。
其中,调用函数调用关系用于描述调用函数与调用函数之间的函数调用关系,例如,调用函数A1对调用函数A2进行调用,调用函数A2对调用函数A3进行调用。其次,函数字段调用关系用于描述调用函数与调用函数中的具体函数字段之间的函数调用关系,例如,调用函数A1对函数字段B1进行调用,调用函数A3对函数字段B2进行调用。由此可知,前述函数调用关系至少包括:调用函数调用关系以及函数字段调用关系。
具体地,终端获取每一调用函数之间的调用函数调用关系、以及每一调用函数与每一函数字段之间的函数字段调用关系。终端具体对所有代码进行扫描,然后遍历所有代码的每个方法所对应的每条指令,对每条指令进行指令类别分类,以得到方法调用指令和字段访问指令,方法调用指令即为对调用函数的调用指令,方法调用指令即为前述实施例所介绍的:一次visitMethodInsn()方法的调用,同理,字段访问指令即为对调用函数中函数字段的访问指令,字段访问指令即为前述实施例所介绍的:一次visitFieldInsn()调用。
进一步地,终端遍历每一调用函数对其他调用函数之间的可能存在的方法调用指令以及字段访问指令,并具体基于方法调用指令获取调用函数之间的调用函数调用关系,以及基于字段访问指令获取函数字段之间的函数字段调用关系。直到终端对所有.class文件中的代码遍历完成,即可获取每一调用函数之间的调用函数调用关系、以及每一调用函数与每一函数字段之间的函数字段调用关系。
步骤604,基于调用函数调用关系以及函数字段调用关系,构建调用信息之间的函数调用关系图谱,函数调用关系图谱包括:调用信息对应的调用节点,且调用节点之间存在有向边,有向边用于描述调用信息之间的函数调用关系。
其中,函数调用关系集合为函数调用关系图谱。前述函数调用关系图谱包括:调用信息对应的调用节点,且调用节点之间存在有向边,有向边用于描述调用信息之间的函数调用关系。也就是函数调用关系图谱包括多个调用节点,每一调用节点与一个调用信息一一对应,若两个调用节点对应的调用信息之间存在函数调用关系,那么前述两个调用节点之间存在有向边。
其次,有向边具体通过边开始调用节点以及边终止调用节点,前述边开始调用节点为函数调用关系中发起调用请求的调用信息所对应的调用节点,而前述边终止调用节点为函数调用关系中被调用的调用信息所对应的调用节点。具体如图7所示,调用节点702与调用节点704之间存在有向边706,且有向边706的具体方向为调用节点702指向调用节点704,那么调用节点702所对应的调用信息与调用节点704所对应的调用信息之间的函数调用关系为:调用节点702所对应的调用信息对调用调用节点704所对应的调用信息进行调用。
具体地,终端基于调用函数调用关系以及函数字段调用关系,构建调用信息之间的函数调用关系图谱。即终端先基于每一调用函数以及每一函数字段构建函数调用关系图谱中的调用节点,然后再基于每一调用函数之间的调用函数调用关系构建调用函数所对应调用节点之间的有向边。同理,终端再基于每一调用函数与每一函数字段之间的函数字段调用关系,构建调用函数所对应调用节点与函数字段所对应调用节点之间的有向边,从而生成函数调用关系图谱,
为便于理解函数调用关系图谱,以调用函数A1对调用函数A2进行调用,调用函数A1对调用函数A4进行调用,调用函数A3对调用函数A4进行调用,调用函数A2对函数字段B1进行调用,调用函数A4对函数字段B1进行调用,以及调用函数A5对函数字段B1进行调用为例进行说明,具体如图8所示,调用函数A1对应调用节点801,调用函数A2对应调用节点802,调用函数A3对应调用节点803,调用函数A4对应调用节点804,调用函数A5对应调用节点805,以及函数字段B1对应调用节点806。由于调用函数A1与调用函数A2之间存在调用函数调用关系,那么调用函数A1对应的调用节点801、与调用函数A2对应的调用节点802之间存在有向边,且调用函数A具体对调用函数A2进行调用,因此有向边具体从调用节点801指向调用节点802。
同理可知,调用函数A1对应的调用节点801、与调用函数A4对应的调用节点804之间存在有向边,且有向边具体从调用节点801指向调用节点804。依次类推,调用函数A3对应的调用节点803、与调用函数A4对应的调用节点804之间存在有向边,且有向边具体从调用节点803指向调用节点804。以及调用函数A5对应的调用节点805、与调用函数A1对应的调用节点801之间存在有向边,且有向边具体从调用节点805指向调用节点801。
以及调用函数A2对应的调用节点802、与函数字段B1对应的调用节点806之间存在有向边,且有向边具体从调用节点802指向调用节点806。以及调用函数A4对应的调用节点804、与函数字段B1对应的调用节点806之间存在有向边,且有向边具体从调用节点804指向调用节点806。以及调用函数A5对应的调用节点805、与函数字段B1对应的调用节点806之间存在有向边,且有向边具体从调用节点805指向调用节点806。由此可以得到如图示出的函数调用关系图谱810。可以理解的是,前述示例以及图8的示例均用于理解本方案,而不应该理解为对本方案的限定。
本实施例中,通过每一调用函数之间的调用函数调用关系、以及每一调用函数与每一函数字段之间的函数字段调用关系,构建调用信息之间的函数调用关系图谱,由于函数调用关系图谱中的调用节点,以及调用节点之间的有向边能够准确且更为清楚的描述调用信息之间的函数调用关系,使得后续进行调用信息定位能够更准确且清晰,并避免需要对所有字符串进行信息匹配的耗时,从而提升调用信息的定位的效率以及准确度。
在一个实施例中,如图9所示,通过函数调用关系集合,构建与待定位调用信息匹配的函数调用关系链,包括:
步骤902,从函数调用关系图谱中,确定待定位调用信息对应的待定位调用节点。
具体地,终端从函数调用关系图谱中,确定待定位调用信息对应的待定位调用节点。终端可以具体基于待定位调用信息的调用方法信息以及调用参数信息,从函数调用关系图谱中查找到所匹配的待定位调用节点。例如,调用节点D1的调用信息具体对应调用方法信息E1以及调用参数信息F1,调用节点D2的调用信息具体对应调用方法信息E1以及调用参数信息F2,调用节点D3的调用信息具体对应调用方法信息E2以及调用参数信息F3,以及调用节点D4的调用信息具体对应调用方法信息E2以及调用参数信息F4。若待定位调用信息具体对应调用方法信息E2以及调用参数信息F3,那么待定位调用信息息对应的待定位调用节点具体为调用节点D3。
步骤904,将与待定位调用节点之间存在有向边的调用节点确定为候选调用节点,以及将与各候选调用节点之间存在有向边的调用节点确定为次候选调用节点。
其中,候选调用节点为与待定位调用节点之间存在有向边的调用节点,且候选调用节点的调用信息具体用于对待定位调用节点的调用信息进行调用,候选调用节点可以为一个或多个,有向边的具体指向为:候选调用节点指向待定位调用节点。其次,每一候选调用节点可以存在多个次候选调用节点,且次候选调用节点的调用信息具体用于对候选调用节点的调用信息进行调用,候选调用节点与次候选调用节点之间的有向边的指向具体为:次候选调用节点指向候选调用节点。
具体地,终端将与待定位调用节点之间存在有向边的调用节点确定为候选调用节点,再进一步地将与各候选调用节点之间存在有向边的调用节点确定为次候选调用节点。为便于理解如何确定候选调用节点,以及如何次候选调用节点,具体如图10所示,有向边从调用节点1001指向调用节点1002,有向边从调用节点1001指向调用节点1004,有向边从调用节点1003指向调用节点1004,有向边从调用节点1005指向调用节点1001,有向边具体从调用节点1002指向调用节点1006,有向边从调用节点1004指向调用节点1006。以及有向边从调用节点1005指向调用节点1006,由此可以得到如图10示出的函数调用关系图谱。
基于此,若调用节点1006为待定位调用信息对应的待定位调用节点,那么与调用节点1006之间存在有向边的调用节点包括:调用节点1002、调用节点1004以及调用节点1005,由于与待定位调用节点之间存在有向边的调用节点为候选调用节点,即待定位调用节点(调用节点1006)的候选调用节点包括:调用节点1002、调用节点1004以及调用节点1005。
进一步地,与各候选调用节点之间存在有向边的调用节点为次候选调用节点,对于调用节点1002而言,与调用节点1001之间存在有向边,且有向边具体指向为调用节点1001至调用节点1002,因此调用节点1002的次候选调用节点包括调用节点1001。同理可知,对于调用节点1004而言,与调用节点1001以及调用节点1003之间均存在有向边,且有向边具体指向为调用节点1001至调用节点1004,以及调用节点1003至调用节点1004,因此调用节点1002的次候选调用节点包括调用节点1001以及调用节点1003。那么对于调用节点1005而言,与调用节点1001之间存在有向边,但是有向边具体指向为调用节点1005至调用节点1001,因此调用节点1005不存在次候选调用节点,但是存在调用节点1001的次候选调用节点:调用节点1005,即确定次候选调用节点后还能够进一步地确定与次候选调用节点具有有向边的次候选调用节点。可以理解的是,前述示例仅用于理解本方案,而不应理解为对本申请的限定,以及在实际应用中,还可以进一步地基于前述类似方式得到与各候选调用节点以及各候选调用节点具有有向边的调用节点,直至无前序调用关系后再停止类似确定步骤。
步骤906,通过待定位调用节点、各候选调用节点、以及各次候选调用节点,构建函数调用关系链。
其中,函数调用关系链至少包括:与待定位调用信息相邻的候选调用信息,候选调用信息与候选调用节点对应。可以理解的是,若一个候选调用节点存在次候选调用节点,那么函数调用关系链中还可以包括与候选调用信息相邻的次候选调用信息。
具体地,终端通过待定位调用节点、各候选调用节点、以及各次候选调用节点,构建函数调用关系链。即服务器具体通过待定位调用节点对应的待定位调用信息、各候选调用节点对应的候选调用节点、以及各次候选调用节点对应的次候选调用节点,构建具有相邻关系调用信息的函数调用关系链。为便于理解,请再次参阅图10,若调用节点1006为待定位调用信息对应的待定位调用节点,基于前述确定的候选调用节点:调用节点1002、调用节点1004以及调用节点1005,即可以构建三条函数调用关系链,即函数调用关系链1至少可以包括:调用节点1002的调用信息至调用节点1006的调用信息,函数调用关系链2至少可以包括:调用节点1004的调用信息至调用节点1006的调用信息,以及函数调用关系链3至少可以包括:调用节点1005的调用信息至调用节点1006的调用信息。
进一步地,调用节点1002的次候选调用节点包括调用节点1001,且存在调用节点1001的次候选调用节点:调用节点1005,由此可知,函数调用关系链1还可以包括:调用节点1005的调用信息至调用节点1001的调用信息,调用节点1001的调用信息至调用节点1002的调用信息,以及调用节点1002的调用信息至调用节点1006的调用信息。
同理可知,调用节点1002的次候选调用节点包括调用节点1001以及调用节点1003,且存在调用节点1001的次候选调用节点:调用节点1005,因此函数调用关系链2具有两条调用分支:
函数调用关系链2-1包括:调用节点1005的调用信息至调用节点1001的调用信息,调用节点1001的调用信息至至调用节点1004的调用信息,以及调用节点1004的调用信息至调用节点1006的调用信息。。函数调用关系链2-2包括:调用节点1003的调用信息至调用节点1004的调用信息,以及调用节点1004的调用信息至调用节点1006的调用信息。以及,由于调用节点1005不存在次候选调用节点,因此可以确定函数调用关系链3即包括:调用节点1005的调用信息至调用节点1006的调用信息。
与此可知,图10中可以构建的函数调用关系链的调用节点包括:调用节点1005至调用节点1006,调用节点1005至调用节点1001至调用节点1002至调用节点1006,调用节点1005至调用节点1001至调用节点1004至调用节点100,调用节点1003至调用节点1004至调用节点1006。
可以理解的是,前述示例均用于理解本方案,而不应理解为对本申请的限定。
本实施例中,通过函数调用关系图谱中各调用节点之间的有向边,确定候选调用节点以及次候选调用节点,由于有向边能够准确描述调用节点之间的函数调用关系,由此所构建的函数调用关系链能够准确描述相邻调用信息之间的函数调用关系,即保证函数调用关系链中各调用信息之间调用的可靠性以及准确度,从而提升调用信息的定位的准确度。
考虑到实际应用中,函数调用关系图谱中会包括数量众多的调用节点,本方案考虑到从函数调用关系图谱中确定待定位调用节点的可能存在耗时较长的问题,在构建函数调用关系图谱时考虑到各调用信息具有对应的类型信息进行子图划分,以降低待定位调用节点确定的耗时,具体方法如下:
在一个实施例中,如图11所示,调用信息具有对应的类型信息,类型信息至少包括:调用方法信息以及调用参数信息。
其中,类型信息为用于描述调用信息的数据信息,类型信息至少包括:调用方法信息以及调用参数信息,类型信息还可以包括函数签名信息等,此处不作限定。
基于此,基于调用函数调用关系以及函数字段调用关系,构建调用信息之间的函数调用关系图谱,包括:
步骤1102,基于调用函数调用关系以及函数字段调用关系,构建调用信息之间的初始函数调用关系图谱。
其中,初始函数调用关系图谱包括:调用信息对应的调用节点,且调用节点之间存在有向边,有向边用于描述调用信息之间的函数调用关系。具体与前述实施例中所介绍的函数调用关系图谱类似,此处不再赘述。
具体地,终端基于调用函数调用关系以及函数字段调用关系,构建调用信息之间的初始函数调用关系图谱。即终端先基于每一调用函数以及每一函数字段构建函数调用关系图谱中的调用节点,然后再基于每一调用函数之间的调用函数调用关系构建调用函数所对应调用节点之间的有向边。同理,终端再基于每一调用函数与每一函数字段之间的函数字段调用关系,构建调用函数所对应调用节点与函数字段所对应调用节点之间的有向边,从而生成函数调用关系图谱。具体实施方式与前述实施例类似,此处不再赘述。
步骤1104,基于各调用信息所对应的类型信息,将初始函数调用关系图谱分类划分为多个函数调用关系子图,属于同一函数调用关系子图的调用信息具有相同的类型信息。
其中,函数调用关系图谱包括多个函数调用关系子图,且属于同一函数调用关系子图的调用信息具有相同的类型信息,即属于同一函数调用关系子图的调用节点具有至少一个相同的类型信息,如:属于同一函数调用关系子图的调用节点至少具有相同的调用方法信息,或至少具有相同的调用参数信息,或至少具有相同的函数签名信息等。
具体地,终端基于各调用信息所对应的类型信息,将初始函数调用关系图谱中具有至少一个相同的类型信息的调用节点划分至相同的函数调用关系子图中,从而将将初始函数调用关系图谱分类划分为多个函数调用关系子图。为便于理解,再次以调用函数A1对调用函数A2进行调用,调用函数A1对调用函数A4进行调用,调用函数A3对调用函数A4进行调用,调用函数A2对函数字段B1进行调用,调用函数A4对函数字段B1进行调用,以及调用函数A5对函数字段B1进行调用为例进行说明,如图12所示,图12中(A)图示出的初始函数调用关系图谱1200中,调用函数A1对应调用节点1201,调用函数A2对应调用节点1202,调用函数A3对应调用节点1203,调用函数A4对应调用节点1204,调用函数A5对应调用节点1205,以及函数字段B1对应调用节点1206。其中,调用节点1201通过有向边具体指向调用节点1202以及调用节点1204,调用节点1202通过有向边具体指向调用节点1206,调用节点1203通过有向边具体指向调用节点1204,调用节点1204通过有向边具体指向调用节点1206,调用节点1205通过有向边具体指向调用节点1201以及调用节点1206。
若调用函数A1以及调用函数A3对应类型信息G1,调用函数A2以及调用函数A4对应类型信息G2,调用函数A5对应类型信息G3,以及函数字段B1对应类型信息G4。基于前述各函数信息对应的类型信息,终端可以将具有同一类型信息G1的调用函数A1以及调用函数A3所对应的调用节点划分至同一函数调用关系子图中,即如图12中(B)图示出的函数调用关系子图1207中包括用节点1201以及调用节点1203。同理可知,将具有同一类型信息G2的调用函数A2以及调用函数A4所对应的调用节点划分至同一函数调用关系子图中,即如图12中(B)图示出的函数调用关系子图1208中包括用节点1202以及调用节点1204。以及将类型信息G3的调用函数A5划分至另一函数调用关系子图中,即如图12中(B)图示出的函数调用关系子图1209中包括用节点1205。并将类型信息G4的函数字段B1划分至另一函数调用关系子图中,即如图12中(B)图示出的函数调用关系子图1210中包括用节点1206。由此构成如图12中(B)示出的包括多个函数调用关系子图的函数调用关系图谱。可以理解的是,图12的示例均用于理解本方案,而不应该理解为对本方案的限定。
本实施例中,通过调用信息具有对应的类型信息,对初始函数调用关系图谱中各调用节点进一地划分分类,使得相同的类型信息的调用信息的调用节点属于同一函数调用关系子图中,仅需要在相同类型信息的函数调用关系子图中进行调用节点的定位,即避免从整个函数调用关系图谱中对各调用节点的定位,减小调用节点定位的范围以降低节点定位的耗时,进一步地提升调用信息的定位的效率。
在一个实施例中,如图13所示,通过函数调用关系集合,构建与待定位调用信息匹配的函数调用关系链,包括:
步骤1302,基于待定位调用信息所对应的类型信息,从函数调用关系图谱中确定待定位调用信息所属的待定位函数调用关系子图。
具体地,由于属于同一函数调用关系子图的调用信息具有相同的类型信息,即每一函数调用关系子图均具有匹配的类型信息,因此终端可以基于待定位调用信息所对应的类型信息,从函数调用关系图谱中确定待定位调用信息所属的待定位函数调用关系子图,即具体从函数调用关系图谱中确定函数调用关系子图匹配的类型信息,与待定位调用信息所对应的类型信息相同的待定位函数调用关系子图,前述待定位函数调用关系子图中具体包括待定位调用信息对应的待定位调用节点。
为便于理解,请再次参阅图12,若待定位调用信息所对应的类型信息为类型信息G1,那么可以确定待定位调用信息的所属的待定位函数调用关系子图具体为图12中(B)图示出的函数调用关系子图1207。其次,若待定位调用信息所对应的类型信息为类型信息G4,那么可以确定待定位调用信息的所属的待定位函数调用关系子图具体为图12中(B)图示出的函数调用关系子图1210。
步骤1304,从待定位函数调用关系子图中,确定待定位调用信息对应的待定位调用节点。
具体地,在确定待定位函数调用关系子图后,终端具体从待定位函数调用关系子图所包括的调用节点中,确定待定位调用信息对应的待定位调用节点。为便于理解,请再次参阅图12,若待定位调用信息为函数字段B1,以及函数字段B1对应类型信息G4,因此可以确定待定位调用信息所属的待定位函数调用关系子图为函数调用关系子图1210,然后即可在函数调用关系子图1210中具体确定待定位调用信息(函数字段B1)对应的待定位调用节点即为调用节点1206。其次,待定位调用信息为调用函数A1,以及调用函数A1对应类型信息G1,因此可以确定待定位调用信息所属的待定位函数调用关系子图为函数调用关系子图1207,然后即可在函数调用关系子图107中具体确定待定位调用信息(调用函数A1)对应的待定位调用节点即为调用节点1201。
可以理解的是,前述的示例均用于理解本方案,而不应该理解为对本方案的限定。
步骤1306,将与待定位调用节点之间存在有向边的调用节点确定为候选调用节点,以及将与各候选调用节点之间存在有向边的调用节点确定为次候选调用节点。
其中,候选调用节点为与待定位调用节点之间存在有向边的调用节点,且候选调用节点的调用信息具体用于对待定位调用节点的调用信息进行调用,候选调用节点可以为一个或多个,有向边的具体指向为:候选调用节点指向待定位调用节点。其次,每一候选调用节点可以存在多个次候选调用节点,且次候选调用节点的调用信息具体用于对候选调用节点的调用信息进行调用,候选调用节点与次候选调用节点之间的有向边的指向具体为:次候选调用节点指向候选调用节点。
具体地,终端将与待定位调用节点之间存在有向边的调用节点确定为候选调用节点,再进一步地将与各候选调用节点之间存在有向边的调用节点确定为次候选调用节点。候选调用节点以及次候选调用节点的确定方式在前述实施例的步骤904中已详细描述,此处不做限定。
步骤1308,通过待定位调用节点、各候选调用节点、以及各次候选调用节点,构建函数调用关系链。
其中,函数调用关系链至少包括:与待定位调用信息相邻的候选调用信息,候选调用信息与候选调用节点对应。可以理解的是,若一个候选调用节点存在次候选调用节点,那么函数调用关系链中还可以包括与候选调用信息相邻的次候选调用信息。
具体地,终端通过待定位调用节点、各候选调用节点、以及各次候选调用节点,构建函数调用关系链。即服务器具体通过待定位调用节点对应的待定位调用信息、各候选调用节点对应的候选调用节点、以及各次候选调用节点对应的次候选调用节点,构建具有相邻关系调用信息的函数调用关系链。函数调用关系链的构建方式在前述实施例的步骤906中已详细描述,此处不做限定。
本实施例中,基于类型信息确定待定位函数调用关系子图,再从待定位函数调用关系子图中确定待定位调用节点,避免从整个函数调用关系图谱中对各调用节点的定位,减小调用节点定位的范围以降低节点定位的耗时。且进一步地通过函数调用关系图谱中各调用节点之间的有向边,确定候选调用节点以及次候选调用节点,由于有向边能够准确描述调用节点之间的函数调用关系,由此所构建的函数调用关系链能够准确描述相邻调用信息之间的函数调用关系,即保证函数调用关系链中各调用信息之间调用的可靠性以及准确度,由此提升调用信息的定位的效率以及准确度。
在一个实施例中,如图14所示,获取调用信息之间的函数调用关系集合,包括:
步骤1402,获取目标业务应用中每一调用信息之间的函数调用关系集合。
其中,目标业务应用为目标业务的应用程序,目标业务可以为视频业务、直播业务、以及数据传输业务等,此处不做限定。
具体地,终端获取针对目标业务的应用程序中,每一调用信息之间的函数调用关系集合。即针对目标业务的应用程序的应用打包过程中,把所有.class文件转换为dex文件的过程中构建调用信息之间的函数调用关系集合,由此所构建的调用信息之间的函数调用关系集合会存储于目标业务的应用程序的dex文件,从而在打包生成目标业务的应用程序的.apk文件的过程中,将存储有调用信息之间的函数调用关系集合的dex文件一起打包,因此目标业务的应用程序中会存储有函数调用关系集合,那么在目标业务的应用程序运行时即可获取预先构建的针对目标业务的应用程序的调用信息之间的函数调用关系集合。
基于此,确定被调用的待定位调用信息,包括:
步骤1404,确定目标业务应用中被调用的待定位调用信息,待定位调用信息为与敏感信息或隐私信息相关的调用信息。
其中,待定位调用信息为与敏感信息或隐私信息相关的调用信息。
具体地,终端具体确定目标业务应用中被调用的待定位调用信息。即终端终端可以通过敏感信息检测或隐私信息检测,当在目标业务应用中被调用的调用信息具体用于访问或读取敏感信息或隐私信息时,确定该调用信息为待定位调用信息,也就是确定与敏感信息或隐私信息相关的调用信息为待定位调用信息。或者,在实际应用中,在用户同意针对目标业务应用的隐私协议之前,终端运行目标业务应用时不应有收集读取用户隐私数据的调用行为,因此在用户同意隐私协议之前,终端运行目标业务应用时执行对敏感信息或隐私信息的收集读取的调用行为的调用信息为待定位调用信息。
其次,在实际应用中,即使在用户同意针对目标业务应用的隐私协议之后,收集用户隐私数据的行为也不能超出实现目标业务应用所必需的最低频率,也就是在用户同意针对目标业务应用的隐私协议之后,终端用于执行对敏感信息或隐私信息的收集读取的调用行为的频率大于目标业务应用对应的需求频率阈值时,确定用于执行该调用行为的调用信息为待定位调用信息,目标业务应用对应的需求频率阈值时以为1分钟1次、2分钟1次、或启动程序后调用2次等,此处不作限定。例如,启动目标业务应用时需要收集用户设备信息,然而在目标业务应用的运行时刻不需要再次对用户设备信息进行收集,因此在目标业务应用运行时还在请求收集用户设备信息,此时可以将目标业务应用中用于执行收集用户设备信息的调用信息确定为待定位调用信息。
基于此,调用信息的定位方法还包括:
步骤1406,通过目标调用信息,确定在目标业务应用中请求调用待定位调用信息的目标调用位置。
其中,目标调用位置至少包括目标业务应用的业务功能模块。或,目标调用位置具体为通过目标调用信息基于任务后检视方法(After Action Review,AAR)所确定的位置信息,因此目标调用位置可以包括多一个多个调用位置。基于此,终端通过目标调用信息,确定在目标业务应用中请求调用待定位调用信息的目标调用位置的具体业务功能模块。或,终端通过目标调用信息,基于AAR确定在目标业务应用中请求调用待定位调用信息的一个或多个的位置信息。
本实施例中,由于函数调用关系集合所包括的是针对目标业务应用的多个调用信息之间的函数调用关系,因此在目标业务应用确定存在与敏感信息或隐私信息相关的调用信息后,通过与待定位调用信息匹配的函数调用关系链中,能够准确定位每一与待定位调用信息存在函数调用关系的调用信息,由此完成对目标调用信息的准确定位,避免在目标业务应用运行过程中进行数据编译以及转换所带来的时间消耗,还能够降低对在目标业务应用运行过程中对目标业务应用的所有字符串进行信息匹配的耗时,从而提升在目标业务应用中调用信息的定位的效率。
通过前述实施例可知,调用信息至少包括:调用函数以及函数字段,下面将分别描述调用信息为调用函数,以及调用信息为函数字段的调用信息的具体定位方法:
在一个实施例中,如图15所示,调用信息为调用函数。
基于此,获取调用信息之间的函数调用关系集合,包括:
步骤1502,获取多个调用函数之间的函数调用关系,并构建调用函数之间的函数调用关系集合。
其中,函数调用关系集合中具体包括:每一调用函数之间的调用函数调用关,前述调用函数调用关系用于描述调用函数与调用函数之间的函数调用关系,例如,调用函数A1对调用函数A2进行调用,调用函数A2对调用函数A3进行调用。基于此,待定位调用信息为待定位调用函数。函数调用关系链由多个相邻的待定位调用函数组成,相邻调用函数之间存在函数调用关系,且函数调用关系链的终止调用函数为待定位调用函数;目标调用信息为请求调用待定位调用函数的调用函数。
具体地,终端获取多个调用函数之间的函数调用关系,即终端具体获取每一调用函数之间的调用函数调用关系。在实际应用中,终端具体对所有代码进行扫描,然后遍历所有代码的每个方法所对应的每条指令,对每条指令进行指令类别分类,以得到方法调用指令,方法调用指令即为对调用函数的调用指令,方法调用指令即为前述实施例所介绍的:一次visitMethodInsn()方法的调用。为便于理解,如图16所示,图16示出的即为一次visitMethodInsn()方法的调用,即本实施例中所描述的调用函数。
进一步地,终端遍历每一调用函数对其他调用函数之间的可能存在的方法调用指令,并具体基于方法调用指令获取调用函数之间的调用函数调用关系,直到终端对所有.class文件中的代码遍历完成,即可获取每一调用函数之间的调用函数调用关系(即多个调用函数之间的函数调用关系)。由此再通过多个调用函数之间的函数调用关系构建调用函数之间的函数调用关系集合。
可选地,在一个实施例中,如图17所示,调用信息为函数字段。
基于此,获取调用信息之间的函数调用关系集合,包括:
步骤1702,获取多个函数字段之间的函数调用关系,并构建函数字段之间的函数调用关系集合。
其中,函数调用关系集合中具体包括:每一调用函数与每一函数字段之间的函数字段调用关系,前述函数字段调用关系用于描述调用函数中具体函数字段,与另一调用函数中具体函数字段之间的函数调用关系,例如,调用函数A1中的函数字段B1对调用函数A2的函数字段B2进行调用,调用函数A2的函数字段B2对调用函数A3的函数字段B3进行调用。基于此,待定位调用信息为待定位函数字段;函数调用关系链由多个相邻的待定位函数字段组成,相邻函数字段之间存在函数调用关系,且函数调用关系链的终止函数字段为待定位函数字段;目标调用信息为请求调用待定位函数字段的函数字段。
具体地,终端获取多个函数字段之间的函数调用关系,即终端具体获取每一调用函数与每一函数字段之间的函数字段调用关系。在实际应用中,终端具体对所有代码进行扫描,然后遍历所有代码的每个方法所对应的每条指令,对每条指令进行指令类别分类,以得到字段访问指令,字段访问指令即为前述实施例所介绍的:一次visitFieldInsn()调用。为便于理解,如图18所示,图18示出的即为一次visitFieldInsn()调用,即本实施例中所描述的调用函数中的具体函数字段。
进一步地,终端遍历每一调用函数对其他调用函数之间的可能存在的字段访问指令,并具体基于字段访问指令获取函数字段之间的函数字段调用关系,直到终端对所有.class文件中的代码遍历完成,即可获取每一调用函数与每一函数字段之间的函数字段调用关系(即多个函数字段之间的函数调用关系)。由此再通过多个函数字段之间的函数调用关系构建调用函数之间的函数调用关系集合。可以理解的是,在前述实施例中,终端遍历到visitMethodInsn()或visitFieldInsn()中如图19所示出的指令时,即可获取调用函数之间的调用函数调用关系,或函数字段之间的函数字段调用关系,此处不进行具体限定。
本实施例中,分别通过函数字段以及调用函数分别构建调用函数之间的函数调用关系集合,也就是能够从函数维度以及具体字段维度进行函数调用关系集合的构建,保证在实际应用中对不同维度的调用信息进行定位,以提升调用信息定位的实用性以及灵活性。
基于前述实施例的详细介绍,下面将介绍本申请实施例的调用信息的定位的完整流程,如图20所示,以该方法由图2中的终端执行为例进行说明,可以理解的是,该方法也可以由服务器执行,或者由终端和服务器的交互实现。本实施例中,该方法包括以下步骤:
步骤2001,获取目标业务应用中每一调用函数之间的调用函数调用关系、以及每一函数字段之间的函数字段调用关系。
其中,目标业务应用为目标业务的应用程序,目标业务可以为视频业务、直播业务、以及数据传输业务等,此处不做限定。基于此,调用函数调用关系用于描述调用函数与调用函数之间的函数调用关系。以及函数字段调用关系用于描述调用函数与调用函数中的具体函数字段之间的函数调用关系。
具体地,终端获取目标业务应用中每一调用函数之间的调用函数调用关系、以及每一函数字段之间的函数字段调用关系。即针对目标业务的应用程序的应用打包过程中,具体对目标业务应用中所有代码进行扫描,然后遍历目标业务应用中所有代码的每个方法所对应的每条指令,对每条指令进行指令类别分类,以得到目标业务应用中所有的方法调用指令和字段访问指令,方法调用指令即为对调用函数的调用指令,方法调用指令即为前述实施例所介绍的:一次visitMethodInsn()方法的调用,同理,字段访问指令即为对调用函数中函数字段的访问指令,字段访问指令即为前述实施例所介绍的:一次visitFieldInsn()调用。
进一步地,终端遍历目标业务应用中每一调用函数对其他调用函数之间的可能存在的方法调用指令以及字段访问指令,并具体基于方法调用指令获取调用函数之间的调用函数调用关系,以及基于字段访问指令获取函数字段之间的函数字段调用关系。直到终端对目标业务应用的打包过程中所有.class文件中的代码遍历完成,即可获取目标业务应用中每一调用函数之间的调用函数调用关系、以及每一函数字段之间的函数字段调用关系。
步骤2002,基于调用函数调用关系以及函数字段调用关系,构建调用信息之间的初始函数调用关系图谱,初始函数调用关系图谱包括:调用信息对应的调用节点,且调用节点之间存在有向边,有向边用于描述调用信息之间的函数调用关系。
具体地,终端基于调用函数调用关系以及函数字段调用关系,构建调用信息之间的初始函数调用关系图谱。即终端先基于每一调用函数以及每一函数字段构建函数调用关系图谱中的调用节点,然后再基于每一调用函数之间的调用函数调用关系构建调用函数所对应调用节点之间的有向边。同理,终端再基于每一调用函数与每一函数字段之间的函数字段调用关系,构建调用函数所对应调用节点与函数字段所对应调用节点之间的有向边,从而生成函数调用关系图谱。具体实施方式与前述实施例类似,此处不再赘述。
步骤2003,基于各调用信息所对应的类型信息,将初始函数调用关系图谱分类划分为多个函数调用关系子图,属于同一函数调用关系子图的调用信息具有相同的类型信息。
其中,函数调用关系图谱包括多个函数调用关系子图,且属于同一函数调用关系子图的调用信息具有相同的类型信息,即属于同一函数调用关系子图的调用节点具有至少一个相同的类型信息,如:属于同一函数调用关系子图的调用节点至少具有相同的调用方法信息,或至少具有相同的调用参数信息,或至少具有相同的函数签名信息等。
具体地,终端基于各调用信息所对应的类型信息,将初始函数调用关系图谱中具有至少一个相同的类型信息的调用节点划分至相同的函数调用关系子图中,从而将将初始函数调用关系图谱分类划分为多个函数调用关系子图。
步骤2004,确定目标业务应用中被调用的待定位调用信息,待定位调用信息为与敏感信息或隐私信息相关的调用信息。
具体地,终端具体确定目标业务应用中被调用的待定位调用信息。即终端终端可以通过敏感信息检测或隐私信息检测,当在目标业务应用中被调用的调用信息具体用于访问或读取敏感信息或隐私信息时,确定该调用信息为待定位调用信息,也就是确定与敏感信息或隐私信息相关的调用信息为待定位调用信息。
或者,在实际应用中,在用户同意针对目标业务应用的隐私协议之前,终端运行目标业务应用时不应有收集读取用户隐私数据的调用行为,因此在用户同意隐私协议之前,终端运行目标业务应用时执行对敏感信息或隐私信息的收集读取的调用行为的调用信息为待定位调用信息。其次,在实际应用中,即使在用户同意针对目标业务应用的隐私协议之后,收集用户隐私数据的行为也不能超出实现目标业务应用所必需的最低频率,也就是在用户同意针对目标业务应用的隐私协议之后,终端用于执行对敏感信息或隐私信息的收集读取的调用行为的频率大于目标业务应用对应的需求频率阈值时,确定用于执行该调用行为的调用信息为待定位调用信息。
步骤2005,基于待定位调用信息所对应的类型信息,从函数调用关系图谱中确定待定位调用信息所属的待定位函数调用关系子图,其中,函数调用关系图谱包括多个函数调用关系子图。
具体地,由于属于同一函数调用关系子图的调用信息具有相同的类型信息,即每一函数调用关系子图均具有匹配的类型信息,因此终端可以基于待定位调用信息所对应的类型信息,从函数调用关系图谱中确定待定位调用信息所属的待定位函数调用关系子图,即具体从函数调用关系图谱中确定函数调用关系子图匹配的类型信息,与待定位调用信息所对应的类型信息相同的待定位函数调用关系子图,前述待定位函数调用关系子图中具体包括待定位调用信息对应的待定位调用节点。
步骤2006,从待定位函数调用关系子图中,确定待定位调用信息对应的待定位调用节点。
具体地,在确定待定位函数调用关系子图后,终端具体从待定位函数调用关系子图所包括的调用节点中,确定待定位调用信息对应的待定位调用节点。
步骤2007,将与待定位调用节点之间存在有向边的调用节点确定为候选调用节点,以及将与各候选调用节点之间存在有向边的调用节点确定为次候选调用节点。
其中,候选调用节点为与待定位调用节点之间存在有向边的调用节点,且候选调用节点的调用信息具体用于对待定位调用节点的调用信息进行调用,候选调用节点可以为一个或多个,有向边的具体指向为:候选调用节点指向待定位调用节点。其次,每一候选调用节点可以存在多个次候选调用节点,且次候选调用节点的调用信息具体用于对候选调用节点的调用信息进行调用,候选调用节点与次候选调用节点之间的有向边的指向具体为:次候选调用节点指向候选调用节点。
具体地,终端将与待定位调用节点之间存在有向边的调用节点确定为候选调用节点,再进一步地将与各候选调用节点之间存在有向边的调用节点确定为次候选调用节点。候选调用节点以及次候选调用节点的确定方式在前述实施例中已详细描述,此处不做限定。
步骤2008,通过待定位调用节点、各候选调用节点、以及各次候选调用节点,构建函数调用关系链。
选调用信息与候选调用节点对应。可以理解的是,若一个候选调用节点存在次候选调用节点,那么函数调用关系链中还可以包括与候选调用信息相邻的次候选调用信息。
具体地,终端通过待定位调用节点、各候选调用节点、以及各次候选调用节点,构建函数调用关系链。即服务器具体通过待定位调用节点对应的待定位调用信息、各候选调用节点对应的候选调用节点、以及各次候选调用节点对应的次候选调用节点,构建具有相邻关系调用信息的函数调用关系链。函数调用关系链的构建方式在前述实施例中已详细描述,此处不做限定。
步骤2009,对每一函数调用关系链进行信息分析处理,以确定目标调用信息,目标调用信息为请求调用待定位调用信息的调用信息。
其中,信息分析处理用户对函数调用关系链中每一调用信息进行定位分析,即确定每一调用信息的调用来源。其次,目标调用信息为请求调用待定位调用信息的调用信息,且目标调用信息属于至少一条函数调用关系链。
具体地,终端对每一函数调用关系链进行信息分析处理,也就是终端从函数调用关系链中确定具体调用待定位调用信息的目标调用信息。目标调用信息可以为多个函数调用关系链中共同存在调用信息,即通过该调用信息通过不同的调用路径对待定位调用信息进行调用,或者,目标调用信息还可以为多个函数调用关系链的初始调用信息,即每一函数调用关系链中发出调用请求且未被其他调用信息进行调用的调用信息为目标调用信息。
步骤2010,通过目标调用信息,确定在目标业务应用中请求调用待定位调用信息的目标调用位置。
其中,目标调用位置至少包括目标业务应用的业务功能模块。或,目标调用位置具体为通过目标调用信息基于AAR所确定的位置信息,因此目标调用位置可以包括多一个多个调用位置。基于此,终端通过目标调用信息,确定在目标业务应用中请求调用待定位调用信息的目标调用位置的具体业务功能模块。或,终端通过目标调用信息,基于AAR确定在目标业务应用中请求调用待定位调用信息的一个或多个的位置信息。
应理解,步骤2001至步骤2010的具体实施方式与前述实施例均类似,此处不再赘述。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的调用信息的定位方法的调用信息的定位装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个调用信息的定位装置实施例中的具体限定可以参见上文中对于调用信息的定位方法的限定,在此不再赘述。
在一个实施例中,如图21所示,提供了一种调用信息的定位装置,包括:函数调用关系获取模块2102、调用信息确定模块2104、关系链构建模块2106和定位模块2108,其中:
函数调用关系获取模块2102,用于获取调用信息之间的函数调用关系集合,调用信息至少包括:调用函数以及函数字段,函数调用关系集合包括多个调用信息之间的函数调用关系;
调用信息确定模块2104,用于确定被调用的待定位调用信息;
关系链构建模块2106,用于通过函数调用关系集合,构建与待定位调用信息匹配的函数调用关系链,函数调用关系链由多个相邻的调用信息组成,相邻调用信息之间存在函数调用关系,且函数调用关系链的终止调用信息为待定位调用信息;
定位模块2108,用于对每一函数调用关系链进行信息分析处理,以确定目标调用信息,目标调用信息为请求调用待定位调用信息的调用信息。
在一个实施例中,函数调用关系获取模块2102,还用于获取每一调用函数之间的调用函数调用关系、以及每一调用函数与每一函数字段之间的函数字段调用关系;并基于调用函数调用关系以及函数字段调用关系,构建调用信息之间的函数调用关系图谱,函数调用关系图谱包括:调用信息对应的调用节点,且调用节点之间存在有向边,有向边用于描述调用信息之间的函数调用关系;其中,函数调用关系至少包括:调用函数调用关系以及函数字段调用关系;函数调用关系集合为函数调用关系图谱。
在一个实施例中,关系链构建模块2106,还用于从函数调用关系图谱中,确定待定位调用信息对应的待定位调用节点;并将与待定位调用节点之间存在有向边的调用节点确定为候选调用节点,以及将与各候选调用节点之间存在有向边的调用节点确定为次候选调用节点;并通过待定位调用节点、各候选调用节点、以及各次候选调用节点,构建函数调用关系链;其中,函数调用关系链至少包括:与待定位调用信息相邻的候选调用信息,候选调用信息与候选调用节点对应。
在一个实施例中,调用信息具有对应的类型信息,类型信息至少包括:调用方法信息以及调用参数信息;
函数调用关系获取模块2102,还用于基于调用函数调用关系以及函数字段调用关系,构建调用信息之间的初始函数调用关系图谱;并基于各调用信息所对应的类型信息,将初始函数调用关系图谱分类划分为多个函数调用关系子图,属于同一函数调用关系子图的调用信息具有相同的类型信息;其中,函数调用关系图谱包括多个函数调用关系子图。
在一个实施例中,关系链构建模块2106,还用于基于待定位调用信息所对应的类型信息,从函数调用关系图谱中确定待定位调用信息所属的待定位函数调用关系子图;并从待定位函数调用关系子图中,确定待定位调用信息对应的待定位调用节点;并将与待定位调用节点之间存在有向边的调用节点确定为候选调用节点,以及将与各候选调用节点之间存在有向边的调用节点确定为次候选调用节点;并通过待定位调用节点、各候选调用节点、以及各次候选调用节点,构建函数调用关系链;其中,函数调用关系链至少包括:与待定位调用信息相邻的候选调用信息,候选调用信息与候选调用节点对应。
在一个实施例中,函数调用关系获取模块2102,还用于获取目标业务应用中每一调用信息之间的函数调用关系集合;
调用信息确定模块2104,还用于确定目标业务应用中被调用的待定位调用信息,待定位调用信息为与敏感信息或隐私信息相关的调用信息;
定位模块2108,还用于通过目标调用信息,确定在目标业务应用中请求调用待定位调用信息的目标调用位置。
在一个实施例中,调用信息为调用函数;
函数调用关系获取模块2102,还用于获取多个调用函数之间的函数调用关系,并构建调用函数之间的函数调用关系集合;其中,待定位调用信息为待定位调用函数;函数调用关系链由多个相邻的待定位调用函数组成,相邻调用函数之间存在函数调用关系,且函数调用关系链的终止调用函数为待定位调用函数;目标调用信息为请求调用待定位调用函数的调用函数。
在一个实施例中,调用信息为函数字段;
函数调用关系获取模块2102,还用于获取多个函数字段之间的函数调用关系,并构建函数字段之间的函数调用关系集合;其中,待定位调用信息为待定位函数字段;函数调用关系链由多个相邻的待定位函数字段组成,相邻函数字段之间存在函数调用关系,且函数调用关系链的终止函数字段为待定位函数字段;目标调用信息为请求调用待定位函数字段的函数字段。
上述调用信息的定位装置中的各模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端或服务器,在本实施例中,以该计算机设备是终端为例进行说明,其内部结构图可以如图22所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种调用信息的定位方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图22中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征信息可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征信息所有可能的组合都进行描述,然而,只要这些技术特征信息的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (12)

1.一种调用信息的定位方法,其特征在于,所述方法包括:
获取调用信息之间的函数调用关系集合,所述调用信息至少包括:调用函数以及函数字段,所述函数调用关系集合包括多个调用信息之间的函数调用关系;
确定被调用的待定位调用信息;
通过所述函数调用关系集合,构建与所述待定位调用信息匹配的函数调用关系链,所述函数调用关系链由多个相邻的调用信息组成,相邻调用信息之间存在函数调用关系,且所述函数调用关系链的终止调用信息为所述待定位调用信息;
对每一所述函数调用关系链进行信息分析处理,以确定目标调用信息,所述目标调用信息为请求调用所述待定位调用信息的调用信息。
2.根据权利要求1所述的方法,其特征在于,所述获取调用信息之间的函数调用关系集合,包括:
获取每一所述调用函数之间的调用函数调用关系、以及每一所述调用函数与每一所述函数字段之间的函数字段调用关系;
基于所述调用函数调用关系以及所述函数字段调用关系,构建所述调用信息之间的函数调用关系图谱,所述函数调用关系图谱包括:调用信息对应的调用节点,且所述调用节点之间存在有向边,所述有向边用于描述调用信息之间的函数调用关系;
其中,所述函数调用关系至少包括:所述调用函数调用关系以及所述函数字段调用关系;所述函数调用关系集合为所述函数调用关系图谱。
3.根据权利要求2所述的方法,其特征在于,所述通过所述函数调用关系集合,构建与所述待定位调用信息匹配的函数调用关系链,包括:
从所述函数调用关系图谱中,确定所述待定位调用信息对应的待定位调用节点;
将与所述待定位调用节点之间存在所述有向边的调用节点确定为候选调用节点,以及将与各所述候选调用节点之间存在所述有向边的调用节点确定为次候选调用节点;
通过所述待定位调用节点、各所述候选调用节点、以及各所述次候选调用节点,构建所述函数调用关系链;
其中,所述函数调用关系链至少包括:与所述待定位调用信息相邻的候选调用信息,所述候选调用信息与所述候选调用节点对应。
4.根据权利要求2所述的方法,其特征在于,所述调用信息具有对应的类型信息,所述类型信息至少包括:调用方法信息以及调用参数信息;
所述基于所述调用函数调用关系以及所述函数字段调用关系,构建所述调用信息之间的函数调用关系图谱,包括:
基于所述调用函数调用关系以及所述函数字段调用关系,构建所述调用信息之间的初始函数调用关系图谱;
基于各所述调用信息所对应的类型信息,将所述初始函数调用关系图谱分类划分为多个函数调用关系子图,属于同一函数调用关系子图的调用信息具有相同的所述类型信息;
其中,所述函数调用关系图谱包括所述多个函数调用关系子图。
5.根据权利要求2所述的方法,其特征在于,所述通过所述函数调用关系集合,构建与所述待定位调用信息匹配的函数调用关系链,包括:
基于所述待定位调用信息所对应的类型信息,从所述函数调用关系图谱中确定所述待定位调用信息所属的待定位函数调用关系子图;
从所述待定位函数调用关系子图中,确定所述待定位调用信息对应的待定位调用节点;
将与所述待定位调用节点之间存在所述有向边的调用节点确定为候选调用节点,以及将与各所述候选调用节点之间存在所述有向边的调用节点确定为次候选调用节点;
通过所述待定位调用节点、各所述候选调用节点、以及各所述次候选调用节点,构建所述函数调用关系链;
其中,所述函数调用关系链至少包括:与所述待定位调用信息相邻的候选调用信息,所述候选调用信息与所述候选调用节点对应。
6.根据权利要求1所述的方法,其特征在于,所述获取调用信息之间的函数调用关系集合,包括:
获取目标业务应用中每一所述调用信息之间的函数调用关系集合;
所述确定被调用的待定位调用信息,包括:
确定所述目标业务应用中被调用的所述待定位调用信息,所述待定位调用信息为与敏感信息或隐私信息相关的调用信息;
所述方法还包括:
通过所述目标调用信息,确定在所述目标业务应用中请求调用所述待定位调用信息的目标调用位置。
7.根据权利要求1所述的方法,其特征在于,所述调用信息为调用函数;
所述获取调用信息之间的函数调用关系集合,包括:
获取多个所述调用函数之间的函数调用关系,并构建所述调用函数之间的函数调用关系集合;
其中,所述待定位调用信息为待定位调用函数;所述函数调用关系链由多个相邻的待定位调用函数组成,相邻调用函数之间存在函数调用关系,且所述函数调用关系链的终止调用函数为所述待定位调用函数;所述目标调用信息为请求调用所述待定位调用函数的调用函数。
8.根据权利要求1所述的方法,其特征在于,所述调用信息为函数字段;
所述获取调用信息之间的函数调用关系集合,包括:
获取多个所述函数字段之间的函数调用关系,并构建所述函数字段之间的函数调用关系集合;
其中,所述待定位调用信息为待定位函数字段;所述函数调用关系链由多个相邻的待定位函数字段组成,相邻函数字段之间存在函数调用关系,且所述函数调用关系链的终止函数字段为所述待定位函数字段;所述目标调用信息为请求调用所述待定位函数字段的函数字段。
9.一种调用信息的定位装置,其特征在于,所述装置包括:
函数调用关系获取模块,用于获取调用信息之间的函数调用关系集合,所述调用信息至少包括:调用函数以及函数字段,所述函数调用关系集合包括多个调用信息之间的函数调用关系;
调用信息确定模块,用于确定被调用的待定位调用信息;
关系链构建模块,用于通过所述函数调用关系集合,构建与所述待定位调用信息匹配的函数调用关系链,所述函数调用关系链由多个相邻的调用信息组成,相邻调用信息之间存在函数调用关系,且所述函数调用关系链的终止调用信息为所述待定位调用信息;
定位模块,用于对每一所述函数调用关系链进行信息分析处理,以确定目标调用信息,所述目标调用信息为请求调用所述待定位调用信息的调用信息。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
12.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
CN202211614907.8A 2022-12-15 2022-12-15 调用信息的定位方法、装置、计算机设备和存储介质 Pending CN116974715A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211614907.8A CN116974715A (zh) 2022-12-15 2022-12-15 调用信息的定位方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211614907.8A CN116974715A (zh) 2022-12-15 2022-12-15 调用信息的定位方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN116974715A true CN116974715A (zh) 2023-10-31

Family

ID=88473720

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211614907.8A Pending CN116974715A (zh) 2022-12-15 2022-12-15 调用信息的定位方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN116974715A (zh)

Similar Documents

Publication Publication Date Title
CN110297689B (zh) 智能合约执行方法、装置、设备及介质
US8924402B2 (en) Generating a test workload for a database
CN112685433B (zh) 元数据更新方法、装置、电子设备及计算机可读存储介质
CN112070608B (zh) 信息处理方法、装置、介质及电子设备
CN112287013B (zh) 数据转换方法及适配器
WO2020232883A1 (zh) 脚本缺陷扫描方法、装置、计算机设备和存储介质
US9064042B2 (en) Instrumenting computer program code by merging template and target code methods
CN111124872A (zh) 基于差异代码分析的分支检测方法、装置及存储介质
CN116628773A (zh) 数据处理方法、装置、电子设备及存储介质
CN116910820A (zh) 数据报表处理方法、装置、计算机设备以及存储介质
CN116974715A (zh) 调用信息的定位方法、装置、计算机设备和存储介质
CN115658794A (zh) 数据查询方法、装置、计算机设备和存储介质
CN115934537A (zh) 接口测试工具生成方法、装置、设备、介质及产品
US20170286195A1 (en) Information object system
CN112035471A (zh) 一种事务处理方法及计算机设备
Chow et al. A Mobile Forensic Visualization Tool For Android Data Partition
CN115203176B (zh) 数据库操作方法、装置、设备、存储介质和程序产品
US11275569B1 (en) Techniques and architectures for providing continuous integration (CI) and/or continuous delivery (CD) in a data lake environment
CN115390912B (zh) 资源发现方法、装置、计算机设备和存储介质
CN113420288B (zh) 一种容器镜像敏感信息检测系统及方法
US20240134641A1 (en) Scanning application code to detect and classify sdk data into data categories
US20240134642A1 (en) Methods and graphical user interfaces for scanning application code to detect and classify sdk data into data categories
CN116258597A (zh) 单据处理方法、装置、计算机设备和存储介质
CN117075864A (zh) 应用程序包生成方法、应用日志生成以及处理方法和装置
CN116737541A (zh) 测试定位方法、装置、计算机设备和计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication