应用程序的合规检测方法、装置及电子设备与流程

文档序号:31660743发布日期:2022-09-27 23:01阅读:60来源:国知局
1.本技术涉及计算机
技术领域
:,尤其涉及一种应用程序的合规检测方法、装置及电子设备。
背景技术
::2.依据国家相关法律法规,个人信息需要经过用户知晓并同意才可以进行采集使用。为此,应用程序需要在首次启动时对采用用户信息的行为进行说明及告知,在取得用户同意后方可进行后续采集使用。由于在应用程序的开发阶段,开发者无法确保开发出的应用程序在取得用户同意之前不会采集用户信息,因此,对应用程序进行合规检测尤为重要。3.目前的检测方法都是通过将应用程序的项目文件打包后交由第三方机构,通过各种越狱、逆向注入以及重签名等工具,检测应用程序是否违规获取用户信息。但是,这种检测方式的效率低,不适合在开发阶段进行随时、批量化的应用程序合规检测。技术实现要素:4.本技术实施例的目的是提供一种应用程序的合规检测方法、装置及电子设备,用于解决现有的合规检测方法不适合开发阶段进行随时、批量化的应用程序合规检测的问题。5.为了实现上述目的,本技术实施例采用下述技术方案:6.第一方面,本技术实施例提供一种应用程序的合规检测方法,包括:7.获取目标应用程序的项目文件中用于采集目标用户信息的目标方法函数;8.通过钩子函数,获取所述目标方法函数在被调用时采集的目标用户信息的授权标签,其中,所述授权标签用于指示对应的目标用户信息是否经过用户授权;9.基于所述目标方法函数在被调用时采集的目标用户信息的授权标签,确定所述目标应用程序是否合规。10.第二方面,本技术实施例提供一种应用程序的合规检测装置,包括:11.第一获取单元,用于获取目标应用程序的项目文件中用于采集目标用户信息的目标方法函数;12.第二获取单元,用于通过钩子函数,获取所述目标方法函数在被调用时采集的目标用户信息的授权标签,其中,所述授权标签用于指示对应的目标用户信息是否经过用户授权;13.合规检测单元,用于基于所述目标方法函数在被调用时采集的目标用户信息的授权标签,确定所述目标应用程序是否合规。14.第三方面,本技术实施例提供一种电子设备,包括:15.处理器;16.用于存储所述处理器可执行指令的存储器;17.其中,所述处理器被配置为执行所述指令,以实现如第一方面所述的方法。18.第四方面,本技术实施例提供一种计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如第一方面所述的方法。19.本技术实施例采用的上述至少一个技术方案能够达到以下有益效果:20.利用钩子(hook)函数能够在某个方法函数被调用时先捕获传递给该方法函数的消息而取得控制权的功能,通过从应用程序的项目文件中获取用于采集用户信息的目标方法函数,并通过钩子函数的上述功能拦截目标方法函数在被调用时采集的用户信息;进一步,通过为用户信息设置相应的授权标签来表示用户信息是否经过用户授权,在通过钩子函数拦截用户信息之后,利用所拦截的用户信息的授权标签即可确定目标方法函数是否在取得用户授权之前违规采集这类用户信息,进而实现对应用程序的违规检测;可见,本技术实施例提供的检测方法,利用钩子函数和用户信息的授权标签即可实现对应用程序的自动化合规检测,实现简单、效率高,可用于进行随时、批量化的应用程序合规检测。附图说明21.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:22.图1为本技术的一个实施例提供的一种应用程序的合规检测方法的流程示意图;23.图2为本技术的另一个实施例提供的一种应用程序的合规检测方法的流程示意图;24.图3为本技术的一个实施例提供的一种钩子函数绑定方法的示意图;25.图4为本技术的另一个实施例提供的一种钩子函数绑定方法的示意图;26.图5为本技术的一个实施例提供的一种应用程序的合规检测装置的结构示意图;27.图6为本技术的一个实施例提供的一种电子设备的结构示意图。具体实施方式28.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例及相应的附图对本技术技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。29.本说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应理解,这样使用的数据在适当情况下可以互换,以便本技术实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,本说明书和权利要求书中“和/或”表示所连接的对象的至少其中之一,字符“/”一般表示前后关联对象是一种“或”的关系。30.部分概念说明:31.合规检测:检测应用程序对于用户信息的采集是否符合国家相关法律法规,也即应用程序所采集的用户信息是否取得用户同意。32.objective-c:扩充c的面向对象编程语言,是一种ios系统的应用程序开发语言。33.钩子函数:又称为hook函数。在系统通过向某个方法函数传递某个消息来调用该方法函数时,钩子函数可以先捕获到该消息而取得控制权,进而可以对该消息进行加工、改变等处理。34.sdk:softwaredevelopmentkit,软件开发工具包。是一种为了避免暴露源码而以.a和.framework形式提供服务的静态库。35.fishhook:facebook提供的一个动态修改链接mach-o文件的工具,它能够mach-o文件加载原理,通过修改懒加载表和非懒加载表这两个表的指针达到c函数hook的目的。36.mach-o:是machobject的缩写,是在mac以及ios上可执行的一种文件格式,包括但不限于可执行文件(.out和.o)、动态库、静态库等。37.cocoapos:是osx和ios下的一个第三类库管理工具。38.pic:位置代码独立技术,即代码共享缓存技术。39.如前文所述,目前的检测方法都是通过将应用程序的项目文件打包后交由第三方机构,通过各种越狱、逆向注入以及重签名等工具,检测应用程序是否违规获取用户信息。但是,这种检测方式的效率低,不适合在开发阶段进行随时、批量化的应用程序合规检测。40.有鉴于此,本技术实施例旨在提供一种应用程序的合规检测方法,利用钩子(hook)函数能够在某个方法函数被调用时先捕获传递给该方法函数的消息而取得控制权的功能,通过从应用程序的项目文件中获取用于采集用户信息的目标方法函数,并通过钩子函数的上述功能拦截目标方法函数在被调用时采集的用户信息;进一步,通过为用户信息设置相应的授权标签来表示用户信息是否经过用户授权,在通过钩子函数拦截用户信息之后,利用所拦截的用户信息的授权标签即可确定目标方法函数是否在取得用户授权之前违规采集这类用户信息,进而实现对应用程序的违规检测;可见,本技术实施例提供的检测方法,利用钩子函数和用户信息的授权标签即可实现对应用程序的自动化合规检测,实现简单、效率高,可用于进行随时、批量化的应用程序合规检测。41.应理解,本技术实施例提供的应用程序的合规检测方法可以由电子设备或安装在电子设备中的软件执行。此处所谓的电子设备可以包括终端设备,比如智能手机、平板电脑、笔记本电脑、台式计算机、智能语音交互设备、智能家电、智能手表、车载终端、飞行器等;或者,电子设备还可以包括服务器,比如独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。42.以下结合附图,详细说明本技术各实施例提供的技术方案。43.s102,获取目标应用程序的项目文件中用于采集目标用户信息的目标方法函数。44.本技术实施例中,目标应用程序是指需要进行合规检测的应用程序。应用程序的项目文件是指开发人员对应用程序进行开发后生成的可执行文件。示例地,对于ios系统的应用程序,该应用程序的项目文件是指该应用程序的mach-o文件。45.本技术实施例中,用户信息是指涉及用户个人隐私的信息,具体可以包括但不限于:用户设备的地理位置、用户设备的通用唯一识别码(universallyuniqueidentifier,uuid)、用户设备的系统版本信息、用户的联系方式等。考虑到实际应用中,有的用户信息会可以在应用程序启动时通过弹窗等方式请求用户授权,以避免被应用程序非法获取,比如用户的地理位置、用户的联系方式等,而有的用户信息可能会在应用程序之前被应用程序非法获取,比如用户设备的uuid、系统版本信息等用户信息可能在应用程序的加载过程中被应用程序采集,这类信息无法通过弹窗等方式请求用户授权,为此,为减少对应用程序的合规检测工作量,目标用户信息可以包括后一类信息,即在应用程序启动之前不会被告知用户而被应用程序非法获取的用户信息。目标方法函数也即用于采集目标用户信息的方法函数。46.值得说明的是,本技术实施例中的方法函数是一个方法函数,其可以是函数,比如系统c函数,也可以是针对对象的方法,比如基于应用编程语言编写的自定义方法函数。47.在一种可选的实现方式中,为确保从目标应用程序的项目文件中准确、快速地获取所有目标方法函数,上述s102可以包括:基于预设方法函数配置信息,确定用于采集目标用户信息的目标方法函数的标识信息,以及通过预设文本搜索工具,基于目标方法函数的标识信息,在目标应用程序的项目文件中搜索目标方法函数。其中,预设方法函数配置信息包括预设用户信息以及用于采集预设用户信息的预设方法函数的标识信息。实际应用中,可由相关人员根据实际需要,在预设方法函数配置信息中设置多个预设用户信息及每个预设用户信息对应的预设方法函数的标识信息。48.每个方法函数具有对应的标识信息。方法函数的标识信息用于唯一标识该方法函数。示例地,方法函数的标识信息可以例如包括但不限于如下信息中的至少一种:方法函数的函数名、预先为方法函数设置的标识符等。49.更为具体地,可基于目标用户信息,从预设方法函数配置信息中获取用于采集目标用户信息的目标方法函数的标识信息,进一步通过预设文本搜索工具遍历目标应用程序的项目文件,每遍历到一个方法函数,则将当前遍历到的方法函数的标识信息与目标方法函数的标识信息进行匹配,若匹配,则将当前遍历到的方法函数确定为目标方法函数;否则,继续遍历下一个方法函数,完成对目标应用程序的项目文件的遍历。由此,即可获得目标应用程序的项目文件中的目标方法函数。50.实际应用中,预设文本搜索工具可以采用本领域常用的各类具有文本搜索功能的工具,具体可根据实际需要进行选择,本技术实施例对此不作限定。可选地,预设文本搜索工具可以为grep,grep是一种强大的文本搜索工具,它能够使用正则表达式实现快速、准确的文本搜索。51.示例地,以目标用户信息为用户设备的uuid为例,通过grep-rcfuuidcreatestring从目标应用程序的项目文件进行搜索匹配,可从umapm、fpfingerprint、bugly.framework等sdk中获得用于采集该目标用户信息的目标方法函数cfstringrefcfuuidcreatestring(cfallocatorrefalloc,cfuuidrefuuid)。52.本技术实施例在此示出了上述s102的一种具体实现方式。当然,应理解,上述s102也可以采用其它的方式实现,本技术实施例对此不作限定。53.s104,通过钩子函数,获取目标方法函数在被调用时采集的目标用户信息的授权标签。54.其中,每个目标用户信息都具有对应的授权标签。目标用户信息的授权标签可以是预先为目标用户信息设置的、用于表示目标用户信息是否经过用户授权的全局变量。示例地,授权标签可以采用布尔变量表示,若目标用户信息的授权标签为1,则表示目标用户信息经过用户授权;若目标用户信息的授权标签为0,则表示目标用户信息未经过用户授权。55.为了实现对目标用户信息的动态监控,确保其授权标签的可靠性和准确性,可选地,在上述s104之前,还包括:监听对目标用户信息的授权操作,以及基于预设全局变量和对授权操作的监听结果,生成目标用户信息的授权标签。56.示例地,预设全局变量可以采用初始值为0的全局布尔变量,若监听到对目标用户信息的授权操作,则将预设全局变量的值设置为1,得到用于表示目标用户信息经过用户授权的授权标签;若未监听到对目标用户信息的授权操作,则将预设全局变量的值设置为0,得到用于表示目标用户信息未经过用户授权的授权标签。57.需要说明的是,实际应用中,对目标用户信息的授权操作可通过任意适当的方式触发,比如用户选中授权界面上的确认授权选项等,本技术实施例对此不作限定。58.考虑到调用方是通过向所要调用的方法函数传递消息来实现对该方法函数的调用,而钩子函数能够在某个方法函数被调用时先捕获传递给该方法函数的消息而取得对该消息的控制权,基于此,在本技术实施例中,可利用钩子函数的这一功能,将目标方法函数与钩子函数进行绑定,即可在目标方法函数被调用时,利用钩子函数捕获目标方法函数采集的目标用户信息(也即传递给目标方法函数的消息),进一步,基于所拦截的目标用户信息的授权标签,即可确定目标方法函数所采集的目标方法信息是否经过用户授权,进而可实现对目标程序的合规性检测。59.由于在利用钩子函数捕获传递给某个方法函数的消息时,通常需要获知该方法函数的实现地址(也即在项目文件中的地址),比如在本技术实施例中,在利用钩子函数捕获目标方法函数在被调用时所采集的目标用户信息时,需要已知目标方法函数在项目文件中的地址,有的方法函数在编译时其实现地址即可被编译器确定,比如基于objective-c编写的自定义方法函数,但有的方法函数在编译时其实现地址无法被编译器确定,基于此,为确保钩子函数能够拦截到目标方法函数在被调用时所采集的目标用户信息,可针对不同类型的方法函数,采用相应的方式将目标方法函数与钩子函数进行绑定。60.具体而言,在一种可选的实现方式中,如图2所示,上述s104包括:61.s141,基于目标方法函数的类型,将目标方法函数与目标方法函数对应的钩子函数进行绑定。62.其中,目标方法函数的类型包括系统底层函数(比如系统c函数)和基于系统开发语言编写的自定义方法函数(比如基于objective-c语言编写的自定义方法函数)。实际应用中,可通过枚举为每个预设方法函数标记对应的类型。枚举是一个整型常量集合,值为“1《《x”并使用~0ul值表示所有,即可以结合“&”及“|”位运算来判断目标方法函数的类型。63.针对基于系统开发语言编写的自定义方法函数,由于这类方法函数在编译时其实现地址即可被编译器确定,并且这类方法函数在编译时,系统会依据其名称、参数序列等,生成一个唯一标识该方法函数的标识,也即sel(表示一个方法函数的selector的指针),sel与方法函数的方法实现(implementation,imp)是一一对应的,因而可通过将指向其方法实现与指向需要绑定的钩子函数的方法实现进行交换,比如将该方法函数的方法实现修改为需要绑定的钩子函数的方法实现,使得原本指向该方法函数的指针变为指向钩子函数的方法实现,以及使得原本指向钩子函数的方法实现的指针变为指向该方法函数的方法实现,由此实现将钩子函数绑定到这类方法函数中。64.具体而言,如图2所示,若目标方法函数为基于系统开发语言编写的自定义方法函数,则上述s141具体可实现为:获取目标方法函数的第一方法实现和目标方法函数对应的钩子函数的第二方法实现,以及基于预设交换方法对第一方法实现和第二方法实现进行交换处理。65.示例地,预设交换方法可以采用methodswizzling。如图3所示,交换前,目标方法函数的指针orisel指向目标方法函数的方法实现oriimp(也即第一方法实现),钩子函数的指针swisel指向钩子函数的方法实现swiimp(也即第二方法实现);在将oriimp与swiimp进行交换后,目标方法函数的指针orisel变为指向钩子函数的方法实现swiimp,而钩子函数的指针swiimp变为指向目标方法函数的方法实现oriimp,这样,在通过目标方法函数的指针orisel向目标方法函数发起调用时,实际上调用的是钩子函数,通过调用钩子函数,即可获取目标方法函数采集的目标用户信息的授权标签。66.针对系统底层函数,由于这类方法函数在编译时其实现地址无法被编译器确定,比如ios系统的开发商为了解决内存以及提高加载速度,将ios的动态库放在内存的一块特特殊位置,然后将这块内存共享给其它的应用程序,这块区域就是共享缓存(dyldsharedcache),有了共享缓存,系统底层函数在编译时就无法确定其内存地址,但却采用了pic技术在mach-o文件data段建立了两张表,即懒加载表和非懒加载表,利用其存放指向外部函数的指针,在首次调用懒加载表内的函数时,dyld会对该函数进行绑定,基于此,通过从上述两张表中查找目标方法函数的指针并基于指针去绑定钩子函数的实现地址,即可达到对目标方法函数进行hook的目的,也即将钩子函数绑定至目标方法函数。67.具体而言,如图2所示,若目标方法函数为系统底层函数,则上述s141具体可实现为:解析目标应用程序的项目文件,得到目标符号表和目标字符串表,其中,目标符号表包括预设函数的函数名和指向预设函数的指针,目标字符串表包括指向所述预设函数的指针与所述预设函数在可执行文件中的地址;接着,基于目标符号表和目标字符串表,确定目标方法函数在可执行文件中的地址;进一步,将目标方法函数在可执行文件中的地址修改为目标方法函数对应的钩子函数的实现地址。68.示例地,目标符号表包括懒加载表(lazysymbolpointertable)、非懒加载表(non-lazysymbolpointertable)、符号表(symboltable)、直接符号表(indirectsymboltable)等,目标字符串表包括字符串表(stringtable)。69.示例地,如图4所示,遍历懒加载表,基于当前遍历到的索引遍历直接符号表,获取当前遍历到的索引在直接符号表中的指针,该指针指向符号表中的地址,通过该地址获取字符串表偏移地址(stringtableoffset),在字符串表偏移地址指向的字符串表地址中,获取该指针对应的函数名,并将该函数名与目标方法函数的函数名进行匹配,若匹配成功,则记录当前遍历到的索引;进一步,基于记录的索引,即可获得目标方法函数在可执行文件中的存放地址,而后将目标方法函数在可执行文件中的地址值修改为目标方法函数对应的钩子函数的实现地址,即可达到对目标方法函数进行hook的目的,也即将钩子函数绑定至目标方法函数。70.s142,通过目标方法函数对应的钩子函数,获取目标方法函数在被调用时采集的目标用户信息的授权标签。71.在将目标方法函数与其对应的钩子函数绑定之后,即实现对目标方法函数的hook,这样,在目标方法函数被调用时,其对应的钩子函数即可拦截目标方法函数所采集的目标用户信息并获取所拦截的目标用户信息的授权标签。72.s106,基于目标方法函数在被调用时采集的目标用户信息的授权标签,确定目标应用程序是否合规。73.具体而言,若目标方法函数在被调用时采集的目标用户信息的授权标签指示目标用户信息未经过用户授权,则可确定目标方法函数不合规;若目标方法函数在被调用时采集的目标用户信息的授权标签指示目标用户信息经过用户授权,则可确定目标方法函数合规。进一步地,若目标应用程序的项目文件中的任一个目标方法函数不合规,则可确定目标应用程序不合规;若目标应用程序的项目文件中的全部目标方法函数合规,则可确定目标应用程序合规。74.进一步地,本技术的另一个实施例中,如图2所示,为便于开发人员对目标应用程序进行整改,在上述s106之后,本技术实施例提供的应用程序的合规检测方法还可以包括:75.s108,若目标应用程序不合规,则确定目标应用程序的项目文件中的不合规目标方法函数。76.示例地,若目标方法函数在被调用时采集的目标用户信息未经过用户授权,则可确定目标方法函数不合规;若目标方法函数在被调用时采集的目标用户信息经过用户授权,则可确定目标方法函数合规。77.s110,通过预设地址返回函数,获取不合规目标方法函数的入口函数地址。78.示例地,预设地址返回函数可以包括_builtin_return_address函数。__builtin_return_address函数的作用是返回所在函数被一级函数调用后,退出的地址(通常为return)。在本技术实施例中,通过在目标方法函数中添加_builtin_return_address函数,在目标方法函数不合规时,即可返回该目标方法函数的调用者的地址,也即目标方法函数的入口地址。79.s112,通过预设地址符号获取函数和不合规目标方法函数的入口函数地址,获取目标应用程序的项目文件中与不合规目标方法函数相关的源代码。80.示例地,预设地址符号获取函数可以包括dladdr函数。在本技术实施例中,通过dladdr函数可获取目标方法函数及其类文件信息,并统计打印输出到指定沙盒文件中,进一步,通过沙盒地址获取输出的文件即可查看与不合规目标方法函数相关的源代码。81.本技术实施例提供的应用程序的合规检测方法,利用钩子(hook)函数能够在某个方法函数被调用时先捕获传递给该方法函数的消息而取得控制权的功能,通过从应用程序的项目文件中获取用于采集用户信息的目标方法函数,并通过钩子函数的上述功能拦截目标方法函数在被调用时采集的用户信息;进一步,通过为用户信息设置相应的授权标签来表示用户信息是否经过用户授权,在通过钩子函数拦截用户信息之后,利用所拦截的用户信息的授权标签即可确定目标方法函数是否在取得用户授权之前违规采集这类用户信息,进而实现对应用程序的违规检测;可见,本技术实施例提供的检测方法,利用钩子函数和用户信息的授权标签即可实现对应用程序的自动化合规检测,实现简单、效率高,可用于进行随时、批量化的应用程序合规检测。82.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。83.此外,与上述图1所示的应用程序的合规检测方法相对应地,本技术实施例还提供一种应用程序的合规检测装置。图5为本技术的一个实施例提供的一种应用程序的合规检测装置500的结构示意图,该装置500包括:84.第一获取单元510,用于获取目标应用程序的项目文件中用于采集目标用户信息的目标方法函数;85.第二获取单元520,用于通过钩子函数,获取所述目标方法函数在被调用时采集的目标用户信息的授权标签,其中,所述授权标签用于指示对应的目标用户信息是否经过用户授权;86.合规检测单元530,用于基于所述目标方法函数在被调用时采集的目标用户信息的授权标签,确定所述目标应用程序是否合规。87.可选地,所述第二获取单元包括:88.加载子单元,用于基于所述目标方法函数的类型,将所述目标方法函数与所述目标方法函数对应的钩子函数进行绑定;89.标签获取子单元,用于通过所述目标方法函数对应的钩子函数,获取所述目标方法函数在被调用时采集的目标用户信息的授权标签。90.可选地,所述加载子单元具体用于:91.若所述目标方法函数为系统底层函数,则解析所述项目文件,得到目标符号表和目标字符串表,所述目标符号表包括预设函数的函数名和指向所述预设函数的指针,所述目标字符串表包括指向所述预设函数的指针与所述预设函数在所述项目文件中的地址;92.基于所述目标符号表和所述目标字符串表,确定所述目标方法函数在所述项目文件中的地址;93.将所述目标方法函数在所述项目文件中的地址修改为所述目标方法函数对应的钩子函数的实现地址。94.可选地,所述加载子单元具体用于:95.若所述目标方法函数为基于系统开发语言编写的自定义方法函数,则获取所述目标方法函数的第一方法实现和所述目标方法函数对应的钩子函数的第二方法实现;96.基于预设交换方法对所述第一方法实现和所述第二方法实现进行交换处理。97.可选地,所述装置还包括:98.监听单元,用于在所述第二获取单元通过钩子函数,获取所述目标方法函数在被调用时采集的目标用户信息的授权标签之前,监听对所述目标用户信息的授权操作;99.标签生成单元,用于基于预设全局变量和对所述授权操作的监听结果,生成所述目标用户信息的授权标签。100.可选地,所述第一获取单元包括:101.标识确定子单元,用于基于预设方法函数配置信息,确定用于采集目标用户信息的目标方法函数的标识信息,其中,所述预设方法函数配置信息包括预设用户信息以及用于采集所述预设用户信息的预设方法函数的标识信息;102.搜索子单元,用于通过预设文本搜索工具,基于所述目标方法函数的标识信息,在所述项目文件中搜索所述目标方法函数。103.所述装置还包括:104.方法函数确定单元,用于在所述第二获取单元基于所述目标方法函数及其在被调用时采集的用户信息的授权标签,确定所述目标应用程序是否合规之后,若所述目标应用程序不合规,则确定所述项目文件中的不合规目标方法函数,所述不合规目标方法函数被调用时采集的目标用户信息未经过用户授权;105.第三获取单元,用于通过预设地址返回函数获取不合规目标方法函数的入口函数地址;106.第四获取单元,用于通过预设地址符号获取函数和所述不合规目标方法函数的入口函数地址,获取所述项目文件中与所述不合规目标方法函数相关的源代码。107.显然,本技术实施例提供的应用程序的合规检测装置可以作为上述图1所示的应用程序的合规检测方法的执行主体,因此能够实现应用程序的合规检测方法在图1所实现的功能。由于原理相同,在此不再重复说明。108.本技术实施例提供的应用程序的合规检测装置,利用钩子(hook)函数能够在某个方法函数被调用时先捕获传递给该方法函数的消息而取得控制权的功能,通过从应用程序的项目文件中获取用于采集用户信息的目标方法函数,并通过钩子函数的上述功能拦截目标方法函数在被调用时采集的用户信息;进一步,通过为用户信息设置相应的授权标签来表示用户信息是否经过用户授权,在通过钩子函数拦截用户信息之后,利用所拦截的用户信息的授权标签即可确定目标方法函数是否在取得用户授权之前违规采集这类用户信息,进而实现对应用程序的违规检测;可见,本技术实施例提供的检测方法,利用钩子函数和用户信息的授权标签即可实现对应用程序的自动化合规检测,实现简单、效率高,可用于进行随时、批量化的应用程序合规检测。109.图6是本技术的一个实施例电子设备的结构示意图。请参考图6,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-accessmemory,ram),也可能还包括非易失性存储器(non-volatilememory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。110.处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industrystandardarchitecture,工业标准体系结构)总线、pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。111.存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。112.处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成应用程序的合规检测装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:113.获取目标应用程序的项目文件中用于采集目标用户信息的目标方法函数;114.通过钩子函数,获取所述目标方法函数在被调用时采集的目标用户信息的授权标签,其中,所述授权标签用于指示对应的目标用户信息是否经过用户授权;115.基于所述目标方法函数在被调用时采集的目标用户信息的授权标签,确定所述目标应用程序是否合规。116.上述如本技术图1所示实施例揭示的应用程序的合规检测装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。117.该电子设备还可执行图1的方法,并实现应用程序的合规检测装置在图1所示实施例的功能,本技术实施例在此不再赘述。118.当然,除了软件实现方式之外,本技术的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。119.本技术实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行以下操作:120.获取目标应用程序的项目文件中用于采集目标用户信息的目标方法函数;121.通过钩子函数,获取所述目标方法函数在被调用时采集的目标用户信息的授权标签,其中,所述授权标签用于指示对应的目标用户信息是否经过用户授权;122.基于所述目标方法函数在被调用时采集的目标用户信息的授权标签,确定所述目标应用程序是否合规。123.总之,以上所述仅为本技术的较佳实施例而已,并非用于限定本技术的保护范围。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。124.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。125.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。126.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。127.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1