CN108037989A - Sdk组件识别方法及装置 - Google Patents

Sdk组件识别方法及装置 Download PDF

Info

Publication number
CN108037989A
CN108037989A CN201711354597.XA CN201711354597A CN108037989A CN 108037989 A CN108037989 A CN 108037989A CN 201711354597 A CN201711354597 A CN 201711354597A CN 108037989 A CN108037989 A CN 108037989A
Authority
CN
China
Prior art keywords
sdk
call stack
application program
stack data
call
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
CN201711354597.XA
Other languages
English (en)
Other versions
CN108037989B (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.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software 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 Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201711354597.XA priority Critical patent/CN108037989B/zh
Publication of CN108037989A publication Critical patent/CN108037989A/zh
Application granted granted Critical
Publication of CN108037989B publication Critical patent/CN108037989B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application

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)
  • Telephone Function (AREA)

Abstract

本公开是关于SDK组件识别方法及装置。该方法包括:获取调用栈数据,调用栈数据为终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据;对调用栈数据进行检测;当检测结果满足预设条件时,确定应用程序通过第三方SDK组件调用目标SDK组件。该技术方案可以使目标SDK服务的提供方能够在第三方SDK组件非法调用目标SDK组件时获知上述状况,改善了用户体验。

Description

SDK组件识别方法及装置
技术领域
本公开涉及计算机技术领域,尤其涉及软件开发工具包SDK组件识别方法及装置。
背景技术
随着网络技术的发展,市场上应用程序(Application,app)的数量也迅速增多。为了降低APP开发的难度,一些厂商相继推出了软件开发工具包(Software DevelopmentKit,SDK),SDK是针对特定的软件包、软件框架、硬件平台、操作系统等用于在建立APP时的使用的开发工具的集合,例如Android SDK等,APP在启动不同服务时,可以通过调用相应的SDK组件以实现相应的功能,例如在启动搜索服务时可以调用针对搜索服务的SDK组件,在启动推送服务时可以调用针对推送服务的SDK组件等。
发明内容
为克服相关技术中存在的问题,本公开的实施例提供一种SDK组件识别方法及装置。技术方案如下:
根据本公开的实施例的第一方面,提供一种SDK组件识别方法,包括:。
获取调用栈数据,调用栈数据为终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据;
对调用栈数据进行检测;
当检测结果满足预设条件时,确定应用程序通过第三方SDK组件调用目标SDK组件。
本公开的实施例提供的技术方案中,通过获取调用栈数据,即终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据,其中调用栈数据包括应用程序运行时每个线程的函数参数、返回地址、调用现场以及局部变量等信息,若该应用程序通过第三方SDK组件间接调用目标SDK组件的初始化函数,则该调用栈数据包括因该第三方SDK组件的间接调用而产生的与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等,通过对调用栈数据进行检测,当检测结果满足预设条件,即确定该调用栈数据中包括与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等时,确定应用程序通过第三方SDK组件调用目标SDK组件,使目标SDK服务的提供方能够在第三方SDK组件非法调用目标SDK组件时获知上述状况,改善了用户体验。
在一个实施例中,对调用栈数据进行检测,包括:
检测调用栈数据中是否包括非法关键字;
当检测结果满足预设条件时,确定应用程序通过第三方SDK组件调用目标SDK组件,包括:
当调用栈数据包括至少一个非法关键字时,确定应用程序通过第三方SDK组件调用目标SDK组件。
在一个实施例中,方法还包括:
获取关键字配置信息,并根据关键字配置信息获取非法关键字。
在一个实施例中,方法还包括:
获取用于指示应用程序的应用程序标识信息;
当应用程序通过第三方SDK组件调用目标SDK组件时,根据应用程序标识信息确定非法应用程序。
根据本公开的实施例的第二方面,提供一种SDK组件识别方法,方法应用于终端,包括:
当终端上的应用程序调用目标SDK组件的初始化函数时,获取调用栈数据,调用栈数据为应用程序的调用栈中的数据;
向服务器发送调用栈数据。
在一个实施例中,方法还包括:
向服务器发送用于指示应用程序的应用程序标识信息。
根据本公开的实施例的第三方面,提供一种SDK组件识别装置,包括:
调用栈数据获取模块,用于获取调用栈数据,调用栈数据为终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据;
调用栈数据检测模块,用于对调用栈数据进行检测;
第三方组件确定模块,用于当检测结果满足预设条件时,确定应用程序通过第三方SDK组件调用目标SDK组件。
在一个实施例中,调用栈数据检测模块,包括:
关键字检测子模块,用于检测调用栈数据中是否包括非法关键字;
第三方组件确定模块,包括:
第三方组件确定子模块,用于当调用栈数据包括至少一个非法关键字时,确定应用程序通过第三方SDK组件调用目标SDK组件。
在一个实施例中,装置还包括:
关键字配置获取模块,用于获取关键字配置信息,并根据关键字配置信息获取非法关键字。
在一个实施例中,装置还包括:
应用程序标识获取模块,用于获取用于指示应用程序的应用程序标识信息;
非法应用程序确定模块,用于当应用程序通过第三方SDK组件调用目标SDK组件时,根据应用程序标识信息确定非法应用程序。
根据本公开的实施例的第四方面,提供一种SDK组件识别装置,包括:
调用栈数据获取模块,用于当终端上的应用程序调用目标SDK组件的初始化函数时,获取调用栈数据,调用栈数据为应用程序的调用栈中的数据;
调用栈数据发送模块,用于向服务器发送调用栈数据。
在一个实施例中,装置还包括:
应用程序标识发送模块,用于向服务器发送用于指示应用程序的应用程序标识信息。
根据本公开的实施例的第五方面,提供一种SDK组件识别装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器被配置为:
获取调用栈数据,调用栈数据为终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据;
对调用栈数据进行检测;
当检测结果满足预设条件时,确定应用程序通过第三方SDK组件调用目标SDK组件。
根据本公开的实施例的第六方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现本公开的实施例的第一方面种任一项方法的步骤。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的SDK组件识别方法的应用程序场景图;
图2a是根据一示例性实施例示出的SDK组件识别方法的流程示意图1;
图2b是根据一示例性实施例示出的SDK组件识别方法的流程示意图2;
图3a是根据一示例性实施例示出的SDK组件识别方法的流程示意图1;
图3b是根据一示例性实施例示出的SDK组件识别方法的流程示意图2;
图4是根据一示例性实施例示出的SDK组件识别方法的交互流程示意图;
图5a是根据一示例性实施例示出的SDK组件识别装置的结构示意图1;
图5b是根据一示例性实施例示出的SDK组件识别装置的结构示意图2;
图5c是根据一示例性实施例示出的SDK组件识别装置的结构示意图3;
图5d是根据一示例性实施例示出的SDK组件识别装置的结构示意图4;
图6a是根据一示例性实施例示出的SDK组件识别装置的结构示意图1;
图6b是根据一示例性实施例示出的SDK组件识别装置的结构示意图2;
图7是根据一示例性实施例示出的一种装置的框图;
图8是根据一示例性实施例示出的一种装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
随着科学技术的高速发展和人们生活水平的不断提高,近年来终端上APP的功能逐渐增强,开发APP的难度也逐渐增大。由于在开发APP时使用SDK能够有效降低开发APP的难度,因此SDK逐渐受到APP开发者的欢迎,市场上SDK的数量也逐渐增多。在相关技术中,市场上部分第三方提供的SDK的组件在被调用时,可能会非法调用第一方厂商提供的SDK中的组件,从而在第一方厂商不知情的前提下增加了第一方厂商提供的SDK服务的负担。例如,当使用第三方SDK开发的APP在调用第三方SDK的推送组件时,该第三方SDK的组件会间接调用第一方SDK的推送组件,以借助第一方厂商提供的推送服务器实现相应的推送功能,从而在第一方厂商不知情的前提下增加了第一方厂商的推送服务器的负担。
为了解决上述问题,本公开的实施例提供的技术方案中,通过获取调用栈数据,即终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据,其中调用栈数据包括应用程序运行时每个线程的函数参数、返回地址、调用现场以及局部变量等信息,若该应用程序通过第三方SDK组件间接调用目标SDK组件的初始化函数,则该调用栈数据包括因该第三方SDK组件的间接调用而产生的与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等,通过对调用栈数据进行检测,当检测结果满足预设条件,即确定该调用栈数据中包括与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等时,确定应用程序通过第三方SDK组件调用目标SDK组件,使目标SDK服务的提供方能够在第三方SDK组件非法调用目标SDK组件时获知上述状况,改善了用户体验。
本公开的实施例提供的技术方案,涉及如图1所示的三方:服务器101和终端102,其中,终端102可以为手机,平板电脑,智能可穿戴装置,以及其他能够与服务器101进行交互的设备,本公开的实施例对此不做限定。服务器101,可以为由SDK组件识别服务运营商提供并使用的提供计算服务的设备,也可以为由网络运营商提供由SDK组件识别服务运营商使用的提供计算服务的设备。服务器101与终端102通过有线或无线通信网络建立数据连接。
本公开的实施例提供了一种SDK组件识别方法,该方法应用于服务器,如图2a所示,包括如下步骤201至步骤203:
在步骤201中,获取调用栈数据。
其中,调用栈数据为终端上的应用程序调用目标SDK组件的初始化函数时,该应用程序的调用栈中的数据。
示例性的,目标SDK组件的初始化函数为目标SDK组件在被调用时所执行的首个函数,获取调用栈数据,可以为服务器接收终端发送的调用栈数据,也可以为服务器读取事先储存在服务器中的调用栈数据,或服务器从其他装置或系统处获取调用栈数据。例如,可以在目标SDK组件的初始化函数中插入相应代码,从而在目标SDK组件的初始化函数被应用程序调用时触发该相应代码,控制终端读取该应用程序的调用栈中的数据即调用栈数据,并向服务器发送该调用栈数据。
在步骤202中,对调用栈数据进行检测。
在步骤203中,当检测结果满足预设条件时,确定应用程序通过第三方SDK组件调用目标SDK组件。
示例性的,对调用栈数据进行检测,可以为检测调用栈数据是否包括非法关键字,其中非法关键字可以为与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量名称等,该非法关键字可以为事先生成的,也可以为服务器获取关键字配置信息,并根据关键字配置信息获取非法关键字,关键字配置信息可以为事先储存在服务器上,也可以为服务器从其他装置或系统处获取。当调用栈数据包括至少一个非法关键字时,可以理解为检测结果满足预设条件,确定应用程序通过第三方SDK组件调用目标SDK组件。对调用栈数据进行检测,也可以为将调用栈数据与标准数据进行对比,其中标准数据为应用程序直接调用目标SDK组件时该应用程序的调用栈中国的数据,当调用栈数据与标准数据的相似度小于或等于相似度阈值时,确定应用程序通过第三方SDK组件调用目标SDK组件。
需要说明的是,通过检测调用栈数据中是否包括非法关键字,并在调用栈数据包括至少一个非法关键字时,确定应用程序通过第三方SDK组件调用目标SDK组件,可以提高检测调用栈数据的速度,从而加快确定应用程序通过第三方SDK组件调用目标SDK组件的速度,改善了用户体验。
本公开的实施例提供的技术方案中,获取调用栈数据,即终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据,其中调用栈数据包括应用程序运行时每个线程的函数参数、返回地址、调用现场以及局部变量等信息,若该应用程序通过第三方SDK组件间接调用目标SDK组件的初始化函数,则该调用栈数据包括因该第三方SDK组件的间接调用而产生的与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等,通过对调用栈数据进行检测,当检测结果满足预设条件,即确定该调用栈数据中包括与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等时,确定应用程序通过第三方SDK组件调用目标SDK组件。
在一个实施例中,如图2b所示,SDK组件识别方法还包括步骤204与步骤205:
在步骤204中,获取用于指示应用程序的应用程序标识信息。
示例性的,获取用于指示应用程序的应用程序标识信息,可以为在接收终端发送的调用栈数据时,接收该终端一同发送的应用程序标识信息,也可以为读取事先储存在服务器中的应用程序标识信息。
需要说明的是,步骤204与步骤202至步骤203的先后顺序可以相互颠倒。
在步骤205中,当应用程序通过第三方SDK组件调用目标SDK组件时,根据应用程序标识信息确定非法应用程序。
由于在应用程序通过第三方SDK组件调用目标SDK组件时,可以认为该第三方SDK会通过非法调用目标SDK组件加重目标SDK服务的负担,因此认为该第三方SDK为非法SDK,而使用该第三方SDK开发的应用程序为非法应用程序,因此根据应用程序标识信息确定非法应用程序,能够使目标SDK服务的提供方能够那些应用程序在执行时会发生第三方SDK组件非法调用目标SDK组件的状况,改善了用户体验。
本公开的实施例提供了一种SDK组件识别方法,该方法应用于终端,如图3a所示,包括如下步骤301至步骤302:
在步骤301中,当终端上的应用程序调用目标SDK组件的初始化函数时,获取调用栈数据。
其中,调用栈数据为应用程序的调用栈中的数据。
在步骤302中,向服务器发送调用栈数据。
通过在终端上的应用程序调用目标SDK组件的初始化函数时,获取调用栈数据,并向服务器发送调用栈数据,可以使服务器通过获取调用栈数据,即终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据,其中调用栈数据包括应用程序运行时每个线程的函数参数、返回地址、调用现场以及局部变量等信息,若该应用程序通过第三方SDK组件间接调用目标SDK组件的初始化函数,则该调用栈数据包括因该第三方SDK组件的间接调用而产生的与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等,服务器通过对调用栈数据进行检测,当检测结果满足预设条件,即确定该调用栈数据中包括与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等时,确定应用程序通过第三方SDK组件调用目标SDK组件,使目标SDK服务的提供方能够在第三方SDK组件非法调用目标SDK组件时获知上述状况,改善了用户体验。
在一个实施例中,如图3b所示,SDK组件识别方法还包括步骤303:
在步骤303中,向服务器发送用于指示应用程序的应用程序标识信息。
通过向服务器发送用于指示应用程序的应用程序标识信息,能够使服务器根据应用程序标识信息确定非法应用程序,从而使目标SDK服务的提供方能够那些应用程序在执行时会发生第三方SDK组件非法调用目标SDK组件的状况,改善了用户体验。
下面通过实施例详细介绍实现过程。
图4是根据一示例性实施例示出的一种SDK组件识别方法的交互流程示意图进行说明。如图3所示,包括以下步骤:
在步骤401中,当终端上的应用程序调用目标SDK组件的初始化函数时,终端获取调用栈数据。
其中,调用栈数据为应用程序的调用栈中的数据。
在步骤402中,终端向服务器发送调用栈数据。
在步骤403中,服务器获取关键字配置信息,并根据关键字配置信息获取非法关键字。
在步骤404中,服务器检测调用栈数据中是否包括非法关键字。
在步骤405中,当调用栈数据包括至少一个非法关键字时,服务器确定应用程序通过第三方SDK组件调用目标SDK组件。
在步骤406中,终端向服务器发送用于指示应用程序的应用程序标识信息。
在步骤407中,服务器接收应用程序标识信息。
在步骤408中,服务器根据应用程序标识信息确定非法应用程序。
本公开的实施例提供的技术方案中,获取调用栈数据,即终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据,其中调用栈数据包括应用程序运行时每个线程的函数参数、返回地址、调用现场以及局部变量等信息,若该应用程序通过第三方SDK组件间接调用目标SDK组件的初始化函数,则该调用栈数据包括因该第三方SDK组件的间接调用而产生的与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等,通过对调用栈数据进行检测,当检测结果满足预设条件,即确定该调用栈数据中包括与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等时,确定应用程序通过第三方SDK组件调用目标SDK组件,使目标SDK服务的提供方能够在第三方SDK组件非法调用目标SDK组件时获知上述状况,改善了用户体验。
下述为本公开装置实施例,可以用于执行本公开方法实施例。
图5a是根据一个示例性实施例示出的一种SDK组件识别装置50的框图,SDK组件识别装置50可以为服务器也可以为服务器的一部分,SDK组件识别装置50可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图5a所示,该SDK组件识别装置50包括:
调用栈数据获取模块501,用于获取调用栈数据,调用栈数据为终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据;
调用栈数据检测模块502,用于对调用栈数据进行检测;
第三方组件确定模块503,用于当检测结果满足预设条件时,确定应用程序通过第三方SDK组件调用目标SDK组件。
在一个实施例中,如图5b所示,调用栈数据检测模块502,包括:
关键字检测子模块5021,用于检测调用栈数据中是否包括非法关键字。
第三方组件确定模块503,包括:
第三方组件确定子模块5031,用于当调用栈数据包括至少一个非法关键字时,确定应用程序通过第三方SDK组件调用目标SDK组件。
在一个实施例中,如图5c所示,SDK组件识别装置50还包括:
关键字配置获取模块504,用于获取关键字配置信息,并根据关键字配置信息获取非法关键字。
在一个实施例中,如图5d所示,SDK组件识别装置50还包括:
应用程序标识获取模块505,用于获取用于指示应用程序的应用程序标识信息;
非法应用程序确定模块506,用于当应用程序通过第三方SDK组件调用目标SDK组件时,根据应用程序标识信息确定非法应用程序。
本公开的实施例提供一种SDK组件识别装置,该SDK组件识别装置可以通过获取调用栈数据,即终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据,其中调用栈数据包括应用程序运行时每个线程的函数参数、返回地址、调用现场以及局部变量等信息,若该应用程序通过第三方SDK组件间接调用目标SDK组件的初始化函数,则该调用栈数据包括因该第三方SDK组件的间接调用而产生的与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等,通过对调用栈数据进行检测,当检测结果满足预设条件,即确定该调用栈数据中包括与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等时,确定应用程序通过第三方SDK组件调用目标SDK组件,使目标SDK服务的提供方能够在第三方SDK组件非法调用目标SDK组件时获知上述状况,改善了用户体验。
下述为本公开装置实施例,可以用于执行本公开方法实施例。
图6a是根据一个示例性实施例示出的一种SDK组件识别装置60的框图,SDK组件识别装置60可以为终端也可以为终端的一部分,SDK组件识别装置60可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图6a所示,该SDK组件识别装置60包括:
调用栈数据获取模块601,用于当终端上的应用程序调用目标SDK组件的初始化函数时,获取调用栈数据,调用栈数据为应用程序的调用栈中的数据。
调用栈数据发送模块602,用于向服务器发送调用栈数据。
在一个实施例中,如图6b所示,SDK组件识别装置60还包括:
应用程序标识发送模块603,用于向服务器发送用于指示应用程序的应用程序标识信息。
本公开的实施例提供一种SDK组件识别装置,该SDK组件识别装置可以通过在终端上的应用程序调用目标SDK组件的初始化函数时,获取调用栈数据,并向服务器发送调用栈数据,可以使服务器通过获取调用栈数据,即终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据,其中调用栈数据包括应用程序运行时每个线程的函数参数、返回地址、调用现场以及局部变量等信息,若该应用程序通过第三方SDK组件间接调用目标SDK组件的初始化函数,则该调用栈数据包括因该第三方SDK组件的间接调用而产生的与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等,服务器通过对调用栈数据进行检测,当检测结果满足预设条件,即确定该调用栈数据中包括与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等时,确定应用程序通过第三方SDK组件调用目标SDK组件,使目标SDK服务的提供方能够在第三方SDK组件非法调用目标SDK组件时获知上述状况,改善了用户体验。
图7是根据一示例性实施例示出的一种SDK组件识别装置70的框图,该SDK组件识别装置70可以为服务器,也可以为服务器的一部分,SDK组件识别装置70包括:
处理器701;
用于存储处理器701可执行指令的存储器702;
其中,处理器701被配置为:
获取调用栈数据,调用栈数据为终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据;
对调用栈数据进行检测;
当检测结果满足预设条件时,确定应用程序通过第三方SDK组件调用目标SDK组件。
在一个实施例中,上述处理器701还可以被配置为:
对调用栈数据进行检测,包括:
检测调用栈数据中是否包括非法关键字;
当检测结果满足预设条件时,确定应用程序通过第三方SDK组件调用目标SDK组件,包括:
当调用栈数据包括至少一个非法关键字时,确定应用程序通过第三方SDK组件调用目标SDK组件。
在一个实施例中,上述处理器701还可以被配置为:
获取关键字配置信息,并根据关键字配置信息获取非法关键字。
在一个实施例中,上述处理器701还可以被配置为:
获取用于指示应用程序的应用程序标识信息;
当应用程序通过第三方SDK组件调用目标SDK组件时,根据应用程序标识信息确定非法应用程序。
本公开的实施例提供一种SDK组件识别装置,该SDK组件识别装置可以通过获取调用栈数据,即终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据,其中调用栈数据包括应用程序运行时每个线程的函数参数、返回地址、调用现场以及局部变量等信息,若该应用程序通过第三方SDK组件间接调用目标SDK组件的初始化函数,则该调用栈数据包括因该第三方SDK组件的间接调用而产生的与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等,通过对调用栈数据进行检测,当检测结果满足预设条件,即确定该调用栈数据中包括与第三方SDK组件相关联的函数参数、返回地址、调用现场或局部变量等时,确定应用程序通过第三方SDK组件调用目标SDK组件,使目标SDK服务的提供方能够在第三方SDK组件非法调用目标SDK组件时获知上述状况,改善了用户体验。
图8是根据一示例性实施例示出的一种用于识别SDK组件的装置800的框图。例如,装置800可以被提供为一服务器。装置800包括处理组件822,其进一步包括一个或多个处理器,以及由存储器832所代表的存储器资源,用于存储可由处理组件822的执行的指令,例如应用程序。存储器832中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件822被配置为执行指令,以执行上述方法。
装置800还可以包括一个电源组件826被配置为执行装置800的电源管理,一个有线或无线网络接口850被配置为将装置800连接到网络,和一个输入输出(I/O)接口858。装置800可以操作基于存储在存储器832的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置800的处理器执行时,使得装置800能够执行SDK组件识别方法,所述方法包括:
获取调用栈数据,调用栈数据为终端上的应用程序调用目标SDK组件的初始化函数时应用程序的调用栈中的数据;
对调用栈数据进行检测;
当检测结果满足预设条件时,确定应用程序通过第三方SDK组件调用目标SDK组件。
在一个实施例中,对调用栈数据进行检测,包括:
检测调用栈数据中是否包括非法关键字;
当检测结果满足预设条件时,确定应用程序通过第三方SDK组件调用目标SDK组件,包括:
当调用栈数据包括至少一个非法关键字时,确定应用程序通过第三方SDK组件调用目标SDK组件。
在一个实施例中,所述方法还包括:
获取关键字配置信息,并根据关键字配置信息获取非法关键字。
在一个实施例中,所述方法还包括:
获取用于指示应用程序的应用程序标识信息;
当应用程序通过第三方SDK组件调用目标SDK组件时,根据应用程序标识信息确定非法应用程序。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (14)

1.一种SDK组件识别方法,其特征在于,所述方法应用于服务器,包括:
获取调用栈数据,所述调用栈数据为终端上的应用程序调用目标SDK组件的初始化函数时所述应用程序的调用栈中的数据;
对所述调用栈数据进行检测;
当检测结果满足预设条件时,确定所述应用程序通过第三方SDK组件调用所述目标SDK组件。
2.根据权利要求1所述的SDK组件识别方法,其特征在于,所述对所述调用栈数据进行检测,包括:
检测所述调用栈数据中是否包括非法关键字;
所述当检测结果满足预设条件时,确定所述应用程序通过第三方SDK组件调用所述目标SDK组件,包括:
当所述调用栈数据包括至少一个非法关键字时,确定所述应用程序通过第三方SDK组件调用所述目标SDK组件。
3.根据权利要求2所述的SDK组件识别方法,其特征在于,所述方法还包括:
获取关键字配置信息,并根据所述关键字配置信息获取所述非法关键字。
4.根据权利要求1所述的SDK组件识别方法,其特征在于,所述方法还包括:
获取用于指示所述应用程序的应用程序标识信息;
当所述应用程序通过第三方SDK组件调用所述目标SDK组件时,根据所述应用程序标识信息确定非法应用程序。
5.一种SDK组件识别方法,其特征在于,所述方法应用于终端,包括:
当终端上的应用程序调用目标SDK组件的初始化函数时,获取调用栈数据,所述调用栈数据为所述应用程序的调用栈中的数据;
向服务器发送所述调用栈数据。
6.根据权利要求5所述的SDK组件识别方法,其特征在于,所述方法还包括:
向所述服务器发送用于指示所述应用程序的应用程序标识信息。
7.一种SDK组件识别装置,其特征在于,包括:
调用栈数据获取模块,用于获取调用栈数据,所述调用栈数据为终端上的应用程序调用目标SDK组件的初始化函数时所述应用程序的调用栈中的数据;
调用栈数据检测模块,用于对所述调用栈数据进行检测;
第三方组件确定模块,用于当检测结果满足预设条件时,确定所述应用程序通过第三方SDK组件调用所述目标SDK组件。
8.根据权利要求7所述的SDK组件识别装置,其特征在于,所述调用栈数据检测模块,包括:
关键字检测子模块,用于检测所述调用栈数据中是否包括非法关键字;
所述第三方组件确定模块,包括:
第三方组件确定子模块,用于当所述调用栈数据包括至少一个非法关键字时,确定所述应用程序通过第三方SDK组件调用所述目标SDK组件。
9.根据权利要求8所述的SDK组件识别模块,其特征在于,所述装置还包括:
关键字配置获取模块,用于获取关键字配置信息,并根据所述关键字配置信息获取所述非法关键字。
10.根据权利要求7所述的SDK组件识别装置,其特征在于,所述装置还包括:
应用程序标识获取模块,用于获取用于指示所述应用程序的应用程序标识信息;
非法应用程序确定模块,用于当所述应用程序通过第三方SDK组件调用所述目标SDK组件时,根据所述应用程序标识信息确定非法应用程序。
11.一种SDK组件识别装置,其特征在于,包括:
调用栈数据获取模块,用于当终端上的应用程序调用目标SDK组件的初始化函数时,获取调用栈数据,所述调用栈数据为所述应用程序的调用栈中的数据;
调用栈数据发送模块,用于向服务器发送所述调用栈数据。
12.根据权利要求11所述的SDK组件识别装置,其特征在于,所述装置还包括:
应用程序标识发送模块,用于向所述服务器发送用于指示所述应用程序的应用程序标识信息。
13.一种SDK组件识别装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取调用栈数据,所述调用栈数据为终端上的应用程序调用目标SDK组件的初始化函数时所述应用程序的调用栈中的数据;
对所述调用栈数据进行检测;
当检测结果满足预设条件时,确定所述应用程序通过第三方SDK组件调用所述目标SDK组件。
14.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现权利要求1-4任一项所述方法的步骤。
CN201711354597.XA 2017-12-15 2017-12-15 Sdk组件识别方法及装置 Active CN108037989B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711354597.XA CN108037989B (zh) 2017-12-15 2017-12-15 Sdk组件识别方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711354597.XA CN108037989B (zh) 2017-12-15 2017-12-15 Sdk组件识别方法及装置

Publications (2)

Publication Number Publication Date
CN108037989A true CN108037989A (zh) 2018-05-15
CN108037989B CN108037989B (zh) 2021-11-30

Family

ID=62103198

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711354597.XA Active CN108037989B (zh) 2017-12-15 2017-12-15 Sdk组件识别方法及装置

Country Status (1)

Country Link
CN (1) CN108037989B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110569644A (zh) * 2018-06-06 2019-12-13 阿里巴巴集团控股有限公司 调用请求的处理、功能函数的调用方法、装置及设备
CN111309551A (zh) * 2020-02-10 2020-06-19 北京达佳互联信息技术有限公司 一种确定事件监控sdk集成正确的方法及装置
CN111654495A (zh) * 2020-06-03 2020-09-11 百度在线网络技术(北京)有限公司 用于确定流量产生来源的方法、装置、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101661425A (zh) * 2008-08-26 2010-03-03 国际商业机器公司 测试覆盖分析方法和装置
US20130103840A1 (en) * 2011-10-21 2013-04-25 Canon Imaging Systems Inc. Information processing apparatus that controls connection of devices, method of controlling the apparatus, and device control system
CN103823665A (zh) * 2012-11-19 2014-05-28 中国移动通信集团公司 一种sdk活跃度分析方法、网络服务器及系统
CN104751051A (zh) * 2013-12-31 2015-07-01 贝壳网际(北京)安全技术有限公司 恶意广告的识别方法及装置、移动终端
CN106528421A (zh) * 2016-11-09 2017-03-22 国网浙江省电力公司电力科学研究院 一种Android应用中SDK处理方法
CN107194277A (zh) * 2017-05-15 2017-09-22 华中科技大学 面向安卓广告库的细粒度权限管理方法及系统
CN107329742A (zh) * 2017-06-14 2017-11-07 北京小米移动软件有限公司 软件开发工具包调用方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101661425A (zh) * 2008-08-26 2010-03-03 国际商业机器公司 测试覆盖分析方法和装置
US20130103840A1 (en) * 2011-10-21 2013-04-25 Canon Imaging Systems Inc. Information processing apparatus that controls connection of devices, method of controlling the apparatus, and device control system
CN103823665A (zh) * 2012-11-19 2014-05-28 中国移动通信集团公司 一种sdk活跃度分析方法、网络服务器及系统
CN104751051A (zh) * 2013-12-31 2015-07-01 贝壳网际(北京)安全技术有限公司 恶意广告的识别方法及装置、移动终端
CN106528421A (zh) * 2016-11-09 2017-03-22 国网浙江省电力公司电力科学研究院 一种Android应用中SDK处理方法
CN107194277A (zh) * 2017-05-15 2017-09-22 华中科技大学 面向安卓广告库的细粒度权限管理方法及系统
CN107329742A (zh) * 2017-06-14 2017-11-07 北京小米移动软件有限公司 软件开发工具包调用方法及装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110569644A (zh) * 2018-06-06 2019-12-13 阿里巴巴集团控股有限公司 调用请求的处理、功能函数的调用方法、装置及设备
CN110569644B (zh) * 2018-06-06 2023-05-09 阿里巴巴集团控股有限公司 调用请求的处理、功能函数的调用方法、装置及设备
CN111309551A (zh) * 2020-02-10 2020-06-19 北京达佳互联信息技术有限公司 一种确定事件监控sdk集成正确的方法及装置
CN111309551B (zh) * 2020-02-10 2023-08-08 北京达佳互联信息技术有限公司 一种确定事件监控sdk集成正确的方法及装置
CN111654495A (zh) * 2020-06-03 2020-09-11 百度在线网络技术(北京)有限公司 用于确定流量产生来源的方法、装置、设备及存储介质
CN111654495B (zh) * 2020-06-03 2023-06-27 百度在线网络技术(北京)有限公司 用于确定流量产生来源的方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN108037989B (zh) 2021-11-30

Similar Documents

Publication Publication Date Title
CN105119722B (zh) 一种身份验证方法、设备及系统
CN111027070B (zh) 恶意应用检测方法、介质、设备及装置
CN104767713B (zh) 账号绑定的方法、服务器及系统
CN105740137B (zh) 分桶测试方法和提供配置信息的方法、装置及系统
CN106411517B (zh) 一种密码重置方法及装置
US10867050B2 (en) Method and apparatus for generating dynamic security module
CN108037989A (zh) Sdk组件识别方法及装置
WO2018149137A1 (zh) 无线保真Wi-Fi连接方法及相关产品
US11070529B2 (en) Method for wireless fidelity connection and related products
CN108616360A (zh) 用户身份校验、注册方法及装置
CN108132850B (zh) 代码定位方法、装置及电子设备
CN106326091A (zh) 一种浏览器网页兼容性的检测方法及系统
WO2020019485A1 (zh) 一种模拟器识别方法、识别设备及计算机可读介质
CN105306202B (zh) 身份验证方法、装置及服务器
CN107318104A (zh) 账号注册方法、装置、计算机设备和介质
CN106230702B (zh) 身份信息验证方法、装置及系统
CN107197241A (zh) 电视应用测试中超时时间动态设置方法和装置
CN109688099A (zh) 服务器端撞库识别方法、装置、设备及可读存储介质
CN105743879B (zh) 智能电视身份识别方法及系统
CN109951549B (zh) 网络页面的访问方法、装置及计算机可读存储介质
CN110752933A (zh) 一种验证码输入方法、装置、电子设备及存储介质
CN108959931B (zh) 漏洞检测方法及装置、信息交互方法及设备
CN106888496B (zh) 一种无线保真Wi-Fi连接方法及移动终端
CN105162799A (zh) 检验客户端是否为合法移动终端的方法以及服务器
CN106162616A (zh) 一种号码拨打的方法及装置

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
GR01 Patent grant
GR01 Patent grant