CN112732581B - Sdk检测方法、装置、电子设备、系统和存储介质 - Google Patents
Sdk检测方法、装置、电子设备、系统和存储介质 Download PDFInfo
- Publication number
- CN112732581B CN112732581B CN202110037124.7A CN202110037124A CN112732581B CN 112732581 B CN112732581 B CN 112732581B CN 202110037124 A CN202110037124 A CN 202110037124A CN 112732581 B CN112732581 B CN 112732581B
- Authority
- CN
- China
- Prior art keywords
- sdk
- preset
- target
- information
- detection
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种SDK检测方法、装置、电子设备、系统和存储介质,该SDK检测方法包括:反编译目标应用程序的安装包得到目标文件;根据目标文件的指定信息及预设SDK集合确定目标应用程序中集成的目标SDK;根据目标SDK为目标应用程序生成SDK检测集。本发明实施例中,可以根据反编译得到的目标文件的指定信息及预设SDK集合自动检测目标应用程序中集成的SDK,因而不再需要人工检测SDK,提高了SDK的检测效率,且利用预设SDK集合可以实现SDK的全面检测,避免漏检。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种SDK检测方法、装置、电子设备、系统和存储介质。
背景技术
企业的法律合规部门需要对应用程序的安装包进行合规审核,在实现本发明的过程中,发明人发现,在审核的过程中,需要人工检测反编译安装包得到的文件以确定应用程序中集成了哪些软件开发工具包(Software Development Kit,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检测方法的一个流程示意图。
图2是本发明实施例提供的预设SDK集合创建方法的一个流程示意图。
图3是本发明实施例提供的SDK检测方法的另一流程示意图。
图4是本发明实施例提供的SDK检测方法一个效果示意图。
图5是本发明实施例提供的SDK检测装置的一个结构示意图。
图6是本发明实施例提供的SDK检测系统的一个结构示意图。
图7是本发明实施例提供的电子设备的一个结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
由于现有的SDK检测方法,依赖人工在反编译之后得到的文件中查找SDK,效率较低,且对于不常用的SDK,人工查找的方式还不一定能发现,导致漏检,因而,本发明实施例提供一种SDK检测方法,能够提高检测效率,避免漏检。
图1为本发明实施例提供的SDK检测方法的一个流程示意图,该方法可以由本发明实施例提供的SDK检测装置来执行,该装置可采用软件和/或硬件的方式实现。在一个具体的实施例中,该装置可以集成在服务器中。以下实施例将以该装置集成在服务器中为例进行说明。参考图1,该方法具体可以包括如下步骤:
步骤101,反编译目标应用程序的安装包得到目标文件。
示例地,目标应用程序可以指需要进行SDK检测的应用程序,目标应用程序可以是Android(谷歌公司开发的移动操作系统)应用程序,也可以是IOS(苹果公司开发的移动操作系统)应用程序,下面以目标应用程序为Android应用程序为例进行说明。具体地,可以利用反编译工具反编译目标应用程序的安装包得到目标文件,目标应用程序的安装包可以是APK(Android application package)包,也可以是SDK包,反编译工具比如:apktool、dex2jar、jd-gui、jadx、AXMLPrinter2等,目标文件比如全局配置文件(例如AndroidManifest.xml文件)、源代码文件(例如java文件、kotlin文件)等。
比如,可以利用apktool或AXMLPrinter2反编译安装包并解析,得到全局配置文件AndroidManifest.xml文件、classes.dex文件等;利用dex2jar将反编译后得到的classes.dex文件解析为后缀为.jar文件,利用jd-gui将.jar文件解析成java文件,从而得到源代码文件。
其中,全局配置文件AndroidManifest.xml文件是应用程序的配置清单文件,里面包含了应用程序的基本信息、组件信息、权限信息等。应用程序的基本信息比如:应用的包名PackageName、版本编码VersionCode、版本名VersionName、是否允许调试android:debuggable、应用图标android:icon、应用程序运行的进程名android:process、是否允许多进程android:multiprocess等,应用中所需要的SDK版本、元数据属性meta-data属性,其中meta-data属性中包括元数据项的名字android:name、资源的一个引用android:resource、指定给这一项的值android:value等。应用程序的组件信息比如:活动Activity、服务Service、广播接收器BroadcastReceiver和内容提供者ContentProvider这四大组件的类信息、声明信息等。应用程序的权限信息比如:系统预定义权限uses-permission、自定义权限permission、权限组permission-group permissions、权限树permission-tree等。
其中,meta-data属性可以在活动Activity、服务Service、广播接收器BroadcastReceiver和内容提供者ContentProvider这四大组件下使用,meta-data属性可以为这些组件提供额外的参数数据,如果想给某个组件添加meta-data,那么meta-data需要定义在该组件的声明内。
meta-data属性可以用于辅助检测第三方SDK,因为在接入分享、地图等私有的第三方SDK时,这些第三方SDK需要引用应用程序的活动Activity、服务Service、广播接收器BroadcastReceiver和内容提供者ContentProvider这些组件,因而需要在这些组件中为第三方SDK添加对应的类。通常情况下,会为需要接入的第三方SDK申请一个账号,然后在组件下的meta-data属性中进行接入配置(即添加类),第三方SDK则会在内部代码中读取这些数据,通过这些key标记来源的信息,分辨接入方,进行访问控制、数据统计等。比如,在应用程序中接入某地图(比如amap)SDK,其meta-data属性可以如下:
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="oooooooooooooxxxxxxxxxxxx"/>
即meta-data属性中会包含接入的第三方SDK的包名,另外,源代码文件的目录与接入的第三方SDK也有对应关系,比如,源代码文件的目录中可能包含接入的第三方SDK的包名,因而本发明实施例中,可以利用全局配置文件AndroidManifest.xml中预设组件(比如活动Activity、服务Service、广播接收器BroadcastReceiver和内容提供者ContentProvider中的至少一者)的声明信息和源代码文件的目录辅助进行SDK检测。
步骤102,根据目标文件的指定信息及预设SDK集合确定目标应用程序中集成的目标SDK。
具体实现中,可以预先建立预设SDK集合,利用建立的预设SDK集合及目标文件的指定信息确定目标应用程序中集成的目标SDK,具体建立预设SDK集合的方法可以如下:
(1)获取预设SDK的特征信息。
预设SDK可以是任意公开使用的SDK,也可以是使用频率较高的SDK,预设SDK的特征信息可以包括预设SDK的包名、名称、描述信息、网址链接信息等。
示例地,可以利用网络爬虫爬取预设SDK的特征信息,即可以获取网络爬虫爬取的预设SDK的特征信息;也可以通过人工采集的方式收集预设SDK的特征信息,比如可以通过人工的方式整理出预设SDK的特征信息,然后将整理出的预设SDK的特征信息通过终端上传至服务器,即可以获取终端上传的预设SDK的特征信息。
(2)根据预设SDK的特征信息创建预设SDK集合。
比如,可以将预设SDK的特征信息按照特定格式(比如键/值对格式、数组格式)写入标记语言文件(YAML Ain't Markup Language,YAML)文件,当需要使用时,可以根据YAML文件创建预设SDK集合。例如,当需要使用时,可以从YAML文件读取每个预设SDK的特征信息,将每个预设SDK的特征信息按行插入到预设数据表中,得到预设SDK集合,预设SDK集合中包括多个预设SDK的特征信息。其中,YAML文件是一种配置文件,相较于ini,conf等配置文件来说,YAML文件更加的简洁,操作简单,还能存放不同类型的数据,将预设SDK的特征信息写入YAML文件进行存储,方便了后续使用。
另外,还可以定时对YAML文件中存储的数据进行更新,并根据更新后的YAML文件创建预设SDK集合,以提高SDK检测的全面性和准确度。
示例地,当目标文件为全局配置文件时,可以按照如下方法确定目标SDK:
即可以在预设SDK集合中查找与全局配置文件中预设组件的声明信息匹配的SDK,得到第一目标SDK,得到的第一目标SDK可以包括一个或多个。比如,可以将全局配置文件中预设组件的声明信息与预设SDK集合(可以是预设SDK集合中的包名)进行正则匹配,将命中的SDK作为第一目标SDK,预设组件可以是活动Activity、服务Service、广播接收器BroadcastReceiver和内容提供者ContentProvider中的至少一者。
示例地,当目标文件为源代码文件时,可以按照如下方法确定目标SDK:
即可以在预设SDK集合中查找与源代码文件的目录匹配的SDK,得到第二目标SDK,得到的第二目标SDK可以包括一个或多个。比如,可以将源代码文件的目录与预设SDK集合(可以是预设SDK集合中的包名)进行模糊匹配,将命中的SDK作为第二目标SDK。
步骤103,根据目标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集合的创建方法,请参阅图2,该方法包括以下步骤:
上面实施例描述的方法,本实施例将举例做进一步的说明,请参阅图2,本实施例的方法包括以下步骤:
步骤201,获取网络爬虫爬取的预设SDK的特征信息。
网络爬虫,又称为网页蜘蛛、网络机器人、网页追逐者等,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,爬行对象可以从一些种子统一资源定位符(uniform resource locator,URL)扩充到整个网络Web,具体在本发明实施例中,可以利用网络爬虫爬取预设SDK的特征信息,即可以获取网络爬虫爬取的预设SDK的特征信息,预设SDK可以是任意公开使用的SDK,也可以是高频使用的SDK。
步骤202,获取终端上传的预设SDK的特征信息。
即本发明实施例中,还可以通过人工采集的方式收集预设SDK的特征信息,比如可以通过人工的方式整理出预设SDK的特征信息,然后将整理出的预设SDK的特征信息通过终端上传至服务器,即可以获取终端上传的预设SDK的特征信息。
步骤203,将预设SDK的特征信息写入YAML文件。
在一个具体的实施例中,预设SDK的特征信息可以包括预设SDK的包名、名称、描述信息、网址链接信息等。可以将通过网络爬虫爬取的预设SDK的特征信息及人工整理出的预设SDK的特征信息按照特定格式(比如键/值对格式、数组格式)写入YAML文件,当需要使用时,可以根据YAML文件创建预设SDK集合。
示例地,YAML文件中写入的一个具体的预设SDK的特征信息可以如下:
package_name:tv.danmaku.ijk.media.player--包名
sdk_name:'B站开发的一款基于FFMPEG的轻量级Android/iOS视频播放器'--名称
sdk_summary:'IJKPlayer是B站开发的基于FFMPEG的轻量级Android/iOS视频播放器,具有API易于集成、编译配置可裁剪、支持硬件加速解码、DanmakuFlameMaster架构清晰、简单易用等优势。做为播放器的开源项目,IJKPlayer还支持用户根据业务类型进行定制,因此受到很多的开发者喜爱。
'--描述信息
web_addr:'https://github.com/bilibili/ijkplayer'--网址链接信息
步骤204,根据YAML文件创建预设SDK集合。
例如,当需要对某个应用程序进行SDK检测时,可以从YAML文件读取每个预设SDK的特征信息,将每个预设SDK的特征信息按行插入到预设数据表中,得到预设SDK集合,预设SDK集合中包括多个预设SDK的特征信息。
在一个具体的实施例中,在得到预设SDK的特征信息之后,还可以通过统计工具将预设SDK进行分类,比如可以将预设SDK分为实用工具、金融理财、学习教育、影音视听、聊天社交、图书阅读、摄影摄像、旅行交通、居家生活、时尚购物、效率办公、娱乐消遣、新闻资讯、体育运动、医疗健康等类型,则在YAML文件及预设SDK集合中,还可以包括对应预设SDK的类型信息。
下面举例说明利用创建的预设SDK集合进行SDK检测的方法,请参阅图3,本实施例的方法包括以下步骤:
步骤301,接收终端发送的针对目标应用程序的安装包的SDK检测请求。
示例地,当需要对目标应用程序进行SDK检测时,终端可以根据用户的操作下载目标应用程序的安装包并向服务器发送针对目标应用程序的安装包的SDK检测请求,该SDK检测请求中可以包括目标应用程序的安装包。
步骤302,反编译目标应用程序的安装包得到全局配置文件和源代码文件。
具体地,可以利用反编译工具反编译目标应用程序的安装包得到全局配置文件和源代码文件,反编译工具比如:apktool、dex2jar、jd-gui、jadx、AXMLPrinter2等。
比如,可以利用apktool或AXMLPrinter2反编译安装包并解析,得到全局配置文件AndroidManifest.xml文件、classes.dex文件等;利用dex2jar将反编译后得到的classes.dex文件解析为后缀为.jar文件,利用jd-gui将.jar文件解析成java文件,从而得到源代码文件。
步骤303,在预设SDK集合中查找与全局配置文件中包括预设组件的声明信息匹配的SDK,得到第一目标SDK。
比如,可以将全局配置文件中预设组件的声明信息与预设SDK集合(可以是预设SDK集合中的包名)进行正则匹配,将命中的SDK作为第一目标SDK,得到的第一目标SDK可以包括一个或多个。
步骤304,在预设SDK集合中查找与源代码文件的目录匹配的SDK,得到第二目标SDK。
比如,可以将源代码文件的目录与预设SDK集合(可以是预设SDK集合中的包名)进行模糊匹配,将命中的SDK作为第二目标SDK,得到的第二目标SDK可以包括一个或多个。
步骤305,计算第一目标SDK和第二目标SDK的并集,得到SDK检测集。
比如,可以将得到SDK并集写入预设模板中,从而为目标应用程序生成SDK检测集,生成的SDK检测集可以包括目标SDK的包名、名称、描述信息、网址链接信息等。另外,当预设SDK集合中还包括预设SDK的类型信息时,SDK检测集中也可以包括目标SDK的类型信息。
步骤306,向终端发送SDK检测集。
终端可以展示服务器反馈的SDK检测集,企业的法律合规部门通过查看该SDK检测集即可获知目标应用程序中的SDK集成情况。在一个具体的实施例中,终端侧展示的SDK检测集可如图4所示,即可以展示目标应用程序中集成的SDK的数量、SDK包名等信息。
本发明实施例中,可以反编译目标应用程序的安装包得到目标文件,根据目标文件的指定信息及预设SDK集合确定目标应用程序中集成的目标SDK;根据目标SDK为目标应用程序生成SDK检测集;即本发明实施例中,可以根据反编译得到的目标文件的指定信息及预设SDK集合自动检测目标应用程序中集成的SDK,因而不再需要人工检测SDK,提高了SDK的检测效率,且利用预设SDK集合可以实现SDK的全面检测,避免漏检。
应该理解的是,虽然图2、3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图5是本发明是实施例提供的SDK检测装置的一个结构图,该装置适用于执行本发明实施例提供的SDK检测方法。如图5所示,该装置具体可以包括:
反编译模块501,用于反编译目标应用程序的安装包得到目标文件;
确定模块502,用于根据所述目标文件的指定信息及预设SDK集合确定所述目标应用程序中集成的目标SDK;
生成模块503,用于根据所述目标SDK为所述目标应用程序生成SDK检测集。
一实施例中,所述目标文件包括全局配置文件,所述全局配置文件中包括预设组件的声明信息,所述确定模块502根据所述目标文件的指定信息及预设SDK集合确定所述目标应用程序中集成的目标SDK,包括:
在所述预设SDK集合中查找与所述声明信息匹配的SDK,得到第一目标SDK。
一实施例中,所述预设组件包括活动Activity、服务Service、广播接收器BroadcastReceiver和内容提供者ContentProvider中的至少一者。
一实施例中,所述目标文件包括源代码文件,所述确定模块502根据所述目标文件的指定信息及预设SDK集合确定所述目标应用程序中集成的目标SDK,包括:
在所述预设SDK集合中查找与所述源代码文件的目录匹配的SDK,得到第二目标SDK。
一实施例中,所述生成模块503根据所述目标SDK为所述目标应用程序生成SDK检测集,包括:
计算所述第一目标SDK和所述第二目标SDK的并集,得到所述SDK检测集。
一实施例中,所述装置还包括创建模块;
所述创建模块用于,获取预设SDK的特征信息,根据所述预设SDK的特征信息创建所述预设SDK集合。
一实施例中,所述创建模块获取预设SDK的特征信息,包括:
获取网络爬虫爬取的所述预设SDK的特征信息。
一实施例中,所述创建模块获取预设SDK的特征信息,包括:
获取终端上传的所述预设SDK的特征信息。
一实施例中,所述创建模块根据所述预设SDK的特征信息创建所述预设SDK集合,包括:
将所述预设SDK的特征信息写入标记语言文件YAML文件;
根据所述YAML文件创建所述预设SDK集合。
一实施例中,所述预设SDK的特征信息包括所述预设SDK的包名、名称、描述信息、网址链接信息。
一实施例中,所述装置还包括:
接收模块,用于接收终端发送的针对所述目标应用程序的安装包的SDK检测请求;
发送模块,用于向所述终端发送所述SDK检测集。
本领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述功能模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例的装置,可以反编译目标应用程序的安装包得到目标文件,根据目标文件的指定信息及预设SDK集合确定目标应用程序中集成的目标SDK;根据目标SDK为目标应用程序生成SDK检测集;即本发明实施例中,可以根据反编译得到的目标文件的指定信息及预设SDK集合自动检测目标应用程序中集成的SDK,因而不再需要人工检测SDK,提高了SDK的检测效率,且利用预设SDK集合可以实现SDK的全面检测,避免漏检。
本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例提供的SDK检测方法。
本发明实施例还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例提供的SDK检测方法。
图6示出了可以应用本发明实施例的SDK检测方法或SDK检测装置的示例性系统架构600。
如图6所示,系统架构600可以包括终端601、602、603,网络604和服务器605。网络604用以在终端601、602、603和服务器605之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端601、602、603通过网络604与服务器605交互,以接收或发送消息等。终端601、602、603上可以安装有各种客户端应用,例如企业应用客户端、电商应用客户端、网页浏览器应用、搜索类应用、即时通信工具和邮箱客户端等。
终端601、602、603可以是具有显示屏并且支持各种客户端的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器605可以是提供各种服务的服务器,例如对用户利用终端601、602、603所发送的检测请求提供支持的后台服务器。后台服务器可以对接收到的检测请求进行处理,并将处理结果反馈给终端设备。
需要说明的是,本发明实施例所提供的SDK检测方法一般由服务器605执行,相应地,SDK检测装置一般设置于服务器605中。
应该理解,图6中的终端、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端、网络和服务器。
下面参考图7,其示出了适于用来实现本发明实施例的电子设备的计算机系统700的结构示意图。图7示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块和/或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块和/或单元也可以设置在处理器中,例如,可以描述为:一种处理器包括反编译模块、确定模块和生成模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:反编译目标应用程序的安装包得到目标文件;根据所述目标文件的指定信息及预设SDK集合确定所述目标应用程序中集成的目标SDK;根据所述目标SDK为所述目标应用程序生成SDK检测集。
根据本发明实施例的技术方案,可以反编译目标应用程序的安装包得到目标文件,根据目标文件的指定信息及预设SDK集合确定目标应用程序中集成的目标SDK;根据目标SDK为目标应用程序生成SDK检测集;即本发明实施例中,可以根据反编译得到的目标文件的指定信息及预设SDK集合自动检测目标应用程序中集成的SDK,因而不再需要人工检测SDK,提高了SDK的检测效率,且利用预设SDK集合可以实现SDK的全面检测,避免漏检。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (13)
1.一种软件开发工具包SDK检测方法,其特征在于,包括:
反编译目标应用程序的安装包得到目标文件;
根据所述目标文件的指定信息及预设SDK集合确定所述目标应用程序中集成的目标SDK;其中,所述指定信息是所述目标应用程序接入的第三方SDK的特征信息;所述预设SDK集合通过如下方式得到:获取预设SDK的特征信息,将所述预设SDK的特征信息插入到预设数据表中,得到所述预设SDK集合,所述预设SDK集合中包括所述预设SDK的特征信息,所述预设SDK的特征信息包括所述预设SDK的包名、名称、描述信息、网址链接信息;
根据所述目标SDK为所述目标应用程序生成SDK检测集。
2.根据权利要求1所述的SDK检测方法,其特征在于,所述目标文件包括全局配置文件,所述全局配置文件中包括预设组件的声明信息,所述根据所述目标文件的指定信息及预设SDK集合确定所述目标应用程序中集成的目标SDK,包括:
在所述预设SDK集合中查找与所述声明信息匹配的SDK,得到第一目标SDK。
3.根据权利要求2所述的SDK检测方法,其特征在于,所述预设组件包括活动Activity、服务Service、广播接收器BroadcastReceiver和内容提供者ContentProvider中的至少一者。
4.根据权利要求2或3所述的SDK检测方法,其特征在于,所述目标文件包括源代码文件,所述根据所述目标文件的指定信息及预设SDK集合确定所述目标应用程序中集成的目标SDK,包括:
在所述预设SDK集合中查找与所述源代码文件的目录匹配的SDK,得到第二目标SDK。
5.根据权利要求4所述的SDK检测方法,其特征在于,所述根据所述目标SDK为所述目标应用程序生成SDK检测集,包括:
计算所述第一目标SDK和所述第二目标SDK的并集,得到所述SDK检测集。
6.根据权利要求1所述的SDK检测方法,其特征在于,所述获取预设SDK的特征信息,包括:
获取网络爬虫爬取的所述预设SDK的特征信息。
7.根据权利要求1所述的SDK检测方法,其特征在于,所述获取预设SDK的特征信息,包括:
获取终端上传的所述预设SDK的特征信息。
8.根据权利要求1所述的SDK检测方法,其特征在于,在获取预设SDK的特征信息之后,还包括:
将所述预设SDK的特征信息写入标记语言文件YAML文件;
所述将所述预设SDK的特征信息插入到预设数据表中,得到所述预设SDK集合,包括:
从所述YAML文件读取所述预设SDK的特征信息,将所述预设SDK的特征信息插入到预设数据表中,得到所述预设SDK集合。
9.根据权利要求1所述的SDK检测方法,其特征在于,所述方法还包括:
接收终端发送的针对所述目标应用程序的安装包的SDK检测请求;
向所述终端发送所述SDK检测集。
10.一种软件开发工具包SDK检测装置,其特征在于,包括:
反编译模块,用于反编译目标应用程序的安装包得到目标文件;
确定模块,用于根据所述目标文件的指定信息及预设SDK集合确定所述目标应用程序中集成的目标SDK;其中,所述指定信息是所述目标应用程序接入的第三方SDK的特征信息;所述预设SDK集合通过如下方式得到:获取预设SDK的特征信息,将所述预设SDK的特征信息插入到预设数据表中,得到所述预设SDK集合,所述预设SDK集合中包括所述预设SDK的特征信息,所述预设SDK的特征信息包括所述预设SDK的包名、名称、描述信息、网址链接信息;
生成模块,用于根据所述目标SDK为所述目标应用程序生成SDK检测集。
11.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至9中任一所述的SDK检测方法。
12.一种软件开发工具包SDK检测系统,其特征在于,包括终端以及用于执行如权利要求1至9中任一所述的SDK检测方法的电子设备。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至9中任一所述的SDK检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110037124.7A CN112732581B (zh) | 2021-01-12 | 2021-01-12 | Sdk检测方法、装置、电子设备、系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110037124.7A CN112732581B (zh) | 2021-01-12 | 2021-01-12 | Sdk检测方法、装置、电子设备、系统和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112732581A CN112732581A (zh) | 2021-04-30 |
CN112732581B true CN112732581B (zh) | 2023-03-10 |
Family
ID=75590625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110037124.7A Active CN112732581B (zh) | 2021-01-12 | 2021-01-12 | Sdk检测方法、装置、电子设备、系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112732581B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114238021A (zh) * | 2021-12-20 | 2022-03-25 | 中国平安财产保险股份有限公司 | 一种sdk接口定位方法、装置、设备及计算机存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459822A (zh) * | 2020-04-01 | 2020-07-28 | 北京字节跳动网络技术有限公司 | 系统组件数据的提取方法、装置、设备及可读介质 |
CN111563257A (zh) * | 2020-04-15 | 2020-08-21 | 成都欧珀通信科技有限公司 | 数据检测方法及装置、计算机可读介质及终端设备 |
CN112100072A (zh) * | 2020-09-16 | 2020-12-18 | 广州虎牙科技有限公司 | 应用程序代码的静态检测方法、装置、设备及介质 |
CN112148305A (zh) * | 2020-10-28 | 2020-12-29 | 腾讯科技(深圳)有限公司 | 一种应用检测方法、装置、计算机设备和可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170147323A1 (en) * | 2015-11-25 | 2017-05-25 | Le Holding (Beijing) Co., Ltd. | Method and electronic device for upgrading software development kit of an application |
-
2021
- 2021-01-12 CN CN202110037124.7A patent/CN112732581B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111459822A (zh) * | 2020-04-01 | 2020-07-28 | 北京字节跳动网络技术有限公司 | 系统组件数据的提取方法、装置、设备及可读介质 |
CN111563257A (zh) * | 2020-04-15 | 2020-08-21 | 成都欧珀通信科技有限公司 | 数据检测方法及装置、计算机可读介质及终端设备 |
CN112100072A (zh) * | 2020-09-16 | 2020-12-18 | 广州虎牙科技有限公司 | 应用程序代码的静态检测方法、装置、设备及介质 |
CN112148305A (zh) * | 2020-10-28 | 2020-12-29 | 腾讯科技(深圳)有限公司 | 一种应用检测方法、装置、计算机设备和可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112732581A (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10505981B2 (en) | Techniques for detecting malicious behavior using an accomplice model | |
US9444899B2 (en) | Use of internet information services logging to collect user information in an asynchronous manner | |
CN110708346B (zh) | 信息处理系统和方法 | |
CN107491382B (zh) | 日志输出方法和装置 | |
CN111563015B (zh) | 数据监控方法及装置、计算机可读介质及终端设备 | |
US11580294B2 (en) | Techniques for web framework detection | |
CN108737252B (zh) | 基于区块链的信息推送方法及装置 | |
CN108958826B (zh) | 动态配置应用安装包的方法和装置 | |
CN110196790A (zh) | 异常监控的方法和装置 | |
CN110688096B (zh) | 包含插件的应用程序的构建方法、装置、介质及电子设备 | |
CN111813685B (zh) | 自动化测试方法和装置 | |
CN113760722A (zh) | 测试系统和测试方法 | |
CN114297028A (zh) | 一种微服务日志链路追踪方法与系统 | |
CN110866031B (zh) | 数据库访问路径的优化方法、装置、计算设备以及介质 | |
CN113419740A (zh) | 程序数据流的分析方法、装置、电子设备及可读存储介质 | |
CN112732581B (zh) | Sdk检测方法、装置、电子设备、系统和存储介质 | |
CN112559024A (zh) | 一种生成交易码变更列表的方法和装置 | |
CN112817603B (zh) | 应用程序处理方法、装置、电子设备、系统和存储介质 | |
CN111400623B (zh) | 用于搜索信息的方法和装置 | |
CN112817874A (zh) | 一种用户界面的测试方法、装置、设备及介质 | |
US20180218064A1 (en) | Method and system for the creation and maintenance of a web presence data store built automatically for all entities with a social media presence | |
CN111767447A (zh) | 用于确定用户流量路径的方法和装置 | |
CN112965747B (zh) | 挖掘代码漏洞的方法、装置、设备和计算机可读介质 | |
CN112084440B (zh) | 数据校验方法、装置、电子设备和计算机可读介质 | |
CN113065920B (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176 Applicant after: Jingdong Technology Holding Co.,Ltd. Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176 Applicant before: Jingdong Digital Technology Holding Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |