CN117235725A - 软件包名的获取方法、装置、电子设备以及存储介质 - Google Patents
软件包名的获取方法、装置、电子设备以及存储介质 Download PDFInfo
- Publication number
- CN117235725A CN117235725A CN202311238583.7A CN202311238583A CN117235725A CN 117235725 A CN117235725 A CN 117235725A CN 202311238583 A CN202311238583 A CN 202311238583A CN 117235725 A CN117235725 A CN 117235725A
- Authority
- CN
- China
- Prior art keywords
- name information
- software package
- package name
- application
- file
- 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
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000012545 processing Methods 0.000 claims abstract description 27
- 230000008569 process Effects 0.000 claims description 29
- 238000004590 computer program Methods 0.000 claims description 14
- 238000012795 verification Methods 0.000 claims description 9
- 238000004458 analytical method Methods 0.000 claims description 2
- 238000000605 extraction Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 11
- 238000001514 detection method Methods 0.000 description 7
- 230000003993 interaction Effects 0.000 description 5
- 238000001824 photoionisation detection Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 101150072844 APOM gene Proteins 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本公开提供了软件包名的获取方法、装置、电子设备以及存储介质,涉及计算机技术领域,具体涉及软件检测、网络安全技术领域。该软件包名的获取方法的具体实现方案为:从系统内核层读取引导加载程序运行系统内核时的参数,得到第一软件包名信息,其中,第一软件包名信息表征在历史时段内已运行的应用程序的软件包的名称信息;从应用框架层获取第二软件包名信息,其中,第二软件包名信息表征在历史时段内已安装的应用程序的软件包的名称信息;以及对第一软件包名信息和第二软件包名信息进行处理,得到目标软件包名信息。
Description
技术领域
本公开涉及计算机技术领域,具体涉及软件检测、网络安全技术领域,尤其涉及一种软件包名的获取方法、装置、电子设备以及存储介质。
背景技术
随着互联网技术在各个领域的深入应用,网络安全问题也备受关注。安全类的SDK(Software Development Kit,软件开发工具包)可以用于检测终端应用软件中是否存在含有病毒、虚拟定位等存在网络安全隐患的软件。
发明内容
本公开提供了一种软件包名的获取方法、装置、电子设备以及存储介质。
根据本公开的一方面,提供了一种软件包名的获取方法,包括:从系统内核层读取引导加载程序运行系统内核时的参数,得到第一软件包名信息,其中,第一软件包名信息表征在历史时段内已运行的应用程序的软件包的名称信息;从应用框架层获取第二软件包名信息,其中,第二软件包名信息表征在历史时段内已安装的应用程序的软件包的名称信息;以及对第一软件包名信息和第二软件包名信息进行处理,得到目标软件包名信息。
根据本公开的另一方面,提供了一种软件包名的获取装置,包括:读取模块、获取模块和处理模块。读取模块,用于从系统内核层读取引导加载程序运行系统内核时的参数,得到第一软件包名信息,其中,第一软件包名信息表征在历史时段内已运行的应用程序的软件包的名称信息;获取模块,用于从应用框架层获取第二软件包名信息,其中,第二软件包名信息表征在历史时段内已安装的应用程序的软件包的名称信息;以及处理模块,用于对第一软件包名信息和第二软件包名信息进行处理,得到目标软件包名信息。
根据本公开的另一方面,提供了一种电子设备,包括:至少一个处理器;以及与上述至少一个处理器通信连接的存储器;其中,上述存储器存储有可被上述至少一个处理器执行的指令,上述指令被上述至少一个处理器执行,以使上述至少一个处理器能够执行如上描述的方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,上述计算机指令用于使上述计算机执行如上描述的方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,上述计算机程序在被处理器执行时实现如上描述的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1示意性示出了根据本公开实施例的可以应用软件包名的获取方法及装置的示例性系统架构;
图2示意性示出了根据本公开实施例的软件包名的获取方法的流程图;
图3示意性示出了根据本公开实施例的从系统内核层得到第一软件包名信息的流程示意图;
图4示意性示出了根据本公开一些实施例的从应用框架层得到第二软件包名的流程示意图;
图5示意性示出了根据本公开另一些实施例的从应用框架层得到第二软件包名的流程示意图;
图6示意性示出了根据本公开又一实施例的从应用框架层得到第二软件包名的流程示意图;
图7示意性示出了根据本公开实施例的软件包名的获取装置的框图;以及
图8示意性示出了根据本公开实施例的适于实现软件包名的获取方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
安全类的SDK在对Android(安卓)系统中的应用软件进行安全检测时,需要先获取终端的软件包名,再通过对获取到的软件包名进行规则匹配,例如:与黑名单进行比对或与预定的命名规则进行匹配等,得到应用软件的安全检测结果。
相关技术中,一般是基于Android系统提供的API(Application ProgrammingInterface,应用程序接口),调用Package Manager类的“get Installed Packages”方法获取软件包名。
但是,基于Android系统提供的API获取的信息中不仅包括软件包名,还包括软件版本、软件安装时间等隐私信息。而且,这种方法不能获取到用户已设置禁用或隐藏的应用的软件包名,导致安全检测结果不准确。
此外,相关技术中还可以通过调用Package Manager类的“query IntentActivities”方法或“App Usages Statistics query Usage States”方法获取启动器应用列表或最近使用的应用列表。但是,这两种方法不能获取到对于后台服务应用或用户已设置禁用或隐藏的应用的软件包名,仍然存在漏检的问题。
有鉴于此,本公开提供了一种软件包名的获取方法,通过从系统内核层读取引导加载程序运行系统内核时的参数,得到第一软件包名信息;从应用框架层获取第二软件包名信息;以及对第一软件包名信息和第二软件包名信息进行处理,得到目标软件包名信息。基于系统底层原理,由于软件包名信息是从系统内核参数和应用框架层获取得到的,可以在不涉及任何关于应用软件的敏感信息,仅获取到全面的软件包名信息,降低漏检带来的安全风险。
图1示意性示出了根据本公开实施例的可以应用软件包名的获取方法及装置的示例性系统架构。
需要注意的是,图1所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。例如,在另一实施例中,可以应用软件包名的获取方法及装置的示例性系统架构可以包括终端设备,但终端设备可以无需与服务器进行交互,即可实现本公开实施例提供的软件包名的获取方法及装置。
如图1所示,根据该实施例的100可以包括终端设备110、网络120和服务器130。网络110用以在终端设备110和服务器130之间提供通信链路的介质。网络120可以包括各种连接类型,例如有线和/或无线通信链路等等。
终端设备的Android系统架构1101可以包括:应用层(Applications)101、应用框架层(Application Framework)102、核心类库(Libraries)103和系统内核层(LinuxKernel)104。在核心类库(Libraries)103包括运行时(Runtime)1031调用的核心类库。
用户可以使用终端设备110通过网络120与服务器130交互,以接收或发送消息等。终端设备110上可以安装有各种通讯客户端应用,例如知识阅读类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端和/或社交平台软件等(仅为示例)。
终端设备110可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器130可以是提供各种服务的服务器,例如对用户利用终端设备110所浏览的内容提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
需要说明的是,本公开实施例所提供的软件包名的获取方法一般可以由终端设备110执行。相应地,本公开实施例所提供的软件包名的获取装置也可以设置于终端设备110中。
例如:终端设备140可以从系统内核层104通过读取Linux/pro目录下的整数类型的文件夹名称,获得已历史时段内已运行的进程标识号。通过遍历进程标识号,读取引导加载程序运行系统内核时的参数,得到在历史时段内已运行的应用程序的软件包的名称信息。从应用框架层102可以读取私有数据目录data/data目录下的文件夹名称,得到在历史时段内已安装的应用程序的软件包的名称信息。终端设备110可以对获取到的对第一软件包名信息和第二软件包名信息进行处理,得到目标软件包名信息。
或者,本公开实施例所提供的软件包名的获取方法一般也可以由服务器130执行。相应地,本公开实施例所提供的软件包名的获取装置一般可以设置于服务器130中。本公开实施例所提供的软件包名的获取方法也可以由不同于服务器130且能够与终端设备110和/或服务器130通信的服务器或服务器集群执行。相应地,本公开实施例所提供的软件包名的获取装置也可以设置于不同于服务器130且能够与终端设备110和/或服务器130通信的服务器或服务器集群中。
在本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
图2示意性示出了根据本公开实施例的软件包名的获取方法的流程图。
如图2所示,该方法包括操作S210~S230。
在操作S210,从系统内核层读取引导加载程序运行系统内核时的参数,得到第一软件包名信息。
在操作S220,从应用框架层获取第二软件包名信息。
在操作S230,对第一软件包名信息和第二软件包名信息进行处理,得到目标软件包名信息。
根据本公开的实施例,第一软件包名信息表征在历史时段内已运行的应用程序的软件包的名称信息。引导加载程序运行系统内核时的参数表征应用程序运行时,在Linux系统内核层bootloader(引导加载程序)在启动Linux系统内核时的参数,该参数中仅包括软件包名,不包括任何与软件包相关的其他信息。
根据本公开的实施例,Android系统是基于Linux内核研发的。对于Android系统中的每一个应用的运行进程对于系统内核层均存在一个进程标识号(ProcessIdentification,PID),以便操作系统和系统管理员能够识别和管理不同的进程。在Android系统已运行的应用,都会在Linux/proc/目录下生成对应的以PID命名的目录,用于存储与PID对应的关联信息。基于此,可以通过读取Linux/proc/目录下引导加载程序运行系统内核时的参数,得到在历史时段内已运行的应用程序的软件包的名称信息。
根据本公开的实施例,在Android系统上每个应用在运行时,对于系统内核层来说,都会开辟一个进程标识(PID),使得不同的PID对应的沙箱资源是互相独立的,因此,从引导加载程序运行系统内核时的参数读取到的软件包名仅包括软件包名信息,而不包括与应用软件相关联的其他敏感信息。可以理解的是,无论用户是否对该应用进行禁用或隐藏设置,只要该应用在该Android系统上运行过,就可以得到该应用的软件包名。
根据本公开的实施例,Android系统的应用框架层的私有目录data/data目录下为应用包名的文件夹,当应用安装后,该文件夹用于存储应用执行时生成的私有数据。对于安装有外部存储硬件,例如:SD卡(Secure Digital Memory Card),Android系统的应用框架层的外部私有数据目录sdcard/Android/data/目录下为应用包名的文件夹,当安装在SD卡上的应用安装后,该文件夹用于存储应用执行时生成的外部私有数据。基于此,可以从应用框架层获取到在历史时段内已安装的应用程序的软件包的名称信息。
根据本公开的实施例,可以理解的是,在应用框架层,只要应用被安装,则会在应用框架层创建应用包名的文件夹,无论用户是否对该应用进行禁用或隐藏设置,都可以得到该应用的软件包名。
根据本公开的实施例,针对同一终端,从不同的系统层获取到的软件包名可能存在重复,因此,可以对第一软件包名信息和第二软件包名信息进行处理,例如:删除重复信息或按照应用场景的需求设置信息筛选规则,实现对软件包名信息的定向筛选,得到目标软件包名信息。
根据本公开的实施例,通过从系统内核层读取引导加载程序运行系统内核时的参数,得到第一软件包名信息;从应用框架层获取第二软件包名信息;以及对第一软件包名信息和第二软件包名信息进行处理,得到目标软件包名信息。基于系统底层原理,由于软件包名信息是从系统内核参数和应用框架层获取得到的,可以在不涉及任何关于应用软件的敏感信息,仅获取到全面的软件包名信息,降低漏检带来的安全风险。
基于前文描述的Android系统的Linux内核层的原理可知,Linux内核层的进程标识与已运行应用的软件包名是一一对应的。因此,可以通过执行Linux命令,得到在历史时段内已运行的应用程序的进程标识;以及根据进程标识,从系统内核层读取引导加载程序运行系统内核时的参数,得到第一软件包名信息。
图3示意性示出了根据本公开实施例的从系统内核层得到第一软件包名信息的流程示意图。
如图3所示,该实施例300可以包括操作S311~S314。
在操作S311,通过执行Linux“ls-al”命令,得到在历史时段内已运行的应用程序的进程标识PID列表。
在操作S312,读取与PID列表中第i个PID对应的/Proc/PID#/cmdline中的参数,得到与第i个PID对应的软件包名。
在操作S313,确定PID#是否等于PID阈值,若是,则表示已遍历到PID列表中的最后一项,则执行操作S314。若不是,则递增i,继续遍历PID列表中的下一项,并返回执行操作S312。
在操作314,得到PID列表中的全部PID对应的第一软件包名信息。
由于包括PID的系统文件的名称一般是整数类型的,因此,可以通过对系统文件名称的解析,筛选到包括PID的系统文件。
根据本公开的实施例,通过执行第二命令,得到在历史时段内已运行的应用程序的进程标识,可以包括如下操作:通过执行第二命令,得到系统内核运行状态下的系统文件的名称信息;解析系统文件的名称信息,得到与预定字段类型匹配的目标系统文件的名称信息;以及从目标系统文件的名称信息中提取进程标识。
例如:通过执行Linux“ls-al”命令,得到的系统文件A的名称可以是“XXXX 312”、系统文件B的名称可以是“YYYY apom”。预定字段类型可以是整数型,通过解析系统文件的名称信息可知系统文件A中的字段“312”是整数型,系统文件B中的字段“apom”是字母型。因此,可以将系统文件A确定为目标系统文件,并从系统文件A的名称中提取进程标识“312”。
根据本公开的实施例,通过对系统文件名称的解析,筛选到包括PID的系统文件,从而减少获取PID列表时的数据处理量。
根据本公开的实施例,从应用框架层获取第二软件包名信息,可以包括如下操作:从应用框架层读取私有数据目录下的文件名称信息;基于预定的软件包名的命名规则,从文件名称信息中确定目标文件名称信息;以及从文件名称信息中提取软件包名字段,得到第二软件包名信息。
图4示意性示出了根据本公开一些实施例的从应用框架层得到第二软件包名的流程示意图。
如图4所示,该实施例400可以包括操作S421~S425。
在操作S421,读取Andriod系统私有数据目录下的文件夹名称。
在操作S422,基于预定正则表达式,对第j个文件名称进行校验,得到校验结果。
在操作S423,确定校验结果是否为校验通过?若是,则执行操作S424;若不是,则递增j,并返回执行操作S422。
在操作S424,将第j个文件名称信息确定为目标文件名称信息。
在操作S425,从目标文件名称信息中提取软件包名字段,得到第二软件包名信息。
根据本公开的实施例,私有数据目录包括系统私有数据目录和外部存储硬件的私有数据目录。例如:系统私有数据目录可以是data/data目录;外部存储硬件的私有数据目录可以是sdcard/Android/data/目录。
根据本公开的实施例,预定正则表达式是根据预定的软件包名的命名规则构建得到的。预定的软件包名的命名规则可以包括:软件包名的字段类型可以包括小写字母“a~z”、数字“0~9”和下划线“”,不能包括特殊字符、空格等类型的字段,不同字段类型的字段之间使用点号“.”进行分隔。
根据本公开的实施例,由于软件包名是从私有数据目录下的文件夹名称中提取到的,文件夹名称中只包括软件包名信息,不包括与软件包关联的其他信息,因此,可以提高获取信息的安全性。同时,基于软件包名的命名规则构建的正则表达式,对文件夹名称进行校验,可以减少对冗余信息的数据处理,提高获取信息的效率。
图5示意性示出了根据本公开另一些实施例的从应用框架层得到第二软件包名的流程示意图。
如图5所示,该实施例500可以包括操作S521~S522。
在操作S521,通过执行Linux命令“pm list packages”获取在历史时段内已安装的应用程序集合信息。
在操作S522,从应用程序集合信息中删除预定字段,得到第二软件包名信息。
根据本公开的实施例,通过执行Linux命令“pm list packages”可以从应用框架层获取应用程序集合信息。应用程序集合中的应用程序信息,例如:package:com.XXX.asd。在该应用程序信息中位于“package:”字段后的“com.XXX.asd”即是软件包名。因此,预定字段可以是“package:”,删除上述预定字段之后,可以得到第二软件包名信息。
根据本公开的实施例,通过执行Linux命令“pm list packages”可以获取已安装的应用程序的软件包名,即使软件包名已被用户设置为禁用,也可以从应用框架层得到已安装过的软件包名信息,降低漏检某个应用的软件包名而造成的安全风险。
对于某些版本的Android系统,可能存在已经限制了上述Linux命令“pm listpackages”的执行权限,因此,可以基于UID(User Identification,用户标识)获取与用户标识对应的软件包名。
根据本公开的实施例,在Android系统中,每个应用在安装是系统都会分配一个唯一的UID,使得系统能够根据UID管理某个应用的资源访问权限。例如:在某两个应用之间进行资源交互时,可以通过判断待交互资源的两个应用的UID是否具有资源访问权限,确定是否允许该两个应用进行资源交互。由此可见,用户标识与软件包名也是一一对应的。因此,可以利用用户标识获取软件包名。
根据本公开的实施例,从应用框架层获取第二软件包名信息可以包括如下操作:从与应用框架层的系统文件对应的源代码文件中获取应用程序标识;以及遍历应用程序标识,得到第二软件包名信息。
根据本公开的实施例,在Android系统中,与应用框架层的系统文件对应的源代码文件中为系统应用软件包和第三方应用软件包分别预留了不同的UID标识区间。例如:对于系统应用软件包预留的UID标识区间是1~10000;对于第三方应用软件包预留的UID标识区间是10001~12000。
图6示意性示出了根据本公开又一实施例的从应用框架层得到第二软件包名的流程示意图。
如图6所示,该实施例600可以包括操作S621~S624。
在操作S621,从与应用框架层的系统文件对应的源代码文件中获取应用程序标识;
在操作S622,针对0~10000区间的UID,通过遍历每一个UID,得到与系统应用对应的软件包名信息;
在操作S623,针对10001~12000区间的UID,通过遍历每一个UID,得到与第三方应用对应的软件包名信息;
在操作S624,根据与系统应用对应的软件包名信息和与第三方应用对应的软件包名信息,得到第二软件包名信息。
根据本公开的实施例,可以通过调用Package Manager类的get Package For Uid方法从与应用框架层的系统文件对应的源代码文件中获取应用程序标识UID。
根据本公开的实施例,第一预定应用程序标识区间可以是为系统应用软件包预留的UID标识区间“1~10000”。第二预定应用程序标识区间可以是为第三方应用软件包预留的UID标识区间。
根据本公开的实施例,通过遍历用户标识获取软件包名的方式,由于用户标识是从应用框架层的系统文件的源代码文件中获取的,因此,这种方式不受限于系统版本,通用性较强。而且,在获取软件包名的同时不涉及任何与软件包名关联的其他敏感信息的获取,符合相关隐私条例的规定。
基于前文描述的方案得到的第一软件包名信息与第二软件包名信息中可能存在重复信息。因此,可以对第一软件包名信息和第二软件包名信息进行去重处理,得到目标软件包名信息。
例如:对比第一软件包名信息与第二软件包名信息,得到重复的软件包名信息;从第二软件包名信息中删除重复的软件包名信息,得到第三软件包名信息;以及将第一软件包名信息和第三软件包名信息确定为目标软件包名信息。
根据本公开的实施例,通过对比去重,可以减少冗余的软件包名信息,减少后续的安全检测的处理量。基于不同方法从不同的系统层面获取软件包名信息,可以信息的全面性,降低漏检风险。
图7示意性示出了根据本公开实施例的软件包名的获取装置的框图。
如图7所示,该获取装置700可以包括读取模块710、获取模块720和处理模块730。
读取模块710,用于从系统内核层读取引导加载程序运行系统内核时的参数,得到第一软件包名信息,其中,第一软件包名信息表征在历史时段内已运行的应用程序的软件包的名称信息。
获取模块720,用于从应用框架层获取第二软件包名信息,其中,第二软件包名信息表征在历史时段内已安装的应用程序的软件包的名称信息。
处理模块730,用于对第一软件包名信息和第二软件包名信息进行处理,得到目标软件包名信息。
根据本公开的实施例,获取模块可以包括:读取子模块、第一确定子模块和提取子模块。读取子模块,用于从应用框架层读取私有数据目录下的文件名称信息;其中,私有数据目录包括系统私有数据目录和外部存储硬件的私有数据目录。第一确定子模块,用于基于预定的软件包名的命名规则,从文件名称信息中确定目标文件名称信息。提取子模块,用于从文件名称信息中提取软件包名字段,得到第二软件包名信息。
根据本公开的实施例,第一确定子模块可以包括:校验单元和确定单元。校验单元,用于基于预定正则表达式,对文件名称信息进行校验,得到校验结果,其中,预定正则表达式是根据命名规则构建得到的。确定单元,用于基于校验结果,从文件名称信息中确定目标文件名称信息。
根据本公开的实施例,获取模块可以包括:第一获取子模块和删除子模块。第一获取子模块,用于通过执行第一命令,获取在历史时段内已安装的应用程序集合信息。删除子模块,用于从应用程序集合信息中删除预定字段,得到第二软件包名信息。
根据本公开的实施例,获取模块可以包括:第二获取子模块和遍历子模块。第二获取子模块,用于从与应用框架层的系统文件对应的源代码文件中获取应用程序标识。遍历子模块,用于遍历应用程序标识,得到第二软件包名信息。
根据本公开的实施例,遍历子模块可以包括:第一遍历单元、第二遍历单元和获得单元。第一遍历单元,用于针对第一预定应用程序标识区间,通过遍历与第一预定应用标识区间内的应用标识,得到与系统应用对应的软件包名信息。第二遍历单元,用于针对第二预定应用程序标识区间,通过遍历与第二预定应用标识区间内的应用标识,得到与第三方应用对应的软件包名信息。获得单元,用于根据与系统应用对应的软件包名信息和与第三方应用对应的软件包名信息,得到第二软件包名信息。
根据本公开的实施例,上述装置还包括:第一获得模块和第二获得模块。第一获得模块,用于通过执行第二命令,得到在历史时段内已运行的应用程序的进程标识。第二获得模块,用于根据进程标识,从系统内核层读取引导加载程序运行系统内核时的参数,得到第一软件包名信息。
根据本公开的实施例,第一获得模块可以包括:执行子模块,用于通过执行第二命令,得到系统内核运行状态下的系统文件的名称信息。解析子模块,用于解析系统文件的名称信息,得到与预定字段类型匹配的目标系统文件的名称信息。从目标系统文件的名称信息中提取进程标识。
根据本公开的实施例,处理模块可以包括:对比子模块、删除子模块和第二确定子模块。对比子模块,用于对比第一软件包名信息与第二软件包名信息,得到重复的软件包名信息。删除子模块,用于从第二软件包名信息中删除重复的软件包名信息,得到第三软件包名信息。第二确定子模块,用于将第一软件包名信息和第三软件包名信息确定为目标软件包名信息。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
根据本公开的实施例,一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上所述的方法。
根据本公开的实施例,一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行如上所述的方法。
根据本公开的实施例,一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现如上所述的方法。
图8示出了可以用来实施本公开的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如软件包名的获取方法。例如,在一些实施例中,软件包名的获取方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的软件包名的获取方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行软件包名的获取方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以是分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
Claims (21)
1.一种软件包名的获取方法,包括:
从系统内核层读取引导加载程序运行系统内核时的参数,得到第一软件包名信息,其中,所述第一软件包名信息表征在历史时段内已运行的应用程序的软件包的名称信息;
从应用框架层获取第二软件包名信息,其中,所述第二软件包名信息表征在所述历史时段内已安装的应用程序的软件包的名称信息;以及
对所述第一软件包名信息和所述第二软件包名信息进行处理,得到目标软件包名信息。
2.根据权利要求1所述的方法,其中,所述从应用框架层获取第二软件包名信息,包括:
从应用框架层读取私有数据目录下的文件名称信息,其中,所述私有数据目录包括系统私有数据目录和外部存储硬件的私有数据目录;
基于预定的软件包名的命名规则,从所述文件名称信息中确定目标文件名称信息;以及
从所述文件名称信息中提取软件包名字段,得到所述第二软件包名信息。
3.根据权利要求2所述的方法,其中,所述基于预定的软件包名的命名规则,从所述文件名称信息中确定目标文件名称信息,包括:
基于预定正则表达式,对所述文件名称信息进行校验,得到校验结果,其中,所述预定正则表达式是根据所述命名规则构建得到的;以及
基于所述校验结果,从所述文件名称信息中确定目标文件名称信息。
4.根据权利要求1或2所述的方法,其中,所述从应用框架层获取第二软件包名信息,包括:
通过执行第一命令,获取在所述历史时段内已安装的应用程序集合信息;以及
从所述应用程序集合信息中删除预定字段,得到所述第二软件包名信息。
5.根据权利要求1所述的方法,其中,所述从应用框架层获取第二软件包名信息,包括:
从与应用框架层的系统文件对应的源代码文件中获取应用程序标识;以及
遍历所述应用程序标识,得到所述第二软件包名信息。
6.根据权利要求5所述的方法,其中,所述遍历所述应用程序标识,得到所述第二软件包名信息,包括:
针对第一预定应用程序标识区间,通过遍历与所述第一预定应用标识区间内的应用标识,得到与系统应用对应的软件包名信息;
针对第二预定应用程序标识区间,通过遍历与所述第二预定应用标识区间内的应用标识,得到与第三方应用对应的软件包名信息;以及
根据所述与系统应用对应的软件包名信息和所述与第三方应用对应的软件包名信息,得到所述第二软件包名信息。
7.根据权利要求1所述的方法,还包括:
通过执行第二命令,得到在所述历史时段内已运行的应用程序的进程标识;以及
根据所述进程标识,从系统内核层读取引导加载程序运行系统内核时的参数,得到第一软件包名信息。
8.根据权利要求7所述的方法,其中,所述通过执行第二命令,得到在所述历史时段内已运行的应用程序的进程标识,包括:
通过执行所述第二命令,得到系统内核运行状态下的系统文件的名称信息;
解析所述系统文件的名称信息,得到与预定字段类型匹配的目标系统文件的名称信息;以及
从所述目标系统文件的名称信息中提取所述进程标识。
9.根据权利要求1所述的方法,其中,所述对所述第一软件包名信息和所述第二软件包名信息进行去重处理,得到目标软件包名信息,包括:
对比所述第一软件包名信息与所述第二软件包名信息,得到重复的软件包名信息;
从所述第二软件包名信息中删除所述重复的软件包名信息,得到第三软件包名信息;以及
将所述第一软件包名信息和所述第三软件包名信息确定为所述目标软件包名信息。
10.一种软件包名的获取装置,包括:
读取模块,用于从系统内核层读取引导加载程序运行系统内核时的参数,得到第一软件包名信息,其中,所述第一软件包名信息表征在历史时段内已运行的应用程序的软件包的名称信息;
获取模块,用于从应用框架层获取第二软件包名信息,其中,所述第二软件包名信息表征在所述历史时段内已安装的应用程序的软件包的名称信息;以及
处理模块,用于对所述第一软件包名信息和所述第二软件包名信息进行处理,得到目标软件包名信息。
11.根据权利要求10所述的装置,其中,所述获取模块,包括:
读取子模块,用于从应用框架层读取私有数据目录下的文件名称信息,其中,所述私有数据目录包括系统私有数据目录和外部存储硬件的私有数据目录;
第一确定子模块,用于基于预定的软件包名的命名规则,从所述文件名称信息中确定目标文件名称信息;以及
提取子模块,用于从所述文件名称信息中提取软件包名字段,得到所述第二软件包名信息。
12.根据权利要求11所述的装置,其中,所述第一确定子模块,包括:
校验单元,用于基于预定正则表达式,对所述文件名称信息进行校验,得到校验结果,其中,所述预定正则表达式是根据所述命名规则构建得到的;以及
确定单元,用于基于所述校验结果,从所述文件名称信息中确定目标文件名称信息。
13.根据权利要求10或11所述的装置,其中,所述获取模块,包括:
第一获取子模块,用于通过执行第一命令,获取在所述历史时段内已安装的应用程序集合信息;以及
删除子模块,用于从所述应用程序集合信息中删除预定字段,得到所述第二软件包名信息。
14.根据权利要求10所述的装置,其中,所述获取模块,包括:
第二获取子模块,用于从与应用框架层的系统文件对应的源代码文件中获取应用程序标识;以及
遍历子模块,用于遍历所述应用程序标识,得到所述第二软件包名信息。
15.根据权利要求14所述的装置,其中,所述遍历子模块,包括:
第一遍历单元,用于针对第一预定应用程序标识区间,通过遍历与所述第一预定应用标识区间内的应用标识,得到与系统应用对应的软件包名信息;
第二遍历单元,用于针对第二预定应用程序标识区间,通过遍历与所述第二预定应用标识区间内的应用标识,得到与第三方应用对应的软件包名信息;以及
获得单元,用于根据所述与系统应用对应的软件包名信息和所述与第三方应用对应的软件包名信息,得到所述第二软件包名信息。
16.根据权利要求10所述的装置,还包括:
第一获得模块,用于通过执行第二命令,得到在所述历史时段内已运行的应用程序的进程标识;以及
第二获得模块,用于根据所述进程标识,从系统内核层读取引导加载程序运行系统内核时的参数,得到第一软件包名信息。
17.根据权利要求16所述的装置,其中,所述第一获得模块,包括:
执行子模块,用于通过执行所述第二命令,得到系统内核运行状态下的系统文件的名称信息;
解析子模块,用于解析所述系统文件的名称信息,得到与预定字段类型匹配的目标系统文件的名称信息;以及
从所述目标系统文件的名称信息中提取所述进程标识。
18.根据权利要求10所述的装置,其中,所述处理模块,包括:
对比子模块,用于对比所述第一软件包名信息与所述第二软件包名信息,得到重复的软件包名信息;
删除子模块,用于从所述第二软件包名信息中删除所述重复的软件包名信息,得到第三软件包名信息;以及
第二确定子模块,用于将所述第一软件包名信息和所述第三软件包名信息确定为所述目标软件包名信息。
19.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-9中任一项所述的方法。
20.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-9中任一项所述的方法。
21.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311238583.7A CN117235725A (zh) | 2023-09-25 | 2023-09-25 | 软件包名的获取方法、装置、电子设备以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311238583.7A CN117235725A (zh) | 2023-09-25 | 2023-09-25 | 软件包名的获取方法、装置、电子设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117235725A true CN117235725A (zh) | 2023-12-15 |
Family
ID=89089194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311238583.7A Pending CN117235725A (zh) | 2023-09-25 | 2023-09-25 | 软件包名的获取方法、装置、电子设备以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117235725A (zh) |
-
2023
- 2023-09-25 CN CN202311238583.7A patent/CN117235725A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11762979B2 (en) | Management of login information affected by a data breach | |
CN107506256B (zh) | 一种崩溃数据监控的方法和装置 | |
JP2016224900A (ja) | 悪性コード検出方法及びシステム | |
CN113127050B (zh) | 一种应用资源打包过程监控方法、装置、设备和介质 | |
CN114389969A (zh) | 客户端的测试方法、装置、电子设备和存储介质 | |
US11196766B2 (en) | Detecting denial of service attacks in serverless computing | |
US8769404B2 (en) | Rule-based locale definition generation for a new or customized locale support | |
CN114205156A (zh) | 面向切面技术的报文检测方法、装置、电子设备及介质 | |
CN107657155B (zh) | 用于鉴定用户操作权限的方法和装置 | |
CN112835639A (zh) | 一种Hook实现方法、装置、设备、介质及产品 | |
CN117235725A (zh) | 软件包名的获取方法、装置、电子设备以及存储介质 | |
CN114329164A (zh) | 用于处理数据的方法、装置、设备、介质和产品 | |
CN113297087A (zh) | 测试方法和装置 | |
CN112948831A (zh) | 应用程序风险识别的方法和装置 | |
CN112965747B (zh) | 挖掘代码漏洞的方法、装置、设备和计算机可读介质 | |
CN112947846B (zh) | 对象存储系统的批处理任务执行方法、装置及电子设备 | |
CN117195204B (zh) | 异常数据检测方法、装置、电子设备及计算机可读介质 | |
CN117852043A (zh) | 异常设备的确定方法、装置、电子设备以及存储介质 | |
CN112948830B (zh) | 文件风险识别的方法和装置 | |
US11843523B1 (en) | Microservices anti-pattern discovery | |
CN116055202A (zh) | 风险设备的识别方法、装置、设备以及存储介质 | |
CN114924890A (zh) | 小程序的调用方法、检测方法、装置及系统 | |
CN114090073A (zh) | 接口信息提取方法、装置、电子设备及存储介质 | |
CN116701220A (zh) | 数据同步测试方法、装置、电子设备及计算机可读介质 | |
CN114721787A (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 |