CN105630684A - 软件开发工具包识别方法和装置 - Google Patents

软件开发工具包识别方法和装置 Download PDF

Info

Publication number
CN105630684A
CN105630684A CN201610052309.4A CN201610052309A CN105630684A CN 105630684 A CN105630684 A CN 105630684A CN 201610052309 A CN201610052309 A CN 201610052309A CN 105630684 A CN105630684 A CN 105630684A
Authority
CN
China
Prior art keywords
file
sdk
class
identification information
mentioned
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
CN201610052309.4A
Other languages
English (en)
Other versions
CN105630684B (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 Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201610052309.4A priority Critical patent/CN105630684B/zh
Publication of CN105630684A publication Critical patent/CN105630684A/zh
Application granted granted Critical
Publication of CN105630684B publication Critical patent/CN105630684B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/53Decompilation; Disassembly

Abstract

本申请公开了软件开发工具包识别方法和装置。所述方法的一具体实施方式包括:对目标应用的程序文件进行反编译;构建所述目标应用的工程目录;在所述工程目录的文件中,查找标识信息,其中,所述标识信息与所述目标应用调用的软件开发工具包相关;通过所述标识信息识别所述目标应用调用的软件开发工具包。该实施方式实现了快速识别目标应用调用的软件开发工具包,从而保证了软件开发工具包运行的可靠性。

Description

软件开发工具包识别方法和装置
技术领域
本申请涉及计算机技术领域,具体涉及互联网技术领域,尤其涉及软件开发工具包识别方法和装置。
背景技术
随着计算机技术尤其是互联网技术的发展,软件即服务(SaaS,Software-as-a-Service)成为一种重要的软件应用模式。软件即服务是一种通过互联网提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得厂商提供的服务。用户不用再购买软件,而改用向提供商租用软件,来管理企业经营活动,且无需对软件进行维护,服务提供商会全权管理和维护软件,软件厂商在向客户提供互联网应用的同时,也提供软件的离线操作和本地数据存储,让用户随时随地都可以使用其定购的软件和服务。
随着软件即服务应用模式的不断发展,服务商提供的服务质量需要日益进化,所以需要对提供的软件开发工具包(SDK,SoftwareDevelopmentKit)的运行状况进行监测,以及时发现技术缺陷,并及时排除;若不能及时发现提供的服务的技术缺陷,则可能降低软件开发工具包运行的可靠性,甚至给客户和服务商造成不可挽回的损失。
发明内容
本申请的目的在于提出一种改进的软件开发工具包识别方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种软件开发工具包识别方法,所述方法包括:对目标应用的程序文件进行反编译;构建所述目标应用的工程目录;在所述工程目录的文件中,查找标识信息,其中,所述标识信息与所述目标应用调用的软件开发工具包相关;通过所述标识信息识别所述目标应用调用的软件开发工具包。
在一些实施例中,所述工程目录的文件包括源码文件,所述标识信息包括调用链;以及,在所述工程目录的文件中,查找标识信息,包括:解析所述源码文件;构建所述源码文件的代码层次;根据所述代码层次建立调用链;识别调用链中调用到的软件开发工具包。
在一些实施例中,所述解析所述源码文件包括:识别类;识别所述类的成员变量和成员函数;识别所述类之间的继承关系;建立包括所述类、所述成员变量、所述成员函数以及所述类之间的继承关系的代码层次。
在一些实施例中,根据所述代码层次建立调用链包括:查找与软件开发工具包的组件的调用相关的信息;根据所述信息,查找调用所述组件的成员函数;查找所述成员函数所属的类,其中,所述类被所述工程入口函数直接调用;建立依次包括所述工程入口函数、所述类、所述函数、所述组件的调用链。
在一些实施例中,所述工程目录中的文件包括动态库文件,所述标识信息包括动态库;以及,在所述工程目录的文件中,查找标识信息,包括:在所述动态库文件搜索所述目标应用所调用的动态库;识别所述动态库所属的软件开发工具包。
在一些实施例中,所述工程目录中的文件包括程序全局配置文件,所述标识信息包括应用程序编程接口密钥;以及,在所述工程目录的文件中,查找标识信息,包括:在所述程序全局配置文件查找应用程序编程接口密钥;识别所述应用程序编程接口密钥所匹配的软件开发工具包。
第二方面,本申请提供了一种软件开发工具包识别装置,所述装置包括:反编译模块,配置用于对目标应用的程序文件进行反编译;构建模块,配置用于构建所述目标应用的工程目录;查找模块,配置用于在所述工程目录的文件中,查找标识信息,其中,所述标识信息与所述目标应用调用的软件开发工具包相关;识别模块,配置用于通过所述标识信息识别所述目标应用调用的软件开发工具包。
在一些实施例中,所述工程目录的文件包括源码文件,所述标识信息包括调用链;以及,在所述工程目录的文件中,查找标识信息,包括:解析所述源码文件;构建所述源码文件的代码层次;根据所述代码层次建立调用链;识别调用链中调用到的软件开发工具包。
在一些实施例中,所述解析所述源码文件包括:识别类;识别所述类的成员变量和成员函数;识别所述类之间的继承关系;建立包括所述类、所述成员变量、所述成员函数以及所述类之间的继承关系的代码层次。
在一些实施例中,根据所述代码层次建立调用链包括:查找与软件开发工具包的组件的调用相关的信息;根据所述信息,查找调用所述组件的成员函数;查找所述成员函数所属的类,其中,所述类被所述工程入口函数直接调用;建立依次包括所述工程入口函数、所述类、所述函数、所述组件的调用链。
在一些实施例中,所述工程目录中的文件包括动态库文件,所述标识信息包括动态库;以及,在所述工程目录的文件中,查找标识信息,包括:在所述动态库文件搜索所述目标应用所调用的动态库;识别所述动态库所属的软件开发工具包。
在一些实施例中,所述工程目录中的文件包括程序全局配置文件,所述标识信息包括应用程序编程接口密钥;以及,在所述工程目录的文件中,查找标识信息,包括:在所述程序全局配置文件查找应用程序编程接口密钥;识别所述应用程序编程接口密钥所匹配的软件开发工具包。
本申请提供的软件开发工具包识别方法和装置,通过首先对目标应用的程序文件进行反编译,构建目标应用的工程目录,然后在工程目录的文件中,查找标识信息,其中,标识信息与目标应用调用的软件开发工具包相关,最后通过标识信息识别目标应用调用的软件开发工具包,实现了快速识别目标应用调用的软件开发工具包,从而保证了软件开发工具包运行的可靠性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是可以应用本申请的软件开发工具包识别方法或软件开发工具包识别装置的实施例的示例性系统架构;
图2是根据本申请的软件开发工具包识别方法的一个实施例的流程图;
图3是根据本申请的软件开发工具包识别方法的又一个实施例的流程图;
图4是根据本申请的软件开发工具包识别装置的一个实施例的结构示意图;
图5是适于用来实现本申请实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的软件开发工具包识别方法或软件开发工具包识别装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送信息等。终端设备101、102、103上可以安装有各种应用程序。
终端设备101、102、103可以是各种电子设备,服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上的运算提供支持的后台软件开发工具包识别服务器。上述后台软件开发工具包识别服务器可以对从终端设备接收到的数据进行存储、分析等处理,并将处理结果反馈给上述终端设备。
如图1所示,通过在终端设备101、102、103上安装通信类应用,这些终端设备可以用发送信息的形式向服务器105发出目标应用的程序文件,之后可以由服务器105来执行上述软件开发工具包识别方法。相应地,软件开发工具包识别装置可以设置于服务器105中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的软件开发工具包识别方法的一个实施例的流程200。上述的软件开发工具包识别方法,包括以下步骤:
步骤201,对目标应用的程序文件进行反编译。
在本实施例中,软件开发工具包识别方法运行于其上的电子设备(例如图1所示的服务器或终端设备)可以从本地或者远程地获取目标应用的程序文件。当目标应用的程序文件已保存在电子设备的存储器中时,上述电子设备可以直接从本地的存储器获取上述目标应用的程序文件。或者,当上述电子设备是与终端设备上有关联的后台服务器时,其可以通过有线连接方式或者无线连接方式从上述终端设备获取目标应用的程序文件。
在本实施例中,目标应用的程序文件是指执行目标应用的功能所需要的程序集合,例如Android安装包(APK,AndroidPackage)。
在本实施例中,可以利用现有的反编译工具对上述目标应用的程序文件进行反编译,例如apktool、dex2jar、jd-gui,因为这些具有反编译功能的工具和使用方法为本领域的技术人员所熟知,在此不做赘述。
步骤202,获取目标应用的工程目录。
在本实施例中,工程目录是反编译后获取的目标应用的工程目录,用于指示与该目标应用相关的文件。在这里,与目标应用相关的文件可以包括但不限于程序全局配置文件(AndroidManifest.xml)、smali文件、源码文件。
步骤203,在工程目录的文件中,查找标识信息。
在本实施例中,根据上述工程目录中的不同文件,查找不同的标识信息。上述标识信息与目标应用所调用的软件开发工具包相关。
在本实施例的一些可选的实现方式中,上述工程目录中的文件包括但不限于程序全局配置文件(AndroidManifest.xml)、smali文件、源码文件。
在本实施例一些可选的实现方式中,上述标识信息可以包括但不限于程序编程接口密钥、动态库中的关键组件。
在本实施例的一些可选的实现方式中,在查找识别信息之前建立软件开发工具包信息集合。在这里,上述软件开发工具包的关键信息集合是指可以用于表征软件开发工具包的一些关键信息的集合。例如,上述软件开发工具包的关键信息集合可以包括但不限于smali文件中的关键字、应用程序编程接口密钥(APIKey,ApplicationProgrammingInterfaceKey)、动态库、动态库中的关键字、关键组件的名称。
在本实施例一些可选的实现方式中,上述工程目录的文件包括源码文件,上述标识信息包括调用链;以及,在上述工程目录的文件中,查找标识信息,包括:解析上述源码文件:构建上述源码文件的代码层次;根据上述代码层次建立调用链;识别调用链中调用到的软件开发工具包。
在本实施例一些可选的实现方式中,上述工程目录中的文件包括smali文件,上述标识信息包括smali文件的文件目录中的关键字,可以通过在上述smali文件搜索上述目标应用用到的上述smali文件的文件目录中的关键字,识别上述动态库所属的软件开发工具包。
在本实施例一些可选的实现方式中,上述工程目录中的文件包括动态库文件,上述标识信息包括动态库,可以通过在上述动态库文件搜索上述目标应用所调用的动态库,识别上述动态库所属的软件开发工具包。
在本实施例一些可选的实现方式中,上述工程目录中的文件包括程序全局配置文件,上述标识信息包括应用程序编程接口密钥,可以通过在上述程序全局配置文件查找应用程序编程接口密钥,识别上述应用程序编程接口密钥所匹配的软件开发工具包。
步骤204,通过标识信息识别目标应用调用的软件开发工具包。
在本实施例中,可以基于上述步骤203,通过上述标识信息确定目标应用调用的软件开发工具包。
本申请的上述实施例提供的方法通过首先对目标应用的程序文件进行反编译,构建目标应用的工程目录,然后在工程目录的文件中,查找标识信息,其中,标识信息与目标应用调用的软件开发工具包相关,最后通过标识信息识别目标应用调用的软件开发工具包,实现了快速识别目标应用调用的软件开发工具包,从而保证了软件开发工具包运行的可靠性。
进一步参考图3,其示出了软件开发工具包识别方法的又一个实施例的流程300。该软件开发工具包识别方法的流程300,包括以下步骤:
步骤301,对目标应用的程序文件进行反编译。
在本实施例中,软件开发工具包识别方法运行于其上的电子设备(例如图1所示的服务器或终端设备)可以从本地或者远程地获取目标应用的程序文件。当目标应用的程序文件已保存在电子设备的存储器中时,上述电子设备可以直接从本地的存储器获取上述目标应用的程序文件。或者,当上述电子设备是与终端设备上有关联的后台服务器时,其可以通过有线连接方式或者无线连接方式从上述终端设备获取目标应用的程序文件。
在本实施例中,目标应用的程序文件是指执行目标应用的功能所需要的程序集合,例如Android安装包(APK,AndroidPackage)。
在本实施例中,可以利用现有的反编译工具对上述目标应用的程序文件进行反编译,例如apktool、dex2jar、jd-gui,因为这些具有反编译功能的工具和使用方法为本领域的技术人员所熟知,在此不做赘述。
步骤302,获取目标应用的源码文件。
在本实施例中,在反编译后的文件中查找目标应用的源码文件。
在本实施例一些可选的实现方式中,首先获取工程目录,工程目录是反编译后获取的目标程序的工程目录,用于指示与该工程目录所属的目标应用相关的文件。在这里,与目标应用相关的文件可以包括但不限于源码文件。然后在于工程目录涉及的文件中查找源码文件。
步骤303,基于语义分析解析源码文件中的源码。
在本实施例中,将源码文件中的源码作为文本,通过识别文本中的语义来分析源码。通常,首先依次识别类的名称,然后识别上述类的成员变量、成员函数,识别上述类之间的继承关系。
在本实施例一些可选的实现方式中,通过识别上述类所属或所调用的包来更准确的识别上述类的调用关系。
在本实施例一些可选的实现方式中,采用关键字匹配规则识别类的名称、类所调用或者所依赖的包、类的成员变量和成员函数。例如,packagecom.xxxx.location中,package作为关键字,能够与动态库关键字集合中的表示包的关键字匹配,则确定packagecom.xxxx.location中package后的com.xxxx.location为包名。
在本实施例一些可选的实现方式中,采用前置关键字的匹配规则识别类、识别上述类的成员变量和成员函数,识别上述类之间的继承关系。例如publicclassLocationimplementsParcelable{…}中,publicclass作为关键字,能够与关键字集合中的表示类的关键字匹配,则确定publicclass后的Location为类名;implements能够与关键字集合中的表示类的调用关系(或者接口)的关键字匹配,则确定Location调用了Parcelable。在这里,因为关键字位于类名称的前面,所以称为前置的匹配规则。
在本实施例一些可选的实现方式中,关键字可以包括但不限于:import、extends、void;其中,import是用于表示类与包之间的调用关系的关键字,extends是用于表示类与类之间的继承关系的关键字,void是用于表示类的成员函数的关键字。本领域的技术人员能够理解的是,关键字根据源码所用编程语言的不同有所差异;前置或者后置的匹配规则根据反编译后的源码的格式不同有所差异,在此不再赘述。
步骤304,构建源码文件的代码层次。
在本实施例中,建立包括上述类、上述成员变量、上述成员函数以及上述类之间的继承关系的代码层次。
在本实施例一些可选的实现方式中,建立包括上述包、上述类、上述成员变量、上述成员函数以及上述类之间的继承关系的代码层次。
步骤305,根据代码层次建立调用链。
在本实施例中,首先,查找与软件开发工具包的组件相关的信息,然后查找调用上述组件的成员函数;查找上述成员函数所属的类,其中,上述类被上述工程入口函数直接调用;最后,建立依次包括上述工程入口函数、上述类、上述函数、上述组件的调用链。
在本实施例中,上述组件是指实现特定功能的方法和数据的集合;作为示例,软件开发工具包可以将实现的地图定位功能涉及的方法和数据作为一个集合,称为地图定位组件。可以理解的,与上述组件相关的信息包括但不限于调用上述组件的信息、使用上述组件中的关键字的信息。
在本实施例一些可选的实现方式中,查找上述成员函数所属的类,上述类可能被其他的类调用,在类之间存在调用关系的时候,依次进行查找,直到查找到被工程入口函数调用或定义的类为止。
步骤306,识别调用链中调用到的软件开发工具包。
在本实施例中,在步骤305的基础上,可以确定调用软件开发工具包关键组件的调用链,调用链以工程入口函数为始端的情况下,调用链的末端是软件开发工具包的组件;其中,此处的组件是实现特定功能的函数集合,也可以称为关键类。在存在上述调用链的情况下,可以确定目标应用所调用的软件开发工具包。
步骤307,通过调用链识别目标应用调用的软件开发工具包。
在本实施例中,可以基于上述步骤306,得到调用链调用的软件开发工具包,然后确定上述软件开发工具包即为目标应用所调用的软件开发工具包。
本申请的上述实施例提供的方法通过基于语义解析源码文件,构建调用链,根据调用链确定识别目标应用调用的软件开发工具包,实现了对软件开发工具包,提高了与软件开发工具包有关的技术缺陷的发现效率。
进一步参考图4,作为对上述各图所示方法的实现,本申请提供了一种软件开发工具包识别装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图4所示,本实施例上述的软件开发工具包识别装置400包括:反编译模块401,配置用于对目标应用的程序文件进行反编译;构建模块402,配置用于构建上述目标应用的工程目录;查找模块403,配置用于在上述工程目录的文件中,查找标识信息,其中,上述标识信息与上述目标应用调用的软件开发工具包相关;识别模块404,配置用于通过上述标识信息识别上述目标应用调用的软件开发工具包。
在本实施例中,上述工程目录的文件包括源码文件,上述标识信息包括调用链;以及,在上述工程目录的文件中,查找标识信息,包括:解析上述源码文件;构建上述源码文件的代码层次;根据上述代码层次建立调用链;识别调用链中调用到的软件开发工具包。
在本实施例中,上述解析上述源码文件包括:识别类;识别上述类的成员变量和成员函数;识别上述类之间的继承关系;建立包括上述类、上述成员变量、上述成员函数以及上述类之间的继承关系的代码层次。
在本实施例中,根据上述代码层次建立调用链包括:查找与软件开发工具包的组件的调用相关的信息;根据上述信息,查找调用上述组件的成员函数;查找上述成员函数所属的类,其中,上述类被上述工程入口函数直接调用;建立依次包括上述工程入口函数、上述类、上述函数、上述组件的调用链。
在本实施例中,上述工程目录中的文件包括动态库文件,上述标识信息包括动态库;以及,在上述工程目录的文件中,查找标识信息,包括:在上述动态库文件搜索上述目标应用所调用的动态库;识别上述动态库所属的软件开发工具包。
在本实施例中,上述工程目录中的文件包括程序全局配置文件,上述标识信息包括应用程序编程接口密钥;以及,在上述工程目录的文件中,查找标识信息,包括:在上述程序全局配置文件查找应用程序编程接口密钥;识别上述应用程序编程接口密钥所匹配的软件开发工具包。
下面参考图5,其示出了适于用来实现本申请实施例的终端设备或服务器的计算机系统500的结构示意图。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有系统500操作所需的各种程序和数据。CPU501、ROM502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,上述计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的方法中限定的上述功能。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括反编译单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,反编译单元还可以被描述为“用于反编译目标应用的程序文件的单元”。
作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中上述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入终端中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当上述一个或者多个程序被一个设备执行时,使得上述设备:对目标应用的程序文件进行反编译;构建上述目标应用的工程目录;在上述工程目录的文件中,查找标识信息,其中,上述标识信息与上述目标应用调用的软件开发工具包相关;通过上述标识信息识别上述目标应用调用的软件开发工具包。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (12)

1.一种软件开发工具包识别方法,其特征在于,所述方法包括:
对目标应用的程序文件进行反编译;
构建所述目标应用的工程目录;
在所述工程目录的文件中,查找标识信息,其中,所述标识信息与所述目标应用调用的软件开发工具包相关;
通过所述标识信息识别所述目标应用调用的软件开发工具包。
2.根据权利要求1所述的方法,其特征在于,所述工程目录的文件包括源码文件,所述标识信息包括调用链;以及,
在所述工程目录的文件中,查找标识信息,包括:
解析所述源码文件;
构建所述源码文件的代码层次;
根据所述代码层次建立调用链;
识别调用链中调用到的软件开发工具包。
3.根据权利要求2所述的方法,其特征在于,所述解析所述源码文件包括:
识别类;
识别所述类的成员变量和成员函数;
识别所述类之间的继承关系;
建立包括所述类、所述成员变量、所述成员函数以及所述类之间的继承关系的代码层次。
4.根据权利要求3所述的方法,其特征在于,根据所述代码层次建立调用链包括:
查找与软件开发工具包的组件的调用相关的信息;
根据所述信息,查找调用所述组件的成员函数;
查找所述成员函数所属的类,其中,所述类被所述工程入口函数直接调用;
建立依次包括所述工程入口函数、所述类、所述函数、所述组件的调用链。
5.根据权利要求1~4任一项所述的方法,其特征在于,所述工程目录中的文件包括动态库文件,所述标识信息包括动态库;以及,
在所述工程目录的文件中,查找标识信息,包括:
在所述动态库文件搜索所述目标应用所调用的动态库;
识别所述动态库所属的软件开发工具包。
6.根据权利要求5所述的方法,其特征在于,所述工程目录中的文件包括程序全局配置文件,所述标识信息包括应用程序编程接口密钥;以及,
在所述工程目录的文件中,查找标识信息,包括:
在所述程序全局配置文件查找应用程序编程接口密钥;
识别所述应用程序编程接口密钥所匹配的软件开发工具包。
7.一种软件开发工具包识别装置,其特征在于,所述装置包括:
反编译模块,配置用于对目标应用的程序文件进行反编译;
构建模块,配置用于构建所述目标应用的工程目录;
查找模块,配置用于在所述工程目录的文件中,查找标识信息,其中,所述标识信息与所述目标应用调用的软件开发工具包相关;
识别模块,配置用于通过所述标识信息识别所述目标应用调用的软件开发工具包。
8.根据权利要求7所述的装置,其特征在于,所述工程目录的文件包括源码文件,所述标识信息包括调用链;以及,
查找模块,进一步配置用于:
解析所述源码文件;
构建所述源码文件的代码层次;
根据所述代码层次建立调用链;
识别调用链中调用到的软件开发工具包。
9.根据权利要求8所述的装置,其特征在于,所述解析所述源码文件包括:
识别类;
识别所述类的成员变量和成员函数;
识别所述类之间的继承关系;
建立包括所述类、所述成员变量、所述成员函数以及所述类之间的继承关系的代码层次。
10.根据权利要求9所述的装置,其特征在于,根据所述代码层次建立调用链包括:
查找与软件开发工具包的组件的调用相关的信息;
根据所述信息,查找调用所述组件的成员函数;
查找所述成员函数所属的类,其中,所述类被所述工程入口函数直接调用;
建立依次包括所述工程入口函数、所述类、所述函数、所述组件的调用链。
11.根据权利要求7~10任一项所述的装置,其特征在于,所述工程目录中的文件包括动态库文件,所述标识信息包括动态库;以及,
查找模块,进一步配置用于:
在所述动态库文件搜索所述目标应用所调用的动态库;
识别所述动态库所属的软件开发工具包。
12.根据权利要求11所述的装置,其特征在于,所述工程目录中的文件包括程序全局配置文件,所述标识信息包括应用程序编程接口密钥;以及,
查找模块,进一步配置用于:
在所述程序全局配置文件查找应用程序编程接口密钥;
识别所述应用程序编程接口密钥所匹配的软件开发工具包。
CN201610052309.4A 2016-01-26 2016-01-26 软件开发工具包识别方法和装置 Active CN105630684B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610052309.4A CN105630684B (zh) 2016-01-26 2016-01-26 软件开发工具包识别方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610052309.4A CN105630684B (zh) 2016-01-26 2016-01-26 软件开发工具包识别方法和装置

Publications (2)

Publication Number Publication Date
CN105630684A true CN105630684A (zh) 2016-06-01
CN105630684B CN105630684B (zh) 2019-10-11

Family

ID=56045654

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610052309.4A Active CN105630684B (zh) 2016-01-26 2016-01-26 软件开发工具包识别方法和装置

Country Status (1)

Country Link
CN (1) CN105630684B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776845A (zh) * 2016-11-28 2017-05-31 努比亚技术有限公司 一种信息流自适应管理方法及终端
CN107133036A (zh) * 2017-04-26 2017-09-05 武汉斗鱼网络科技有限公司 一种模块的管理方法及装置
CN108334441A (zh) * 2017-01-19 2018-07-27 深圳市优朋普乐传媒发展有限公司 一种软件开发工具包的自动化测试方法和系统
CN109857404A (zh) * 2019-01-11 2019-06-07 平安科技(深圳)有限公司 Sdk接口的封装方法及装置、存储介质、电子设备
CN110633074A (zh) * 2019-09-19 2019-12-31 北京猎户星空科技有限公司 一种软件开发工具包的使用控制方法及装置
CN110704026A (zh) * 2018-07-10 2020-01-17 武汉斗鱼网络科技有限公司 软件开发工具包的调用方法、装置、终端及可读介质
CN111124486A (zh) * 2019-12-05 2020-05-08 任子行网络技术股份有限公司 发现安卓应用引用第三方工具的方法、系统及存储介质
CN112000339A (zh) * 2020-07-09 2020-11-27 北京大学 安卓apk文件依赖组件识别方法及装置
WO2023169212A1 (zh) * 2022-03-07 2023-09-14 华为技术有限公司 一种识别应用程序中sdk的方法、终端及服务器

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140157227A1 (en) * 2012-11-30 2014-06-05 Red Hat Israel, Ltd. Method and system for preserving restful web service structure in a client consuming the restful web service
CN104217162A (zh) * 2014-09-05 2014-12-17 四川长虹电器股份有限公司 一种智能终端恶意软件的检测方法及系统
CN104484607A (zh) * 2014-12-16 2015-04-01 上海交通大学 Android应用程序安全性测试的通用方法及系统
CN104751053A (zh) * 2013-12-30 2015-07-01 南京理工大学常熟研究院有限公司 移动智能终端软件的静态行为分析方法
CN104951324A (zh) * 2014-03-28 2015-09-30 腾讯科技(深圳)有限公司 一种获取应用调用关系表的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140157227A1 (en) * 2012-11-30 2014-06-05 Red Hat Israel, Ltd. Method and system for preserving restful web service structure in a client consuming the restful web service
CN104751053A (zh) * 2013-12-30 2015-07-01 南京理工大学常熟研究院有限公司 移动智能终端软件的静态行为分析方法
CN104951324A (zh) * 2014-03-28 2015-09-30 腾讯科技(深圳)有限公司 一种获取应用调用关系表的方法及装置
CN104217162A (zh) * 2014-09-05 2014-12-17 四川长虹电器股份有限公司 一种智能终端恶意软件的检测方法及系统
CN104484607A (zh) * 2014-12-16 2015-04-01 上海交通大学 Android应用程序安全性测试的通用方法及系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
房鑫鑫: "Android恶意软件实现及检测研究", 《中国优秀硕士学位论文全文数据库》 *
雷涛: "可执行程序的反编译", 《中国优秀硕士学位论文全文数据库》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776845A (zh) * 2016-11-28 2017-05-31 努比亚技术有限公司 一种信息流自适应管理方法及终端
CN108334441A (zh) * 2017-01-19 2018-07-27 深圳市优朋普乐传媒发展有限公司 一种软件开发工具包的自动化测试方法和系统
CN107133036A (zh) * 2017-04-26 2017-09-05 武汉斗鱼网络科技有限公司 一种模块的管理方法及装置
CN107133036B (zh) * 2017-04-26 2020-10-16 武汉斗鱼网络科技有限公司 一种模块的管理方法及装置
CN110704026A (zh) * 2018-07-10 2020-01-17 武汉斗鱼网络科技有限公司 软件开发工具包的调用方法、装置、终端及可读介质
CN109857404A (zh) * 2019-01-11 2019-06-07 平安科技(深圳)有限公司 Sdk接口的封装方法及装置、存储介质、电子设备
CN110633074A (zh) * 2019-09-19 2019-12-31 北京猎户星空科技有限公司 一种软件开发工具包的使用控制方法及装置
CN111124486A (zh) * 2019-12-05 2020-05-08 任子行网络技术股份有限公司 发现安卓应用引用第三方工具的方法、系统及存储介质
CN112000339A (zh) * 2020-07-09 2020-11-27 北京大学 安卓apk文件依赖组件识别方法及装置
WO2023169212A1 (zh) * 2022-03-07 2023-09-14 华为技术有限公司 一种识别应用程序中sdk的方法、终端及服务器

Also Published As

Publication number Publication date
CN105630684B (zh) 2019-10-11

Similar Documents

Publication Publication Date Title
CN105630684A (zh) 软件开发工具包识别方法和装置
US10942708B2 (en) Generating web API specification from online documentation
US10417060B2 (en) Automated API publication for Internet of Things platform
CN109492053B (zh) 用于访问数据的方法和装置
CN109359194B (zh) 用于预测信息类别的方法和装置
CN111931183A (zh) 开源软件安全漏洞处理方法和装置
US11934287B2 (en) Method, electronic device and computer program product for processing data
CN111338944B (zh) 远程过程调用rpc接口测试方法、装置、介质及设备
CN113157523B (zh) 服务监控方法、装置、计算机设备及存储介质
CN113297287B (zh) 用户策略自动部署方法、装置及电子设备
CN112988569A (zh) 一种基于nginx的微服务请求响应查看方法和系统
CN105511914A (zh) 应用更新方法、装置和系统
CN115082247B (zh) 基于标签库的系统投产方法、装置、设备、介质和产品
CN116414855A (zh) 信息处理方法及装置、电子设备和计算机可读存储介质
CN115951916A (zh) 一种组件的处理方法、装置、电子设备及存储介质
CN113448869B (zh) 测试用例生成的方法、装置、电子设备及计算机可读介质
CN110806967A (zh) 一种单元测试方法和装置
CN115291928A (zh) 多种技术栈的任务自动集成方法、装置及电子设备
CN110471708B (zh) 基于可重用组件的配置项获取的方法及装置
CN109298831B (zh) 信息存储方法和装置
CN111125503B (zh) 用于生成信息的方法和装置
CN116401319B (zh) 数据同步方法及装置、电子设备和计算机可读存储介质
WO2021249118A1 (zh) 生成、注册ui服务包、以及加载ui服务的方法及装置
CN116594876A (zh) 一种接口测试方法、装置、设备及存储介质
CN114153456A (zh) 文件管理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant