CN114117434A - 检测方法及装置 - Google Patents
检测方法及装置 Download PDFInfo
- Publication number
- CN114117434A CN114117434A CN202111503606.3A CN202111503606A CN114117434A CN 114117434 A CN114117434 A CN 114117434A CN 202111503606 A CN202111503606 A CN 202111503606A CN 114117434 A CN114117434 A CN 114117434A
- Authority
- CN
- China
- Prior art keywords
- detection
- privacy function
- privacy
- installation package
- application program
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供检测方法及装置,其中所述检测方法包括:获取待检测的安装包;扫描所述安装包的源码数据中包含的函数标识,并将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对,获得第一检测结果;通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果;根据所述第一检测结果以及所述第二检测结果,确定目标检测结果。
Description
技术领域
本申请涉及数据处理技术领域,特别涉及两种检测方法及装置、计算设备和计算机可读存储介质。
背景技术
随着互联网的蓬勃发展,各式各样的应用程序(application,App)层出不穷。这些APP在运行时通常出于业务的需要会采集用户数据。然而有些用户数据是用户的隐私数据,是用户不希望被他人或无关人获知的信息,并且这些隐私数据的泄露可能对用户产生困扰或潜在的风险。因此,为了加强对用户隐私数据的保护,并帮助监管单位或企业对应用程序采集用户隐私数据进行判断,亟需提供一种有效检测上述问题的方案。
发明内容
有鉴于此,本申请实施例提供了两种检测方法及装置、计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本申请实施例的第一方面,提供了一种检测方法,包括:
获取待检测的安装包;
扫描所述安装包的源码数据中包含的函数标识,并将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对,获得第一检测结果;
通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果;
根据所述第一检测结果以及所述第二检测结果,确定目标检测结果。
可选地,所述通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果,包括:
确定所述安装包对应的应用程序匹配的操作系统;
通过所述操作系统对应的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果;
根据所述调用结果,生成所述应用程序的第二检测结果。
可选地,所述通过所述操作系统对应的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果,包括:
对所述安装包进行解压,获得安装文件;
通过将所述操作系统对应的检测程序的检测程序文件与所述安装文件进行打包,获得目标安装包;
在所述操作系统中安装并启动所述目标安装包的情况下,通过所述检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果。
可选地,所述通过所述操作系统对应的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果,包括:
将所述操作系统对应的检测程序注入所述操作系统的系统进程;
通过注入系统进程的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果。
可选地,所述通过所述操作系统对应的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果,包括:
将操作系统对应的检测程序注入所述应用程序;
通过注入所述应用程序的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果。
可选地,在所述操作系统为移动操作系统的情况下,所述隐私函数包括:在所述移动操作系统的权限函数中筛选的至少一个函数;
在所述操作系统为桌面操作系统的情况下,所述隐私函数包括下述至少一项:注册表隐私函数以及扫描敏感位置隐私函数。
可选地,所述将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对,获得第一检测结果,包括:
将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对;
根据对比结果,确定所述函数标识中与所述隐私函数标识相同的第一隐私函数标识、所述第一隐私函数标识所属的目标程序文件的文件名称和/或所述第一隐私函数标识在所述目标程序文件中的位置信息;
根据所述第一隐私函数标识、所述文件名称和/或所述位置信息,生成第一检测结果。
可选地,所述根据所述第一检测结果以及所述第二检测结果,确定目标检测结果,包括:
确定第一检测结果与所述第二检测结果中相同的目标隐私函数标识;
基于所述目标隐私函数标识,将所述第一检测结果与所述第二检测结果进行融合,获得所述应用程序的目标检测结果。
可选地,所述通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果,包括:
通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,确定被调用的隐私函数的第二隐私函数标识以及调用所述隐私函数的调用函数的调用函数标识;
根据所述第二隐私函数标识以及所述调用函数标识,生成第二检测结果。
可选地,所述根据所述第一检测结果以及所述第二检测结果,确定目标检测结果之后,还包括:
确定所述应用程序所属的应用类型以及所述应用类型对应的类型隐私函数标识;
将所述目标检测结果中包含的第三隐私函数标识与所述类型隐私函数标识进行对比,获得对比结果;
基于所述对比结果在所述第三隐私函数标识中确定与所述类型隐私函数标识对应的合规隐私函数标识以及与所述类型隐私函数标识不对应的不合规隐私函数标识;
基于所述合规隐私函数标识以及所述不合规隐私函数标识,在所述目标检测结果中进行标注;
将标注后的目标检测结果发送至所述应用程序的开发方。
可选地,所述将标注后的目标检测结果发送至所述应用程序的开发方之后,还包括:
将所述目标检测结果中标注为所述合规隐私函数标识对应的隐私数据名称添加至所述应用程序的隐私协议中进行声明;
将所述目标检测结果中标注为所述不合规隐私函数标识对应的隐私函数在所述应用程序的安装文件中进行删除。
可选地,所述获取待检测的安装包之后,还包括:
确定所述安装包的版本号;
将所述版本号与检测版本号集合中的检测版本号进行匹配;
在不存在匹配的检测版本号的情况下,执行所述扫描所述安装包的源码数据中包含的函数标识。
根据本申请实施例的第二方面,提供了另一种检测方法,包括:
获取待检测的安装包;
确定所述安装包对应的应用程序匹配的操作系统;
将所述操作系统对应的检测程序的检测程序文件与所述安装包中的安装文件进行打包,获得目标安装包;
在所述操作系统中安装并启动所述目标安装包的情况下,通过所述检测程序确定运行状态的所述应用程序对隐私函数的调用结果,其中,所述隐私函数是预设隐私函数集合中隐私函数标识对应的函数。
根据本申请实施例的第三方面,提供了一种检测装置,包括:
第一获取模块,被配置为获取待检测的安装包;
扫描模块,被配置为扫描所述安装包的源码数据中包含的函数标识,并将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对,获得第一检测结果;
检测模块,被配置为通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果;
第一确定结果模块,被配置为根据所述第一检测结果以及所述第二检测结果,确定目标检测结果。
根据本申请实施例的第四方面,提供了另一种检测装置,包括:
第二获取模块,被配置为获取待检测的安装包;
确定系统模块,被配置为确定所述安装包对应的应用程序匹配的操作系统;
打包模块,被配置为将所述操作系统对应的检测程序的检测程序文件与所述安装包中的安装文件进行打包,获得目标安装包;
第二确定结果模块,被配置为在所述操作系统中安装并启动所述目标安装包的情况下,通过所述检测程序确定运行状态的所述应用程序对隐私函数的调用结果,其中,所述隐私函数是预设隐私函数集合中隐私函数标识对应的函数。
根据本申请实施例的第五方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所述检测方法的步骤。
根据本申请实施例的第六方面,提供了一种计算机可读存储介质,其存储有计算机指令,所述计算机指令被处理器执行时实现所述检测方法的步骤。
本申请实施例中,通过获取待检测的安装包,扫描所述安装包的源码数据中包含的函数标识,并将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对,获得第一检测结果;实现对应用程序中包含的隐私函数的检测。并通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果,实现了对运行状态的应用程序对隐私函数的调用检测,再根据所述第一检测结果以及所述第二检测结果,确定目标检测结果。实现了通过两种检测方式的检测结果相互补充,保障检测结果的全面性以及准确性。
附图说明
图1是本申请一实施例提供的计算设备的结构框图;
图2是本申请一实施例提供的一种检测方法的流程图;
图3是本申请一实施例提供的一种检测方法中第一种检测方式的示意图;
图4是本申请一实施例提供的一种检测方法中第二种检测方式的示意图;
图5是本申请一实施例提供的一种检测方法中第三种检测方式的示意图;
图6是本申请一实施例提供的另一种检测方法的流程图;
图7是本申请一实施例提供的一种应用于iOS操作系统中的检测方法的处理流程图;
图8是本申请一实施例提供的一种检测装置的结构示意图。
图9是本申请一实施例提供的另一种检测装置的结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名称术语进行解释。
Hook技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。
注册表(Registry,繁体中文版Windows操作系统称之为登录档)是MicrosoftWindows中的一个重要的数据库,用于存储系统和应用程序的设置信息。
隐私数据(private data)或秘密数据,是指不想被他人或无关人等获知的信息。
操作系统(operating system,简称OS)是指管理计算机硬件与软件资源的计算机程序。
Frida:是一款易用的跨平Hook工具,一种动态的插桩工具,可以插入代码到原生App的内存空间中,动态的去监视和修改行为,原生平台包括Win、Mac、Linux、Android、iOS全平台。
Easyhook:一种Hook工具。
在本申请中,提供了两种检测方法及装置、计算设备和计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本申请一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。
计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备100的上述部件以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。
其中,处理器120可以执行图2所示检测方法中的步骤。图2示出了根据本申请一实施例提供的一种检测方法的流程图,具体包括以下步骤:
步骤202:获取待检测的安装包。
其中,安装包,是指将用以安装的相关文件进行打包生成的压缩包。具体的,该安装包可以理解为应用程序的安装包。而应用程序,可以为任意一种类型的应用程序,比如游戏程序,通信程序、租赁程序、购物程序等,在此不做限制。
实际应用中,由于大多应用程序会在运行过程中采集用户的隐私数据。而很多情况下,这种采集行为是不合理也是不合规的。为了有效防止这种情况的发生,可以将该检测方法应用于检测平台或检测工具。在上线前由检测平台或检测工具对应用程序进行隐私函数检测。通过隐私函数检测确定应用程序是否存在针对隐私数据的采集行为。并进一步判断该采集行为是否合规,以便对存在隐私合规性问题的应用程序进行修正。
具体实施时,可以通过检测平台或检测工具获取用户通过客户端上传的未发布的应用程序的安装包,将该安装包作为待检测的安装包;也可以直接获取从应用商店下载的已发布的安装包,将该安装包作为待检测的安装包。此外,还可以周期性获取客户端上传的未发布的安装包,或周期性地检测从应用商店新下载的安装包,在此不做限制。
本申请实施例,以安装包为客户端上传的未发布的安装包为例进行说明。实际应用中,为了使安装包满足上线要求,可以在完成对安装包中全部或部分的开发之后,对安装包进行隐私函数检测。
考虑到获取的安装包可能之前已经进行过隐私函数检测,为了避免浪费资源对检测过的安装包进行重复检测,可以先对安装包进行版本号检测,本申请实施例,具体采用如下方式实现:
确定所述安装包的版本号;
将所述版本号与检测版本号集合中的检测版本号进行匹配;
在不存在匹配的检测版本号的情况下,执行所述扫描所述安装包的源码数据中包含的函数标识。
其中,版本号,用以标识安装包的变更版本。具体的,如果两个安装包的版本号相同,表示两个安装包之间不存在变更,即两个安装包是相同的。相应地,检测版本号集合,是指已经检测过的安装包的版本号(即检测版本号)的集合。
具体实施时,完成对一个安装包的隐私函数检测之后,则可以将安装包的版本号作为检测版本号,添加至该安装包对应的检测版本号集合。在获取一个新的应用程序之后,先将获取的安装包的版本号与检测版本号集合中的检测版本号进行匹配;若检测版本号集合中存在与该版本号匹配的检测版本号,表明已经对该安装包进行过隐私函数检测,则不做处理即可;若检测版本号集合中不存在与该版本号匹配的检测版本号,表明未对该安装包进行过隐私函数检测,则执行下述步骤204,对该安装包进行隐私函数检测。
沿用上例,获取客户端上传的安装包A,确定安装包A的版本号为v203,针对安装包A预存的检测版本号集合中包括3个检测版本号:v003,v102,v110。将v203与检测版本号集合中这3个检测版本号依次进行匹配,确定不存在与该版本号v203匹配的版本号,执行下述步骤204对该安装包A进行隐私函数检测。
综上,在确定检测版本号集合中不存在与安装包的版本号匹配的检测版本号的情况下,对安装包进行隐私函数检测,避免对相同的安装包重复进行隐私函数检测,也保障了对更新安装包的隐私函数检测。
步骤204:扫描所述安装包的源码数据中包含的函数标识,并将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对,获得第一检测结果。
具体的,在获取待检测的安装包的基础上,考虑到如果安装包对应的应用程序存在采集隐私数据的行为,通常在编写程序时就会将隐私函数标识写入安装包的安装文件中。因此,通过扫描安装包的源码数据是否包含隐私函数标识,即可初步确定应用程序是否存在对隐私函数的调用。
其中,源码数据,是指安装包中包含的程序代码。实际应用中,由于安装包是一种压缩文件,因此无法直接读取其中的程序代码。在这种情况下,可以如图3所示本申请一实施例提供的一种检测方法中第一种检测方式的示意图。将安装包通过服务端后台解压安装包,以获得安装包中包含的安装文件。并通过检测工具扫描解包后获得的安装文件中源码数据包含的函数标识(该函数标识的数量可以为一个,也可以为多个)。再从这些函数标识中确定是否存在隐私函数的隐私函数标识,若存在则记录该隐私函数标识、隐私函数标识所属的安装文件中的文件名称以及隐私函数标识在安装包中的位置信息等。将记录的这些信息通过Web展示。具体的,安装文件中包括安装应用程序所需的资源文件、代码文件、配置文件等。
函数标识,是指用以唯一标识一个函数的信息。具体的,该函数标识可以是函数名称或函数编码等,在此不做限制。预设隐私函数集合,是指隐私函数的函数标识(即隐私函数标识)所组成的集合。具体实施时,该集合是通过预先在操作系统的系统函数中筛选出的对隐私数据进行获取的函数,再将这些函数的函数标识进行组合形成的;此外,预设隐私函数集合也可以是预先采集可能触及隐私规范中的隐私条例的函数,将这些函数的函数标识进行组合形成的,在此不做限制。
具体实施时,扫描安装包的源码数据中的函数标识,可以根据安装包的格式采用对应的工具进行扫描。比如,在安装包的格式为.apk格式的情况下,则可以采用apktool工具进行扫描。
具体实施时,在扫描源码数据中包含的函数标识的基础上,由于不确定这些函数标识对应的函数是否是隐私函数,因此需要将扫描出的函数标识与预设隐私函数集合中的隐私函数标识进行比对,以此确定该应用程序中是否包含隐私函数,本申请实施例,具体通过如下方式实现:
将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对;
根据比对结果,确定所述函数标识中与所述隐私函数标识相同的第一隐私函数标识、所述第一隐私函数标识所属的目标程序文件的文件名称和/或所述第一隐私函数标识在所述目标程序文件中的位置信息;
根据所述第一隐私函数标识、所述文件名称和/或所述位置信息,生成第一检测结果。
第一隐私函数标识,是指扫描出的函数标识中的隐私函数的标识。具体实施时,将源码数据中包含的函数标识与预设隐私函数集合中的隐私函数标识进行比对;若对比一致,表明该函数标识对应的函数是隐私函数,则将该函数标识确定为第一隐私函数标识;若对比不一致,表明该函数标识对应的函数不是隐私函数,则不做处理即可。
在确定第一隐私函数标识的基础上,进一步的,确定该第一隐私函数标识所在的安装文件(即目标程序文件),记录该目标程序名称的文件名称以及第一隐私函数标识在目标程序文件中的位置信息。其中,位置信息,是指目标程序文件中第一隐私函数标识所在的位置的信息。具体的,该位置信息,可以是第一隐私函数标识在目标程序文件中所处的位置行,也可以是第一隐私函数标识在目标程序文件中所处的段落号等。
实际应用中,由于可能根据第一隐私函数标识、目标程序文件的文件名称和/或第一隐私函数标识在目标程序文件中的位置信息中的任意一项或几项,都可以帮助开发方定位隐私函数。因此,可以将其中任意一项或几项进行组合生成第一检测结果。然而为了使开发方可以通过该第一检测结果对安装包的源码数据中包含的隐私函数一目了然。优选地,可以将这些信息全部作为第一检测结果。具体的,该第一检测结果是指对应用程序中包含的隐私函数的检测结果。
此外,在确定目标程序文件的基础上,还可以再确定目标程序文件的文件路径,并将该文件路径也作为第一检测结果或第一检测结果中的一部分。
沿用上例,对安装包A进行解包,并扫描安装包A的源码数据中包含的函数标识包括:F1、F2。在预设隐私函数集合中的隐私函数标识包括:F1、F3以及F4的情况下,分别将F1以及F2与预设隐私函数集合中包含的三个隐私函数标识进行对比。根据对比结果,将F1以及F2中与预设隐私函数集合中的隐私函数标识相同的函数标识F1确定为第一隐私函数标识。并确定该第一隐私函数标识F1所属的目标程序文件的文件名称为D1,和第一隐私函数标识在目标程序文件中的位置行为第5行。则将第一隐私函数标识F1以及文件名称D1以及位置行第5行进行组合,生成安装包A的第一检测结果。
综上,通过扫描源码数据中的函数标识,并将函数标识与预设隐私函数集合中的隐私函数标识进行对比的方式,确定应用程序中包含的隐私函数的函数信息,并生成第一检测结果。以便根据第一检测结果中包含的函数信息对应用程序对隐私函数的使用情况进行追踪。
步骤206:通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果。
具体的,在上述通过检测源码数据中包含的隐私函数标识,确定第一检测结果的基础上,考虑到应用程序在运行中可能存在通过动态下载或引用方式嵌入其他程序代码的情况。这种情况下,通过对源码数据进行扫描,可能会出现检测遗漏的问题。为了解决上述问题,可以再对应用程序进行运行状态下的隐私函数检测,以保障检测的完备性。
实际应用中,由于在运行状态下,应用程序会直接对函数进行调用执行,因此,可以通过运行状态的应用程序对隐私函数的调用情况,确定隐私函数的调用检测结果(即第二检测结果)。
具体实施时,考虑到不同的应用程序,其需要的运行环境(即操作系统)不同。为了使应用程序正常运行,需要先确定应用程序匹配的操作系统。并将应用程序在匹配的操作系统中运行,再通过检测程序检测应用程序在运行状态时对隐私函数的调用情况。本申请实施例,具体采用如下方式实现:
确定所述安装包对应的应用程序匹配的操作系统;
通过所述操作系统对应的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果;
根据所述调用结果,生成所述应用程序的第二检测结果。
实际应用中,运行应用程序,需要对应用程序先进行安装。而不同的格式的安装包需要在不同的操作系统中进行安装,比如,apk格式的安装包需要在Android系统中进行安装并运行;ipa格式的安装包需要在iOS系统中进行安装并运行。相应地,检测程序是指预先开发的用以对应用程序进行隐私函数调用检测的程序。
由于不同操作系统中包含的隐私函数不同,因此,针对不同操作系统所使用的检测程序也不同。具体实施时,可以预先安装多种模拟操作系统,比如Android模拟操作系统、iOS模拟操作系统等。在确定应用程序匹配的操作系统之后,将获取的应用程序发送至匹配的模拟操作系统中,并在该模拟操作系统中运行应用程序。再通过该模拟操作系统对应的检测程序,对应用程序在运行时对隐私函数的调用情况进行检测,确定应用程序对隐私函数进行调用的结果(即调用结果)。
其中,检测程序是指预先编辑的用以对其对应的操作系统中隐私函数进行检测的程序。由于在该检测程序中预先建立了与操作系统中包含的隐私函数的关联关系,因此,在应用程序对隐私函数进行调用时,该检测程序可以捕获或拦截该调用。具体的,该检测程序可以是检测工具的形式,也可以是动态库的形式等,在此不做限制。调用结果可以包括对被调用的隐私函数的名称,对隐私函数进行调用的调用函数,和/或该隐私函数被调用的次数等,在此不做限制。进一步的,将调用结果进行组合排列,即可生成针对应用程序的第二检测结果。
具体实施时,还可以将不同的操作系统分别安装在不同的终端设备(比如手机、电脑等)。在这种情况下,确定应用程序匹配的操作系统之后,则可以将该应用程序发送至其匹配的操作系统所在的终端设备。通过在终端设备中预先存储的与该操作系统对应的检测程序对应用程序进行隐私函数检测。
进一步的,由于通过检测程序对应用程序进行调用检测的方式是多种多样的,本申请实施例提供的第一种可选实施方式,具体通过如下方式实现:
对所述安装包进行解压,获得安装文件;
通过将所述操作系统对应的检测程序的检测程序文件与所述安装文件进行打包,获得目标安装包;
在所述操作系统中安装并启动所述目标安装包的情况下,通过所述检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果。
检测程序文件,是指承载检测程序的文件。安装文件,是指安装包中包含的文件。由于应用程序通常是以安装包的形式进行安装并启动,而为了实现检测程序对应用程序的检测,可以将该检测程序预先关联到该应用程序的启动流程中。则在将检测程序的检测程序文件和安装文件一起打包成安装包(即目标安装包)方式并启动的过程中,先对应用程序的启动,并在启动应用程序的过程中对检测程序进行启动。即实现检测程序以及应用程序的联合启动。再通过启动后的检测程序检测运行状态的应用程序对隐私函数的调用情况。
实际应用中,由于操作系统为了保障安装包的唯一性以及版权问题,可能要求安装包需在签名的基础上再进行打包。在此不做限制。
沿用上例,假设安装包A为ipa格式的安装包,其对应的操作系统为iOS系统。具体的如图4所示的本申请一实施例提供的一种检测方法中第二种检测方式的示意图。在对ipa格式的安装包进行解包的基础上,可以将预先编辑的用以基于iOS系统进行隐私函数检测的动态库(即检测程序)的检测程序文件与安装包A的安装文件重新打包,生成新的ipa格式的目标安装包。再对该目标安装包进行安装和启动。在启动目标安装包的过程中,启动安装包A对应的应用程序以及检测程序。并通过启动检测程序与iOS系统中包含的隐私函数之间的关联关系,对应用程序在运行过程中进行隐私函数的调用检测,并获得调用结果。
具体的,如图5所示的本申请一实施例提供的一种检测方法中第三种检测方式的示意图。该示意图中iOS监控流程为:通过应用/游戏(应用程序)的安装包上传后台(服务端)后,通过将该应用程序与检测程序重新打包,获得新应用/新游戏的安装包。通过对新应用/新游戏的安装包进行启动,实现将检测程序注入安装包(简称注入库),并通过注入库对新应用/新游戏在iOS操作系统中对隐私函数进行调用检测,并上传检测数据,通过Web生成报告。
综上,通过将检测程序的检测程序文件与所述安装文件进行打包,实现对应用程序以及检测程序的联合启动,无需获取操作系统的root权限。再通过启动的检测程序确定运行状态的应用程序对隐私函数的调用结果,保障了检测程序对调用情况的准确检测。
除上述检测方式之外,本申请实施例提供的第二种可选实施方式,具体通过如下方式实现:
将所述操作系统对应的检测程序注入所述操作系统的系统进程;
通过注入系统进程的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果。
具体实施时,将操作系统对应的检测程序注入操作系统的系统进程,是指将检测程序作为一个独立的检测工具,在操作系统其中进行启动,则启动后的检测程序对应的操作系统的一个系统进程。再通过注入系统进程的检测程序对应用程序进行隐私函数的调用结果。检测的具体实现方式与上述具体实现方式类似,在此不做赘述。
沿用上例,假设安装包A为apk格式的安装包,则该安装包A对应的应用程序匹配的操作系统为Android操作系统。将Android操作系统对应的检测程序进行启动,并注入到Android操作系统的系统进程。通过该检测程序检测运行状态的应用程序进行隐私函数的调用检测,并获得调用结果。
综上,通过将检测程序注入操作系统的系统进程,再通过注入系统进程的检测程序对应用程序在运行状态对隐私函数的调用情况进行检测,保障了检测的准确性。
除上述两种检测方式之外,本申请实施例提供的第三种可选实施方式,具体通过如下方式实现:
将操作系统对应的检测程序注入所述应用程序;
通过注入所述应用程序的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果。
将操作系统对应的检测程序注入应用程序,具体是将操作系统对应的检测程序直接进行启动,并将其注入应用程序。具体实施时,检测程序主要可以是hook(钩子)函数,该hook函数也可以以动态库的形式注入应用程序。再通过注入应用程序的检测程序对应用程序进行隐私函数检测。
需要说明的是,该检测程序可以通过其他第三方工具(比如Frida,Easyhook等)进行启动,并对检测结果进行采集;也可以通过自身Frida开发的启动程序进行启动,并对检测结果进行采集,在此不做限制。
沿用上例,假设安装包A对应的应用程序匹配的操作系统为Windows操作系统,启动该Windows操作系统对应的检测程序,并将该检测程序注入至应用程序。则该检测程序将对该应用程序在运行时进行隐私函数的调用检测,并获得调用结果。
具体的,如图5所示的本申请一实施例提供的一种检测方法中第三种检测方式的示意图。该示意图中Android/Windows的监控流程为:通过检测工具(检测程序)对操作系统中安装的应用/游戏(应用程序)进行拦截数据(即隐私函数调用的拦截),并将检测结果通过Windows进行展示,并将展示结果在后台记录(服务端记录)。
综上,通过将检测程序注入应用程序,再通过注入应用程序的检测程序对应用程序在运行状态对隐私函数的调用情况进行检测,保障了检测的准确性。
实际应用中,考虑到不同的操作系统中定义的用以采集用户隐私的隐私函数是不同的,因此,在所述操作系统为移动操作系统的情况下,所述隐私函数包括:在所述移动操作系统的权限函数中筛选的至少一个函数;
在所述操作系统为桌面操作系统的情况下,所述隐私函数包括下述至少一项:注册表隐私函数以及扫描敏感位置隐私函数。
实际应用中,常用的操作系统,通常分为两大类。第一大类是移动操作系统。移动操作系统可以是Android操作系统,也可以是iOS操作系统等在此不做限制。由于对移动操作系统中包含的隐私数据进行采集时,通常需要通过调用系统中对应的权限函数(比如,摄像头权限函数、录音权限函数、获取IP地址权限函数、获取电话号码权限函数等)进行隐私数据的采集。因此,在移动操作系统中通常可以在其定义权限函数中筛选至少一个函数作为隐私函数。也即,上述预设函数标识集合中包含的隐私函数标识即为这些筛选的隐私函数的函数标识。
第二大类是桌面操作系统,比如Windows操作系统、Linux操作系统等,在此不做限制。由于桌面操作系统中并不涉及获取隐私数据的权限函数,因此可以将敏感注册表对应的查询函数,以及扫描敏感位置的函数作为隐私函数。
综上,通过对不同的操作系统定义不同的隐私函数,可以使对应用程序的检测更加具有针对性以及可实施性。
进一步的,由于是对运行状态的应用程序进行隐私函数进行调用检测,可能检测到多种信息,为了便于根据第二检测结果对被调用的隐私函数进行追溯,可以将该隐私函数以及与该隐私函数存在调用关系的函数(即调用该隐私函数的调用函数)共同作为第二检测结果,本申请实施例,具体通过如下方式实现:
通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,确定被调用的隐私函数的第二隐私函数标识以及调用所述隐私函数的调用函数的调用函数标识;
根据所述第二隐私函数标识以及所述调用函数标识,生成第二检测结果。
其中,第二隐私函数标识,是指应用程序运行过程中调用的隐私函数对应的函数标识。调用函数,是指调用该隐私函数的函数。相应地,调用函数标识,是指调用函数对应的函数标识。进一步,在确定第二隐私函数标识以及调用函数标识的基础上,将针对同一隐私函数的第二隐私函数标识以及调用函数标识组成一条数据记录的方式,生成第二检测结果。实际应用中,还可以通过检测确定被调用的隐私函数的调用次数,并根据第二隐私函数标识、所述调用函数标识以及调用次数,生成第二检测结果。
比如,被调用的隐私函数的函数名称为F1,调用该F1的调用函数名称为CF1,则将F1以及CF1作为第二检测结果中的一条数据记录。
综上,根据检测的第二隐私函数标识以及调用函数标识,生成第二检测结果。以便通过第二检测结果快速定位隐私函数,并对不合规的隐私函数进行后续处理。
步骤208:根据所述第一检测结果以及所述第二检测结果,确定目标检测结果。
具体的,在上述获得第一检测结果以及第二检测结果的基础上,考虑到可能每种检测结果都存在不全面的地方。为了进一步完善检测结果,可以将这两种检测结果进行对比补充,进而组成新的包含两种检测结果的目标检测结果。
具体实施时,考虑到第一检测结果和第二检测结果中可能都针对相同的隐私函数标识进行了记录。如果二者分散在不同的位置,内容较为散乱,并且不易读取。为了使生成的目标检测结果更加具有条理性,更加易读,可以将相同的隐私函数标识对应的记录信息进行融合。本申请实施例,具体通过如下方式实现:
确定第一检测结果与所述第二检测结果中相同的目标隐私函数标识;
基于所述目标隐私函数标识,将所述第一检测结果与所述第二检测结果进行融合,获得所述应用程序的目标检测结果。
目标隐私函数标识,是指第一检测结果和第二检测结果中重合的隐私函数的名称。具体实施时,可以将一个检测结果(比如第一检测结果)中包含的隐私函数标识依次与另一个检测结果(比如第二检测结果)中包含的隐私函数标识进行对比,从而确定第一检测结果与第二检测结果中相同名称的隐私函数标识(即目标隐私函数标识)。
再基于目标隐私函数标识,将第一检测结果与第二检测结果进行融合。具体的,可以将目标隐私函数标识在第一检测结果中对应的数据记录与第二检测结果中对应的数据记录按照预设字段顺序,组合成一条数据记录。再将两种检测结果中未重合的隐私函数标识对应的数据记录进行拼接即可。
比如:第一检测结果中包括两个隐私函数对应的数据记录,第二检测结果中包括也两个隐私函数对应的数据记录,其中第一检测结果中和第二检测结果中名称相同的目标隐私函数名称为F1,则将第一检测结果中的目标隐私函数名称F1所属的目标程序文件的文件名称D1以及位置行第5行,与该目标隐私函数名称F1对应的调用函数CF1组合成为1条数据记录。再拼接第一检测结果中未与第二检测结果未重合的隐私函数名称对应的1条数据记录以及第二检测结果中未与第一检测结果未重合的隐私函数名称对应的1条数据记录。一共形成3条数据记录的目标检测结果。
综上,基于相同的目标隐私函数标识将所述第一检测结果与所述第二检测结果进行融合,生成目标检测结果,使得目标检测结果更具可读性,也更易实现对隐私函数的追踪。
考虑到有些隐私函数的调用是应用程序实现其功能所必须的,则这种调用是应当的,而有些隐私函数的调用是非必须的。因此需要进一步对这些检测出的隐私函数进行划分,以便从中确定出不合规的隐私函数。本申请实施例,具体通过如下方式实现:
确定所述应用程序所属的应用类型以及所述应用类型对应的类型隐私函数标识;
将所述目标检测结果中包含的第三隐私函数标识与所述类型隐私函数标识进行对比,获得对比结果;
基于所述对比结果在所述第三隐私函数标识中确定与所述类型隐私函数标识对应的合规隐私函数标识以及与所述类型隐私函数标识不对应的不合规隐私函数标识;
基于所述合规隐私函数标识以及所述不合规隐私函数标识,在所述目标检测结果中进行标注;
将标注后的目标检测结果发送至所述应用程序的开发方。
应用类型,可以是按照应用程序可以提供的服务类型进行划分的,比如,该应用类型可以是:游戏类型、教育类型、视频类型、购物类型、支付类型等,在此不做限制。由于每种类型的应用程序其功能不同,而有些功能可能需要在采集隐私数据的基础上才能实现。可以预先设置对应用类型可能需要调用的隐私函数的隐私函数标识(即类型隐私函数标识)。
若检测出的隐私函数标识,即目标检测结果中包含的隐私函数标识(第三隐私函数标识)与类型隐私函数标识匹配,则表示该第三隐私函数标识是该应用程序需要调用的隐私函数,则确定该第三隐私函数标识为合规隐私函数标识;若第三隐私函数标识与类型隐私函数标识不匹配,则表示该第三隐私函数标识是该应用程序不需要调用的隐私函数,则确定该第三隐私函数标识为不合规隐私函数标识。
进一步的,根据上述确定结果,对目标检测结果进行标注处理。具体的,可以为每个隐私函数对应的记录行添加相应的标注字段,该字段值可以为合规或不合规。再将标注后的目标检测结果发送至应用程序的开发方。由开发方根据目标检测结果对应用程序进行调整或修改。
将标注后的目标检测结果发送至所述应用程序的开发方之后,考虑到其中包括合规隐私函数标识以及不合规隐私函数标识,而不同的隐私函数所需要的处理方式是不同的。本申请实施例,具体通过如下方式实现:
将所述目标检测结果中标注为所述合规隐私函数标识对应的隐私数据名称添加至所述应用程序的隐私协议中进行声明;
将所述目标检测结果中标注为所述不合规隐私函数标识对应的隐私函数在所述应用程序的安装文件中进行删除。
隐私协议,是指用以向用户展示的对其隐私数据进行获取的声明协议。该协议可以在采集用户隐私时向用户展示,也可以在用户开启应用程序时进行展示,在此不做限制。如果隐私函数标识被标注为合规隐私函数标识,则将其对应的合规隐私函数标识对应的权限名称或待获取的隐私数据的名称(即隐私数据名称)添加至隐私协议,以便用户可以获知应用程序的获取行为,并决定是否对该行为进行授权。
如果隐私函数标识被标注为不合规隐私函数标识,则将其对应的不合规隐私函数标识对应隐私函数以及其相关调用在应用程序的安装文件(应用程序文件)中进行删除,以避免对隐私数据的不合规获取。
综上,通过对合规隐私函数进行声明处理,对不合规的隐私函数进行删除,保障了应用程序采集隐私数据的合理性,避免了应用程序对隐私函数的不合规采集。
本申请实施例中,通过获取待检测的安装包,扫描所述安装包的源码数据中包含的函数标识,并将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对,获得第一检测结果;实现对应用程序中包含的隐私函数的检测。并通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果,实现了对运行状态的应用程序对隐私函数的调用检测,再根据所述第一检测结果以及所述第二检测结果,确定目标检测结果。实现了通过两种检测方式的检测结果相互补充,保障检测结果的全面性以及准确性。
此外,处理器120还可以执行图6所示检测方法中的步骤。图6示出了本申请一实施例提供的另一种检测方法的流程图,具体包括以下步骤:
步骤602:获取待检测的安装包;
步骤604:确定所述安装包对应的应用程序匹配的操作系统;
步骤606:将所述操作系统对应的检测程序的检测程序文件与所述安装包中的安装文件进行打包,获得目标安装包;
步骤608:在所述操作系统中安装并启动所述目标安装包的情况下,通过所述检测程序确定运行状态的所述应用程序对隐私函数的调用结果,其中,所述隐私函数是预设隐私函数集合中隐私函数标识对应的函数。
具体的,安装包中的安装文件是对安装包进行解包获得的文件。
综上,通过获取待检测的安装包,并确定安装包对应的应用程序匹配的操作系统;将所述操作系统对应的检测程序的检测程序文件与安装包中的安装文件进行打包,获得目标安装包,再在所述操作系统中安装并启动所述目标安装包的情况下,通过所述检测程序确定运行状态的所述应用程序对隐私函数的调用结果,其中,所述隐私函数是预设隐私函数集合中隐私函数标识对应的函数。实现了将检测程序注入应用程序的安装包方式对应用程序进行隐私函数的调用检测,避免了获取操作系统的root权限,提高了检测效率。
上述为本实施例的另一种检测方法的示意性方案。需要说明的是,该检测方法的技术方案与上述的检测方法的技术方案属于同一构思,另一种检测方法的技术方案未详细描述的细节内容,均可以参见上述检测方法的技术方案的描述。
下述结合附图7,以本申请提供的检测方法在iOS操作系统的应用为例,对所述检测方法进行进一步说明。其中,图7示出了本申请一实施例提供的一种应用于iOS操作系统中的检测方法的处理流程图,具体包括以下步骤:
步骤702:获取待检测的安装包。
步骤704:确定安装包的版本号。
步骤706:将版本号与检测版本号集合中的检测版本号进行匹配。
步骤708:在不存在匹配的检测版本号的情况下,扫描安装包的源码数据中包含的函数标识,并将函数标识与预设隐私函数集合中的隐私函数标识进行比对,获得第一检测结果。
步骤710:确定安装包对应的应用程序匹配的操作系统。
具体的,该操作系统为iOS操作系统。
步骤712:通过将操作系统对应的检测程序的检测程序文件与安装包中的安装文件进行打包,获得目标安装包。
具体的,安装包中的安装文件,是对该安装包进行解包获得的。
步骤714:在操作系统中安装并启动目标安装包的情况下,通过检测程序确定运行状态的应用程序对隐私函数的调用结果。
步骤716:根据调用结果,生成应用程序的第二检测结果。
步骤718:根据第一检测结果以及第二检测结果,确定目标检测结果。
步骤720:确定应用程序所属的应用类型以及应用类型对应的类型隐私函数标识。
步骤722:将目标检测结果中包含的第三隐私函数标识与类型隐私函数标识进行对比,获得对比结果。
步骤724:基于对比结果在第三隐私函数标识中确定与类型隐私函数标识对应的合规隐私函数标识以及与类型隐私函数标识不对应的不合规隐私函数标识。
步骤726:基于合规隐私函数标识以及不合规隐私函数标识,在目标检测结果中进行标注。
步骤728:将标注后的目标检测结果发送至应用程序的开发方。
步骤730:将目标检测结果中标注为合规隐私函数标识对应的隐私数据名称添加至应用程序的隐私协议中进行声明。
步骤732:将目标检测结果中标注为不合规隐私函数标识对应的隐私函数在应用程序的安装文件中进行删除。
具体的,应用程序的安装文件,可以理解为应用程序的安装包中包含的安装文件。
综上,通过获取待检测的安装包,并确定安装包对应的应用程序匹配的操作系统;将所述操作系统对应的检测程序的检测程序文件与安装包中的安装文件进行打包,获得目标安装包,再在所述操作系统中安装并启动所述目标安装包的情况下,通过所述检测程序确定运行状态的所述应用程序对隐私函数的调用结果,其中,所述隐私函数是预设隐私函数集合中隐私函数标识对应的函数。实现了将检测程序注入应用程序的安装包方式对应用程序进行隐私函数的调用检测,避免了获取操作系统的root权限,提高了检测效率。
与上述方法实施例相对应,本申请还提供了检测装置实施例,图8示出了本申请一实施例提供的一种检测装置的结构示意图。如图8所示,该装置包括:
第一获取模块802,被配置为获取待检测的安装包;
扫描模块804,被配置为扫描所述安装包的源码数据中包含的函数标识,并将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对,获得第一检测结果;
检测模块806,被配置为通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果;
第一确定结果模块808,被配置为根据所述第一检测结果以及所述第二检测结果,确定目标检测结果。
可选地,所述检测模块806,包括:
确定操作系统子模块,被配置为确定所述安装包对应的应用程序匹配的操作系统;
检测结果子模块,被配置为通过所述操作系统对应的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果;
生成子模块,被配置为根据所述调用结果,生成所述应用程序的第二检测结果。
可选地,所述检测结果子模块,进一步被配置为:
对所述安装包进行解压,获得安装文件;
通过将所述操作系统对应的检测程序的检测程序文件与所述安装文件进行打包,获得目标安装包;
在所述操作系统中安装并启动所述目标安装包的情况下,通过所述检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果。
可选地,所述检测结果子模块,进一步被配置为:
将所述操作系统对应的检测程序注入所述操作系统的系统进程;
通过注入系统进程的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果。
可选地,所述检测结果子模块,进一步被配置为:
将操作系统对应的检测程序注入所述应用程序;
通过注入所述应用程序的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果。
可选地,在所述操作系统为移动操作系统的情况下,所述隐私函数包括:在所述移动操作系统的权限函数中筛选的至少一个函数;
在所述操作系统为桌面操作系统的情况下,所述隐私函数包括下述至少一项:注册表隐私函数以及扫描敏感位置隐私函数。
可选地,所述扫描模块804,进一步被配置为:
将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对;
根据对比结果,确定所述函数标识中与所述隐私函数标识相同的第一隐私函数标识、所述第一隐私函数标识所属的目标程序文件的文件名称和/或所述第一隐私函数标识在所述目标程序文件中的位置信息;
根据所述第一隐私函数标识、所述文件名称和/或所述位置信息,生成第一检测结果。
可选地,所述根据所述第一检测结果以及所述第二检测结果,确定目标检测结果,包括:
确定第一检测结果与所述第二检测结果中相同的目标隐私函数标识;
基于所述目标隐私函数标识,将所述第一检测结果与所述第二检测结果进行融合,获得所述应用程序的目标检测结果。
可选地,所述第一确定结果模块808,进一步被配置为:
通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,确定被调用的隐私函数的第二隐私函数标识以及调用所述隐私函数的调用函数的调用函数标识;
根据所述第二隐私函数标识以及所述调用函数标识,生成第二检测结果。
可选地,所述检测装置,还包括:
确定所述应用程序所属的应用类型以及所述应用类型对应的类型隐私函数标识;
将所述目标检测结果中包含的第三隐私函数标识与所述类型隐私函数标识进行对比,获得对比结果;
基于所述对比结果在所述第三隐私函数标识中确定与所述类型隐私函数标识对应的合规隐私函数标识以及与所述类型隐私函数标识不对应的不合规隐私函数标识;
基于所述合规隐私函数标识以及所述不合规隐私函数标识,在所述目标检测结果中进行标注;
将标注后的目标检测结果发送至所述应用程序的开发方。
可选地,所述检测装置,还包括:
将所述合规隐私函数标识对应的隐私数据名称添加至所述应用程序的隐私协议中进行声明;
将所述不合规隐私函数标识对应的隐私函数在所述应用程序的安装文件中进行删除。
可选地,所述检测装置,还包括:
确定所述安装包的版本号;
将所述版本号与检测版本号集合中的检测版本号进行匹配;
在不存在匹配的检测版本号的情况下,执行所述扫描所述安装包的源码数据中包含的函数标识。
本申请实施例中,通过获取待检测的安装包,扫描所述安装包的源码数据中包含的函数标识,并将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对,获得第一检测结果;实现对安装包的源码数据中包含的隐私函数的检测。并通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果,实现了对运行状态的应用程序对隐私函数的调用检测,再根据所述第一检测结果以及所述第二检测结果,确定目标检测结果。实现了通过两种检测方式的检测结果相互补充,保障目标检测结果的全面性以及准确性。
上述为本实施例的一种检测装置的示意性方案。需要说明的是,该检测装置的技术方案与上述的检测方法的技术方案属于同一构思,检测装置的技术方案未详细描述的细节内容,均可以参见上述检测方法的技术方案的描述。
与上述方法实施例相对应,本申请还提供了检测装置实施例,图9示出了本申请一实施例提供的另一种检测装置的结构示意图。如图9所示,该装置包括:
第二获取模块902,被配置为获取待检测的安装包;
确定系统模块904,被配置为确定所述安装包对应的应用程序匹配的操作系统;
打包模块906,被配置为将所述操作系统对应的检测程序的检测程序文件与所述安装包中的安装文件进行打包,获得目标安装包;
第二确定结果模块908,被配置为在所述操作系统中安装并启动所述目标安装包的情况下,通过所述检测程序确定运行状态的所述应用程序对隐私函数的调用结果,其中,所述隐私函数是预设隐私函数集合中隐私函数标识对应的函数。
综上,通过获取待检测的安装包,并确定所述安装包对应的应用程序匹配的操作系统;将所述操作系统对应的检测程序的检测程序文件与所述安装包中的安装文件进行打包,获得目标安装包,再在所述操作系统中安装并启动所述目标安装包的情况下,通过所述检测程序确定运行状态的所述应用程序对隐私函数的调用结果,其中,所述隐私函数是预设隐私函数集合中隐私函数标识对应的函数。实现了将检测程序注入应用程序的安装包方式对应用程序进行隐私函数的调用检测,避免了获取操作系统的root权限,提高了检测效率。
上述为本实施例的另一种检测装置的示意性方案。需要说明的是,该检测装置的技术方案与上述的另一种检测方法的技术方案属于同一构思,该检测装置的技术方案未详细描述的细节内容,均可以参见上述另一种检测方法的技术方案的描述。
本申请一实施例中还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所述的检测方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的检测方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述检测方法的技术方案的描述。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,所述计算机指令被处理器执行时实现如前所述检测方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的检测方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述检测方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。
Claims (17)
1.一种检测方法,其特征在于,包括:
获取待检测的安装包;
扫描所述安装包的源码数据中包含的函数标识,并将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对,获得第一检测结果;
通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果;
根据所述第一检测结果以及所述第二检测结果,确定目标检测结果。
2.根据权利要求1所述的检测方法,其特征在于,所述通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果,包括:
确定所述安装包对应的应用程序匹配的操作系统;
通过所述操作系统对应的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果;
根据所述调用结果,生成所述应用程序的第二检测结果。
3.根据权利要求2所述的检测方法,其特征在于,所述通过所述操作系统对应的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果,包括:
对所述安装包进行解压,获得安装文件;
通过将所述操作系统对应的检测程序的检测程序文件与所述安装文件进行打包,获得目标安装包;
在所述操作系统中安装并启动所述目标安装包的情况下,通过所述检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果。
4.根据权利要求2所述的检测方法,其特征在于,所述通过所述操作系统对应的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果,包括:
将所述操作系统对应的检测程序注入所述操作系统的系统进程;
通过注入系统进程的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果。
5.根据权利要求2所述的检测方法,其特征在于,所述通过所述操作系统对应的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果,包括:
将操作系统对应的检测程序注入所述应用程序;
通过注入所述应用程序的检测程序确定运行状态的所述应用程序对所述隐私函数的调用结果。
6.根据权利要求2-5任一项所述的检测方法,其特征在于,在所述操作系统为移动操作系统的情况下,所述隐私函数包括:在所述移动操作系统的权限函数中筛选的至少一个函数;
在所述操作系统为桌面操作系统的情况下,所述隐私函数包括下述至少一项:注册表隐私函数以及扫描敏感位置隐私函数。
7.根据权利要求1所述的检测方法,其特征在于,所述将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对,获得第一检测结果,包括:
将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对;
根据对比结果,确定所述函数标识中与所述隐私函数标识相同的第一隐私函数标识、所述第一隐私函数标识所属的目标程序文件的文件名称和/或所述第一隐私函数标识在所述目标程序文件中的位置信息;
根据所述第一隐私函数标识、所述文件名称和/或所述位置信息,生成第一检测结果。
8.根据权利要求1所述的检测方法,其特征在于,所述根据所述第一检测结果以及所述第二检测结果,确定目标检测结果,包括:
确定第一检测结果与所述第二检测结果中相同的目标隐私函数标识;
基于所述目标隐私函数标识,将所述第一检测结果与所述第二检测结果进行融合,获得所述应用程序的目标检测结果。
9.根据权利要求1所述的检测方法,其特征在于,所述通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果,包括:
通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,确定被调用的隐私函数的第二隐私函数标识以及调用所述隐私函数的调用函数的调用函数标识;
根据所述第二隐私函数标识以及所述调用函数标识,生成第二检测结果。
10.根据权利要求1所述的检测方法,其特征在于,所述根据所述第一检测结果以及所述第二检测结果,确定目标检测结果之后,还包括:
确定所述应用程序所属的应用类型以及所述应用类型对应的类型隐私函数标识;
将所述目标检测结果中包含的第三隐私函数标识与所述类型隐私函数标识进行对比,获得对比结果;
基于所述对比结果在所述第三隐私函数标识中确定与所述类型隐私函数标识对应的合规隐私函数标识以及与所述类型隐私函数标识不对应的不合规隐私函数标识;
基于所述合规隐私函数标识以及所述不合规隐私函数标识,在所述目标检测结果中进行标注;
将标注后的目标检测结果发送至所述应用程序的开发方。
11.根据权利要求10所述的检测方法,其特征在于,所述将标注后的目标检测结果发送至所述应用程序的开发方之后,还包括:
将所述目标检测结果中标注为所述合规隐私函数标识对应的隐私数据名称添加至所述应用程序的隐私协议中进行声明;
将所述目标检测结果中标注为所述不合规隐私函数标识对应的隐私函数在所述应用程序的安装文件中进行删除。
12.根据权利要求1所述的检测方法,其特征在于,所述获取待检测的安装包之后,还包括:
确定所述安装包的版本号;
将所述版本号与检测版本号集合中的检测版本号进行匹配;
在不存在匹配的检测版本号的情况下,执行所述扫描所述安装包的源码数据中包含的函数标识。
13.一种检测方法,其特征在于,包括:
获取待检测的安装包;
确定所述安装包对应的应用程序匹配的操作系统;
将所述操作系统对应的检测程序的检测程序文件与所述安装包中的安装文件进行打包,获得目标安装包;
在所述操作系统中安装并启动所述目标安装包的情况下,通过所述检测程序确定运行状态的所述应用程序对隐私函数的调用结果,其中,所述隐私函数是预设隐私函数集合中隐私函数标识对应的函数。
14.一种检测装置,其特征在于,包括:
第一获取模块,被配置为获取待检测的安装包;
扫描模块,被配置为扫描所述安装包的源码数据中包含的函数标识,并将所述函数标识与预设隐私函数集合中的隐私函数标识进行比对,获得第一检测结果;
检测模块,被配置为通过检测所述安装包对应的运行状态的应用程序对所述隐私函数标识对应的隐私函数的调用结果,获得第二检测结果;
第一确定结果模块,被配置为根据所述第一检测结果以及所述第二检测结果,确定目标检测结果。
15.一种检测装置,其特征在于,包括:
第二获取模块,被配置为获取待检测的安装包;
确定系统模块,被配置为确定所述安装包对应的应用程序匹配的操作系统;
打包模块,被配置为将所述操作系统对应的检测程序的检测程序文件与所述安装包中的安装文件进行打包,获得目标安装包;
第二确定结果模块,被配置为在所述操作系统中安装并启动所述目标安装包的情况下,通过所述检测程序确定运行状态的所述应用程序对隐私函数的调用结果,其中,所述隐私函数是预设隐私函数集合中隐私函数标识对应的函数。
16.一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,其特征在于,所述处理器执行所述计算机指令时实现权利要求1-13任意一项所述方法的步骤。
17.一种计算机可读存储介质,其存储有计算机指令,其特征在于,所述计算机指令被处理器执行时实现权利要求1-13任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111503606.3A CN114117434A (zh) | 2021-12-09 | 2021-12-09 | 检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111503606.3A CN114117434A (zh) | 2021-12-09 | 2021-12-09 | 检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114117434A true CN114117434A (zh) | 2022-03-01 |
Family
ID=80364030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111503606.3A Pending CN114117434A (zh) | 2021-12-09 | 2021-12-09 | 检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114117434A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118013512A (zh) * | 2024-04-08 | 2024-05-10 | 国家计算机网络与信息安全管理中心 | 一种App个人信息上传行为检测方法、设备及产品 |
-
2021
- 2021-12-09 CN CN202111503606.3A patent/CN114117434A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118013512A (zh) * | 2024-04-08 | 2024-05-10 | 国家计算机网络与信息安全管理中心 | 一种App个人信息上传行为检测方法、设备及产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9280665B2 (en) | Fast and accurate identification of message-based API calls in application binaries | |
US10698797B2 (en) | Mobile application program testing method, server, terminal, and storage medium | |
CN109308263B (zh) | 一种小程序测试方法、装置及设备 | |
CN103518393A (zh) | 检测移动通信设备内容的系统和方法 | |
US10754717B2 (en) | Fast and accurate identification of message-based API calls in application binaries | |
CN109614203B (zh) | 一种基于应用数据仿真的安卓应用云数据取证分析系统及方法 | |
CN110955409B (zh) | 在云平台上创建资源的方法和装置 | |
CN110659206A (zh) | 基于微服务的模拟架构建立方法、装置、介质及电子设备 | |
CN105653947A (zh) | 一种评估应用数据安全风险的方法及装置 | |
CN110875858A (zh) | 应用测试数据抓取方法、系统、设备及存储介质 | |
CN111563015A (zh) | 数据监控方法及装置、计算机可读介质及终端设备 | |
CN111124567A (zh) | 目标应用的操作录制方法和装置 | |
CN113360379B (zh) | 程序测试环境创建方法和程序测试环境创建装置 | |
CN114117434A (zh) | 检测方法及装置 | |
CN117241276B (zh) | 一种面向移动应用的检测工具及检测方法、系统及设备 | |
CN115552401A (zh) | 一种快应用检测方法、装置、设备及存储介质 | |
CN110825370A (zh) | 移动端应用开发方法、装置及系统 | |
CN109933990B (zh) | 基于多模式匹配的安全漏洞发现方法、装置及电子设备 | |
CN111338709B (zh) | 客户端中目标场景的跳转方法、装置、设备及存储介质 | |
CN110262856B (zh) | 一种应用程序数据采集方法、装置、终端及存储介质 | |
CN112631894A (zh) | 代码检测方法、装置、存储介质及计算机设备 | |
CN112506782A (zh) | 一种应用程序的测试方法、装置、设备及存储介质 | |
CN114139149A (zh) | 检测方法及装置 | |
CN111061625A (zh) | 一种应用于乱序密码键盘的自动化测试方法和装置 | |
CN111198721A (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 |