技术栈的检测方法和装置、处理器及电子设备与流程

未命名 09-15 阅读:76 评论:0


1.本技术涉及人工智能领域,具体而言,涉及一种技术栈的检测方法和装置、处理器及电子设备。


背景技术:

2.现有java应用后端技术栈检测主要依托源代码扫描实现,首先确定需要检测的技术栈,选择代码静态分析工具对代码进行全量扫描,从扫描到的代码特征中提取可能的技术栈。但是,上述方法容易出现如下问题:1)容易误报:如代码库中包含废弃代码,未使用组件等,也容易被识别为技术栈的一部分。2)覆盖度不够:部分技术栈如未集成在代码库内,而是在外部动态引用的,则可能存在扫描不到,覆盖度不够的问题。
3.针对相关技术中现有的技术栈的检测容易出现误报且覆盖度不够,导致进行技术栈的检测时,无法对未用内容进行精确识别以及对应用中包含的技术栈进行全面检测的问题,目前尚未提出有效的解决方案。


技术实现要素:

4.本技术的主要目的在于提供一种技术栈的检测方法和装置、处理器及电子设备,以解决相关技术中现有的技术栈的检测容易出现误报且覆盖度不够,导致进行技术栈的检测时,无法对未用内容进行精确识别以及对应用中包含的技术栈进行全面检测的问题。
5.为了实现上述目的,根据本技术的一个方面,提供了一种技术栈的检测方法。该方法包括:提取应用程序对应的第一数据,其中,所述应用程序在目标虚拟机中处于运行状态,所述第一数据至少包括以下之一:所述应用程序中不同类对应的第一集合、所述应用程序中不同方法对应的第二集合;将所述第一数据与预设关系规则库进行匹配,并根据匹配结果确定所述应用程序包括的多个技术栈对应的清单,其中,所述预设关系规则库中包括:预设技术栈对应的不同类组成的第三集合,以及所述预设技术栈对应的不同方法组成的第四集合。
6.可选的,上述方法还包括:使用目标功能确定运行服务器中处于运行状态的第一虚拟机对应的第一进程编码;接收目标对象发送的第二进程编码,并将所述第一进程编码与所述第二进程编码相同的第一虚拟机确定为目标虚拟机;为所述目标虚拟机附加代理程序,以通过所述代理程序对所述应用程序中包括的类和方法执行遍历操作,其中,所述类为一组方法和属性的抽象定义,方法用于定义在类或对象中的抽象操作。
7.可选的,为所述目标虚拟机附加代理程序,以通过所述代理程序对所述应用程序中包括的类和方法执行遍历操作,包括:在确定所述代理程序已附加到所述目标虚拟机的情况下,激活所述代理程序对应的第一接口,其中,所述第一接口用于连接功能数据库进行功能加载;基于所述第一接口从所述功能数据库中选择具有字节码转换功能的子程序进行加载,以在所述代理程序中生成字节码转换器;通过所述字节码转换器对所述应用程序在运行状态下产生的字节码进行处理;根据处理结果筛选出所述应用程序对应字节数据中包
括的类对应的第一集合,以及所述应用程序对应字节数据中包括的方法对应的第二集合。
8.可选的,将所述第一数据与预设关系规则库进行匹配,并根据匹配结果确定所述应用程序包括的多个技术栈对应的清单,包括:在所述第一数据至少包括类数据的情况下,将所述第一集合与所述第三集合进行第一特征匹配,得到第一匹配结果;在所述第一数据至少包括方法数据的情况下,将所述第二集合与所述第四集合进行第二特征匹配,得到第二匹配结果;根据所述第一匹配结果和/或所述第二匹配结果确定所述应用程序包括的多个技术栈对应的清单。
9.可选的,将所述第一集合与所述第三集合进行第一特征匹配,得到第一匹配结果,包括:将所述第一集合对应的n个第一类与所述第三集合对应的m个第二类进行类特征的匹配,得到n个第一匹配度,其中,m、n为正整数,n小于或等于m;比较所述n个第一匹配度与预设第一阈值的大小;根据比较结果确定至少1个目标第一匹配度,以根据所述至少1个目标第一匹配度生成第一匹配结果,其中,所述目标第一匹配度用于指示大于或等于预设第一阈值的第一匹配度。
10.可选的,将所述第二集合与所述第四集合进行第二特征匹配,得到第二匹配结果,包括:将所述第二集合对应的p个第一方法与所述第四集合对应的q个第二方法进行方法特征的匹配,得到p个第一匹配度,其中,p、q为正整数,p小于或等于q;比较所述p个第二匹配度与预设第二阈值的大小;根据比较结果确定至少1个目标第二匹配度,以根据所述至少1个目标第二匹配度生成第二匹配结果,其中,所述目标第二匹配度用于指示大于或等于预设第二阈值的第二匹配度。
11.可选的,上述方法还包括:在确定出所述应用程序对应的清单的情况下,将所述清单发送至目标对象;接收所述目标对象对所述清单执行的编辑操作;使用所述编辑操作对所述清单进行调整,以生成所述应用程序对应的类和方法与技术栈对应的目标关系规则库。
12.为了实现上述目的,根据本技术的另一方面,提供了一种技术栈的检测装置。该装置包括:提取模块,用于提取应用程序对应的第一数据,其中,所述应用程序在目标虚拟机中处于运行状态,所述第一数据至少包括以下之一:所述应用程序中不同类对应的第一集合、所述应用程序中不同方法对应的第二集合;确定模块,用于将所述第一数据与预设关系规则库进行匹配,并根据匹配结果确定所述应用程序包括的多个技术栈对应的清单,其中,所述预设关系规则库中包括:预设技术栈对应的不同类组成的第三集合,以及所述预设技术栈对应的不同方法组成的第四集合。
13.通过本技术,采用以下步骤:先提取应用程序对应的第一数据,其中,应用程序在目标虚拟机中处于运行状态,第一数据至少包括以下之一:应用程序中不同类对应的第一集合、应用程序中不同方法对应的第二集合;将第一数据与预设关系规则库进行匹配,并根据匹配结果确定应用程序包括的多个技术栈对应的清单,其中,预设关系规则库中包括:预设技术栈对应的不同类组成的第三集合,以及预设技术栈对应的不同方法组成的第四集合,从而解决了相关技术中现有的技术栈的检测容易出现误报且覆盖度不够,导致进行技术栈的检测时,无法对未用内容进行精确识别以及对应用中包含的技术栈进行全面检测的问题。进而达到了高效确定应用中包括的技术栈,提升了检测的精准度以及覆盖面,增强了对于技术栈进行检测处理的效率的效果。
附图说明
14.构成本技术的一部分的附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
15.图1是根据本技术实施例提供的技术栈的检测方法的流程图;
16.图2是本技术实施例的一种可选的技术栈的检测系统的系统架构图;
17.图3是根据本技术实施例的技术栈的检测装置的示意图;
18.图4是根据本技术实施例提供的一种可选的电子设备示意图。
具体实施方式
19.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
20.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
21.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
22.为了便于描述,以下对本技术实施例涉及的部分名词或术语进行说明:
23.1、java虚拟机(java virtual machine,简称jvm)是一种可以运行java字节码的虚拟计算机。java程序代码在编译之后不是直接转换为可执行的机器码,而是被转换为一种称为java字节码的中间形式。当java程序运行时,java虚拟机会加载并解释这些字节码,并将它们转换为具体的机器码来执行。
24.2、jmx(java management extensions,java管理扩展)是一个java平台上的管理和监控技术。它提供了一组api,可以用于管理和监控java应用程序、设备、系统等各种资源。
25.3、jps(java virtual machine process status tool)是jdk提供的一个可以列出正在运行的java虚拟机的进程信息的命令行工具,它可以显示java虚拟机进程的执行主类(main class,main()函数所在的类)名称、本地虚拟机唯一id(lvmid,local virtual machine identifier)等信息。
26.4、java agent是一个在java应用程序运行时加载并执行的代理程序,可以通过java instrumentation api来实现。它可以动态地修改正在运行的java应用程序的字节码,以实现各种监视、调试、性能分析、代码注入等功能。
27.5、java api(java应用程序编程接口)是一组预先编写好的java库或类,程序员可以使用它们来开发java编程语言的软件应用程序。
28.下面结合优选的实施步骤对本发明进行说明,图1是根据本技术实施例提供的技术栈的检测方法的流程图,如图1所示,该方法包括如下步骤:
29.步骤s101,提取应用程序对应的第一数据,其中,所述应用程序在目标虚拟机中处于运行状态,所述第一数据至少包括以下之一:所述应用程序中不同类对应的第一集合、所述应用程序中不同方法对应的第二集合;
30.步骤s102,将所述第一数据与预设关系规则库进行匹配,并根据匹配结果确定所述应用程序包括的多个技术栈对应的清单,其中,所述预设关系规则库中包括:预设技术栈对应的不同类组成的第三集合,以及所述预设技术栈对应的不同方法组成的第四集合。
31.需要说明的是,上述清单中主要用于记录应用程序中当前使用的技术栈对应的标准信息,并划分该技术栈对应的类和方法,其中,类是一个用来定义对象的抽象框架,它包含了一组方法和属性的抽象定义。在类中,可以定义一些方法,并在子类中重写这些方法,以实现子类的特定行为。例如,可以定义一个“猫”类,其中包含了“吠叫”和“跟随”方法,然后定义了一个“小猫”类,它继承了“猫”类,并重写了“吠叫”和“跟随”方法,以适应小猫的特点。
32.可选的,上述方法是一个类或对象所拥有的执行behavior。在java中,方法是定义在类或对象中的抽象操作,它们是用来执行特定任务的。方法用一个名称和一个或多个参数来定义,并且可以返回一个值。例如,可以定义一个“计算平方”方法,它接受一个数字作为参数,并返回该数字的平方。
33.综上,在得到清单之后,相关对象可以通过获取清单快速对应用程序在运行时使用的技术栈进行定位,继而可以帮助相关对象更好的对应用程序执行开发操作,更好地对应用程序进行版本的更新。
34.本技术实施例提供的技术栈的检测方法,先提取应用程序对应的第一数据,其中,应用程序在目标虚拟机中处于运行状态,第一数据至少包括以下之一:应用程序中不同类对应的第一集合、应用程序中不同方法对应的第二集合;将第一数据与预设关系规则库进行匹配,并根据匹配结果确定应用程序包括的多个技术栈对应的清单,其中,预设关系规则库中包括:预设技术栈对应的不同类组成的第三集合,以及预设技术栈对应的不同方法组成的第四集合,从而解决了相关技术中现有的技术栈的检测容易出现误报且覆盖度不够,导致进行技术栈的检测时,无法对未用内容进行精确识别以及对应用中包含的技术栈进行全面检测的问题。进而达到了高效确定应用中包括的技术栈,提升了检测的精准度以及覆盖面,增强了对于技术栈进行检测处理的效率的效果。
35.可选的,执行上述步骤s101之前,还可以执行步骤s100:使用目标功能确定运行服务器中处于运行状态的第一虚拟机对应的第一进程编码;接收目标对象发送的第二进程编码,并将所述第一进程编码与所述第二进程编码相同的第一虚拟机确定为目标虚拟机;为所述目标虚拟机附加代理程序,以通过所述代理程序对所述应用程序中包括的类和方法执行遍历操作,其中,所述类为一组方法和属性的抽象定义,方法用于定义在类或对象中的抽象操作。
36.可以理解的是,在确定应用程序在运行时的使用的技术栈时,为了保证确定的准确性,因此,可以在确定目标对象输入的进程编码的情况下,将该进程编码与jmx或jps等工具(相当于上述目标功能)获取到的处于运行状态的进程编码进行匹配,进而定位出运行应
用程序的目标虚拟机,此外,还可以通过在目标虚拟机中设置包含多个功能接口的代理程序,利用代理程序中的接口调用不同的功能来快速的对应用程序中包括的类和方法执行遍历操作。
37.可选的,为所述目标虚拟机附加代理程序,以通过所述代理程序对所述应用程序中包括的类和方法执行遍历操作,包括以下步骤:
38.步骤一、在确定所述代理程序已附加到所述目标虚拟机的情况下,激活所述代理程序对应的第一接口,其中,所述第一接口用于连接功能数据库进行功能加载;
39.步骤二、基于所述第一接口从所述功能数据库中选择具有字节码转换功能的子程序进行加载,以在所述代理程序中生成字节码转换器;
40.步骤三、通过所述字节码转换器对所述应用程序在运行状态下产生的字节码进行处理;
41.步骤四、根据处理结果筛选出所述应用程序对应字节数据中包括的类对应的第一集合,以及所述应用程序对应字节数据中包括的方法对应的第二集合。
42.例如,在实际应用场景中,上述代理程序为在确定目标虚拟机的情况下,在虚拟机中运行状态的应用程序对应的进程中安装的java agent处理进程,继而可以通过java attach api接口动态连接到目标虚拟机,在动态连接到目标虚拟机后,使用java instrumentation api接口(相当于上述第一接口)加载字节码转换器,创建一个实现了class file transformer类文件转换器接口的类,并在其中实现字节码的转换。然后开始基于字节码使用java reflection api接口遍历应用程序的类和方法,获得应用程序在运行时加载的类与方法的集合。
43.可选的,在上述步骤s102提供的实施例中,通过以下方案来将所述第一数据与预设关系规则库进行匹配,并根据匹配结果确定所述应用程序包括的多个技术栈对应的清单,包括:在所述第一数据至少包括类数据的情况下,将所述第一集合与所述第三集合进行第一特征匹配,得到第一匹配结果;在所述第一数据至少包括方法数据的情况下,将所述第二集合与所述第四集合进行第二特征匹配,得到第二匹配结果;根据所述第一匹配结果和/或所述第二匹配结果确定所述应用程序包括的多个技术栈对应的清单。
44.即在确定第一数据中包括数据的类型的情况下,从预设关系规则库中调用对应类型的数据集合,通过确定数据之间的特征匹配度,来定位第一数据中包括的数据与预设关系规则库中存在的标准数据对应的数据集合的相似性,并在相似之后,通过梳理类、方法、技术栈之间的对应关系,最终得到应用程序的技术栈清单,通过该技术栈清单可以清楚的知晓应用程序在运行时采用的技术栈,提高了整个java应用后端技术栈检测流程的效率。
45.可选的,在本实施例中,可以通过以下方案将所述第一集合与所述第三集合进行第一特征匹配,得到第一匹配结果,具体包括:将所述第一集合对应的n个第一类与所述第三集合对应的m个第二类进行类特征的匹配,得到n个第一匹配度,其中,m、n为正整数;比较所述n个第一匹配度与预设第一阈值的大小;根据比较结果确定至少1个目标第一匹配度,以根据所述至少1个目标第一匹配度生成第一匹配结果,其中,所述目标第一匹配度用于指示大于或等于预设第一阈值的第一匹配度。
46.需要说明的是,上述第一集合中包含的类的类型可以在第二集合中存在对应的匹配项,也可以是不存在于第二集合中的,即应用程序中可能应用了新的类,此时,可以设置
第三阈值,将第一匹配度小于第三阈值的第一类单独提取出来,生成新的类集合;在确定完成清单之后,使用该新的类集合对预设关系规则库进行更新,例如,可以将该类集合添加至预设关系规则库,提示目标对象执行更新操作,在目标对象下发更新指示的情况下,查找可以关联当前类集合中不同类的技术栈,将该技术栈与当前类集合中的类进行信息绑定。
47.可选的,在本实施例中,可以通过以下方案将所述第二集合与所述第四集合进行第二特征匹配,得到第二匹配结果,具体包括:将所述第二集合对应的p个第一方法与所述第四集合对应的q个第二方法进行方法特征的匹配,得到p个第一匹配度,其中,p、q为正整数;比较所述p个第二匹配度与预设第二阈值的大小;根据比较结果确定至少1个目标第二匹配度,以根据所述至少1个目标第二匹配度生成第二匹配结果,其中,所述目标第二匹配度用于指示大于或等于预设第二阈值的第二匹配度。
48.需要说明的是,上述第二集合中包含的方法的类型可以在第四集合中存在对应的匹配项,也可以是不存在于第四集合中的,即应用程序中可能应用了新的方法,此时,可以设置第四阈值,将第一匹配度小于第四阈值的第一方法单独提取出来,生成新的方法集合;在确定完成清单之后,使用该新的方法集合对预设关系规则库进行更新,例如,可以将该方法集合添加至预设关系规则库,提示目标对象执行更新操作,在目标对象下发更新指示的情况下,查找可以关联当前方法集合中不同方法的技术栈,将该技术栈与当前方法集合中的方法进行信息绑定。
49.基于上述步骤,执行完成步骤s102:将所述第一数据与预设关系规则库进行匹配,并根据匹配结果确定所述应用程序包括的多个技术栈对应的清单之后,还可以执行步骤s103具体包括:在确定出所述应用程序对应的清单的情况下,将所述清单发送至目标对象;接收所述目标对象对所述清单执行的编辑操作;使用所述编辑操作对所述清单进行调整,以生成所述应用程序对应的类和方法与技术栈对应的目标关系规则库。
50.例如,在确定应用程序的清单之后,目标对象可以通过下发编辑操作从清单中确定出应用程序的使用频率较高或应用较广的技术栈确定为核心技术栈,为该应用程序生成独有的目标关系规则库,后需在对该应用程序进行更新时,便可以直接查找对应的目标关系规则库,而不需要再对该应用程序进行清单确定,此外,当应用程序应用新的技术栈之后,还可在该目标关系规则库中主动增加新的技术栈对应的类以及方法,从而实现对应用程序中应用技术栈使用的全面跟踪。
51.需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
52.本技术实施例还提供了一种可选的技术栈的检测系统,如图2所示,图2是本技术实施例的一种可选的技术栈的检测系统的系统架构图,其中,该系统具体包括:工具投放模块22,类与方法提取模块24,结果生成模块26。
53.具体的,工具投放模块22:主要负责在待检测java应用进程(相当于上述实施例中的应用程序)安装java agent。首先,通过jmx或jps等工具获取java进程id,使用java attach api动态连接到java虚拟机。
54.可选的,类与方法提取模块24:主要负责获取运行态的类与方法。在动态连接到java虚拟机后,使用java instrumentation api加载字节码转换器,创建一个实现了
classfiletransformer接口的类,并在其中实现字节码的转换。然后开始基于字节码使用java reflection api遍历java应用的类和方法,获得java应用加载类与方法的集合。
55.可选的,结果生成模块26:主要负责对提取到的加载类与方法的集合根据技术栈特征进行匹配,检查是否命中特征,最终生成技术栈清单。在特征库构建中,梳理技术栈与核心开门类或方法对应关系,如检测数据库类型时可以检测对应的jdbc驱动类情况。
56.本技术实施例还提供了一种可选的技术栈的检测方法,应用于如图2所示的系统架构中,具体包括以下步骤:
57.步骤s301:工具投放模块将java agent代理程序投入java进程运行服务器,通过jmx或jps获取java进程id,将agent通过attach方式接入相应java虚拟机。
58.步骤s302:动态连接到java虚拟机后,使用类与方法提取模块遍历java应用的类和方法,获得java应用加载类与方法的集合。
59.步骤s303:提取到的加载类与方法的集合根据技术栈特征进行匹配,检查是否命中特征,最终生成技术栈清单。
60.需要说明的是,本公开所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本系统和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
61.通过上述步骤,提供了一种基于字节码技术的java应用后端技术栈检测工具,通过工具投放模块,类与方法获取模块,结果生成模块,使得用户可以全自动化实现java应用后端技术栈检测,并且自动整理扫描结果,同时工具安装简单,检测方便,检测运行态加载的类和方法,可以很好的避免误报(废弃代码的类和方法不会加载到运行态集合中),增加覆盖率(外部动态引用的类与方法只要在java虚拟机内就可以检测到)很好的解决了现有工具容易误报,覆盖度不够的问题,提高了整个java应用后端技术栈检测流程的效率。
62.本技术实施例还提供了一种技术栈的检测装置,需要说明的是,本技术实施例的技术栈的检测装置可以用于执行本技术实施例所提供的技术栈的检测方法。以下对本技术实施例提供的技术栈的检测装置进行介绍。
63.图3是根据本技术实施例的技术栈的检测装置的示意图。如图3所示,该装置包括:
64.提取模块32,用于提取应用程序对应的第一数据,其中,所述应用程序在目标虚拟机中处于运行状态,所述第一数据至少包括以下之一:所述应用程序中不同类对应的第一集合、所述应用程序中不同方法对应的第二集合;
65.确定模块34,用于将所述第一数据与预设关系规则库进行匹配,并根据匹配结果确定所述应用程序包括的多个技术栈对应的清单,其中,所述预设关系规则库中包括:预设技术栈对应的不同类组成的第三集合,以及所述预设技术栈对应的不同方法组成的第四集合。
66.需要说明的是,上述清单中主要用于记录应用程序中当前使用的技术栈对应的标准信息,并划分该技术栈对应的类和方法,其中,类是一个用来定义对象的抽象框架,它包含了一组方法和属性的抽象定义。在类中,可以定义一些方法,并在子类中重写这些方法,以实现子类的特定行为。例如,可以定义一个“猫”类,其中包含了“吠叫”和“跟随”方法,然
后定义了一个“小猫”类,它继承了“猫”类,并重写了“吠叫”和“跟随”方法,以适应小猫的特点。
67.可选的,上述方法是一个类或对象所拥有的执行behavior。在java中,方法是定义在类或对象中的抽象操作,它们是用来执行特定任务的。方法用一个名称和一个或多个参数来定义,并且可以返回一个值。例如,可以定义一个“计算平方”方法,它接受一个数字作为参数,并返回该数字的平方。
68.综上,在得到清单之后,相关对象可以通过获取清单快速对应用程序在运行时使用的技术栈进行定位,继而可以帮助相关对象更好的对应用程序执行开发操作,更好地对应用程序进行版本的更新。
69.本技术实施例提供的技术栈的检测装置,通过先提取应用程序对应的第一数据,其中,应用程序在目标虚拟机中处于运行状态,第一数据至少包括以下之一:应用程序中不同类对应的第一集合、应用程序中不同方法对应的第二集合;将第一数据与预设关系规则库进行匹配,并根据匹配结果确定应用程序包括的多个技术栈对应的清单,其中,预设关系规则库中包括:预设技术栈对应的不同类组成的第三集合,以及预设技术栈对应的不同方法组成的第四集合,从而解决了相关技术中现有的技术栈的检测容易出现误报且覆盖度不够,导致进行技术栈的检测时,无法对未用内容进行精确识别以及对应用中包含的技术栈进行全面检测的问题。进而达到了高效确定应用中包括的技术栈,提升了检测的精准度以及覆盖面,增强了对于技术栈进行检测处理的效率的效果。
70.需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
71.可选的,上述装置还包括:附加模块30,用于使用目标功能确定运行服务器中处于运行状态的第一虚拟机对应的第一进程编码;接收目标对象发送的第二进程编码,并将所述第一进程编码与所述第二进程编码相同的第一虚拟机确定为目标虚拟机;为所述目标虚拟机附加代理程序,以通过所述代理程序对所述应用程序中包括的类和方法执行遍历操作,其中,所述类为一组方法和属性的抽象定义,方法用于定义在类或对象中的抽象操作。
72.可选的,上述附加模块30,还用于在确定所述代理程序已附加到所述目标虚拟机的情况下,激活所述代理程序对应的第一接口,其中,所述第一接口用于连接功能数据库进行功能加载;基于所述第一接口从所述功能数据库中选择具有字节码转换功能的子程序进行加载,以在所述代理程序中生成字节码转换器;通过所述字节码转换器对所述应用程序在运行状态下产生的字节码进行处理;根据处理结果筛选出所述应用程序对应字节数据中包括的类对应的第一集合,以及所述应用程序对应字节数据中包括的方法对应的第二集合。
73.可选的,上述确定模块34,还用于在所述第一数据至少包括类数据的情况下,将所述第一集合与所述第三集合进行第一特征匹配,得到第一匹配结果;在所述第一数据至少包括方法数据的情况下,将所述第二集合与所述第四集合进行第二特征匹配,得到第二匹配结果;根据所述第一匹配结果和/或所述第二匹配结果确定所述应用程序包括的多个技术栈对应的清单。
74.可选的,上述确定模块34,还用于将所述第一集合对应的n个第一类与所述第三集
合对应的m个第二类进行类特征的匹配,得到n个第一匹配度,其中,m、n为正整数,n小于或等于m;比较所述n个第一匹配度与预设第一阈值的大小;根据比较结果确定至少1个目标第一匹配度,以根据所述至少1个目标第一匹配度生成第一匹配结果,其中,所述目标第一匹配度用于指示大于或等于预设第一阈值的第一匹配度。
75.可选的,上述确定模块34,还用于将所述第二集合对应的p个第一方法与所述第四集合对应的q个第二方法进行方法特征的匹配,得到p个第一匹配度,其中,p、q为正整数,p小于或等于q;比较所述p个第二匹配度与预设第二阈值的大小;根据比较结果确定至少1个目标第二匹配度,以根据所述至少1个目标第二匹配度生成第二匹配结果,其中,所述目标第二匹配度用于指示大于或等于预设第二阈值的第二匹配度。
76.可选的,上述装置还包括:操作模块36,用于在确定出所述应用程序对应的清单的情况下,将所述清单发送至目标对象;接收所述目标对象对所述清单执行的编辑操作;使用所述编辑操作对所述清单进行调整,以生成所述应用程序对应的类和方法与技术栈对应的目标关系规则库。
77.所述技术栈的检测装置包括处理器和存储器,上述提取模块32、确定模块34和操作模块36以及附加模块30等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
78.处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决相关技术中现有的技术栈的检测容易出现误报且覆盖度不够,导致进行技术栈的检测时,无法对未用内容进行精确识别以及对应用中包含的技术栈进行全面检测的问题。
79.存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。
80.本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现所述技术栈的检测方法。
81.本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述技术栈的检测方法。
82.如图4所示,本发明实施例提供了一种电子设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:提取应用程序对应的第一数据,其中,应用程序在目标虚拟机中处于运行状态,第一数据至少包括以下之一:应用程序中不同类对应的第一集合、应用程序中不同方法对应的第二集合;将第一数据与预设关系规则库进行匹配,并根据匹配结果确定应用程序包括的多个技术栈对应的清单,其中,预设关系规则库中包括:预设技术栈对应的不同类组成的第三集合,以及预设技术栈对应的不同方法组成的第四集合。
83.可选的,上述方法还包括:使用目标功能确定运行服务器中处于运行状态的第一虚拟机对应的第一进程编码;接收目标对象发送的第二进程编码,并将所述第一进程编码与所述第二进程编码相同的第一虚拟机确定为目标虚拟机;为所述目标虚拟机附加代理程序,以通过所述代理程序对所述应用程序中包括的类和方法执行遍历操作,其中,所述类为一组方法和属性的抽象定义,方法用于定义在类或对象中的抽象操作。
84.可选的,为所述目标虚拟机附加代理程序,以通过所述代理程序对所述应用程序中包括的类和方法执行遍历操作,包括:在确定所述代理程序已附加到所述目标虚拟机的情况下,激活所述代理程序对应的第一接口,其中,所述第一接口用于连接功能数据库进行功能加载;基于所述第一接口从所述功能数据库中选择具有字节码转换功能的子程序进行加载,以在所述代理程序中生成字节码转换器;通过所述字节码转换器对所述应用程序在运行状态下产生的字节码进行处理;根据处理结果筛选出所述应用程序对应字节数据中包括的类对应的第一集合,以及所述应用程序对应字节数据中包括的方法对应的第二集合。
85.可选的,将所述第一数据与预设关系规则库进行匹配,并根据匹配结果确定所述应用程序包括的多个技术栈对应的清单,包括:在所述第一数据至少包括类数据的情况下,将所述第一集合与所述第三集合进行第一特征匹配,得到第一匹配结果;在所述第一数据至少包括方法数据的情况下,将所述第二集合与所述第四集合进行第二特征匹配,得到第二匹配结果;根据所述第一匹配结果和/或所述第二匹配结果确定所述应用程序包括的多个技术栈对应的清单。
86.可选的,将所述第一集合与所述第三集合进行第一特征匹配,得到第一匹配结果,包括:将所述第一集合对应的n个第一类与所述第三集合对应的m个第二类进行类特征的匹配,得到n个第一匹配度,其中,m、n为正整数,n小于或等于m;比较所述n个第一匹配度与预设第一阈值的大小;根据比较结果确定至少1个目标第一匹配度,以根据所述至少1个目标第一匹配度生成第一匹配结果,其中,所述目标第一匹配度用于指示大于或等于预设第一阈值的第一匹配度。
87.可选的,将所述第二集合与所述第四集合进行第二特征匹配,得到第二匹配结果,包括:将所述第二集合对应的p个第一方法与所述第四集合对应的q个第二方法进行方法特征的匹配,得到p个第一匹配度,其中,p、q为正整数,p小于或等于q;比较所述p个第二匹配度与预设第二阈值的大小;根据比较结果确定至少1个目标第二匹配度,以根据所述至少1个目标第二匹配度生成第二匹配结果,其中,所述目标第二匹配度用于指示大于或等于预设第二阈值的第二匹配度。
88.可选的,上述方法还包括:在确定出所述应用程序对应的清单的情况下,将所述清单发送至目标对象;接收所述目标对象对所述清单执行的编辑操作;使用所述编辑操作对所述清单进行调整,以生成所述应用程序对应的类和方法与技术栈对应的目标关系规则库。
89.本文中的设备可以是服务器、pc、pad、手机等。
90.本技术还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:提取应用程序对应的第一数据,其中,应用程序在目标虚拟机中处于运行状态,第一数据至少包括以下之一:应用程序中不同类对应的第一集合、应用程序中不同方法对应的第二集合;将第一数据与预设关系规则库进行匹配,并根据匹配结果确定应用程序包括的多个技术栈对应的清单,其中,预设关系规则库中包括:预设技术栈对应的不同类组成的第三集合,以及预设技术栈对应的不同方法组成的第四集合。
91.可选的,上述方法还包括:使用目标功能确定运行服务器中处于运行状态的第一虚拟机对应的第一进程编码;接收目标对象发送的第二进程编码,并将所述第一进程编码与所述第二进程编码相同的第一虚拟机确定为目标虚拟机;为所述目标虚拟机附加代理程
序,以通过所述代理程序对所述应用程序中包括的类和方法执行遍历操作,其中,所述类为一组方法和属性的抽象定义,方法用于定义在类或对象中的抽象操作。
92.可选的,为所述目标虚拟机附加代理程序,以通过所述代理程序对所述应用程序中包括的类和方法执行遍历操作,包括:在确定所述代理程序已附加到所述目标虚拟机的情况下,激活所述代理程序对应的第一接口,其中,所述第一接口用于连接功能数据库进行功能加载;基于所述第一接口从所述功能数据库中选择具有字节码转换功能的子程序进行加载,以在所述代理程序中生成字节码转换器;通过所述字节码转换器对所述应用程序在运行状态下产生的字节码进行处理;根据处理结果筛选出所述应用程序对应字节数据中包括的类对应的第一集合,以及所述应用程序对应字节数据中包括的方法对应的第二集合。
93.可选的,将所述第一数据与预设关系规则库进行匹配,并根据匹配结果确定所述应用程序包括的多个技术栈对应的清单,包括:在所述第一数据至少包括类数据的情况下,将所述第一集合与所述第三集合进行第一特征匹配,得到第一匹配结果;在所述第一数据至少包括方法数据的情况下,将所述第二集合与所述第四集合进行第二特征匹配,得到第二匹配结果;根据所述第一匹配结果和/或所述第二匹配结果确定所述应用程序包括的多个技术栈对应的清单。
94.可选的,将所述第一集合与所述第三集合进行第一特征匹配,得到第一匹配结果,包括:将所述第一集合对应的n个第一类与所述第三集合对应的m个第二类进行类特征的匹配,得到n个第一匹配度,其中,m、n为正整数,n小于或等于m;比较所述n个第一匹配度与预设第一阈值的大小;根据比较结果确定至少1个目标第一匹配度,以根据所述至少1个目标第一匹配度生成第一匹配结果,其中,所述目标第一匹配度用于指示大于或等于预设第一阈值的第一匹配度。
95.可选的,将所述第二集合与所述第四集合进行第二特征匹配,得到第二匹配结果,包括:将所述第二集合对应的p个第一方法与所述第四集合对应的q个第二方法进行方法特征的匹配,得到p个第一匹配度,其中,p、q为正整数,p小于或等于q;比较所述p个第二匹配度与预设第二阈值的大小;根据比较结果确定至少1个目标第二匹配度,以根据所述至少1个目标第二匹配度生成第二匹配结果,其中,所述目标第二匹配度用于指示大于或等于预设第二阈值的第二匹配度。
96.可选的,上述方法还包括:在确定出所述应用程序对应的清单的情况下,将所述清单发送至目标对象;接收所述目标对象对所述清单执行的编辑操作;使用所述编辑操作对所述清单进行调整,以生成所述应用程序对应的类和方法与技术栈对应的目标关系规则库。
97.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
98.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序
指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
99.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
100.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
101.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
102.存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
103.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
104.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
105.本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
106.以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。

技术特征:
1.一种技术栈的检测方法,其特征在于,包括:提取应用程序对应的第一数据,其中,所述应用程序在目标虚拟机中处于运行状态,所述第一数据至少包括以下之一:所述应用程序中不同类对应的第一集合、所述应用程序中不同方法对应的第二集合;将所述第一数据与预设关系规则库进行匹配,并根据匹配结果确定所述应用程序包括的多个技术栈对应的清单,其中,所述预设关系规则库中包括:预设技术栈对应的不同类组成的第三集合,以及所述预设技术栈对应的不同方法组成的第四集合。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:使用目标功能确定运行服务器中处于运行状态的第一虚拟机对应的第一进程编码;接收目标对象发送的第二进程编码,并将所述第一进程编码与所述第二进程编码相同的第一虚拟机确定为目标虚拟机;为所述目标虚拟机附加代理程序,以通过所述代理程序对所述应用程序中包括的类和方法执行遍历操作,其中,所述类为一组方法和属性的抽象定义,所述方法用于定义在类或对象中的抽象操作。3.根据权利要求2所述的方法,其特征在于,为所述目标虚拟机附加代理程序,以通过所述代理程序对所述应用程序中包括的类和方法执行遍历操作,包括:在确定所述代理程序已附加到所述目标虚拟机的情况下,激活所述代理程序对应的第一接口,其中,所述第一接口用于连接功能数据库进行功能加载;基于所述第一接口从所述功能数据库中选择具有字节码转换功能的子程序进行加载,以在所述代理程序中生成字节码转换器;通过所述字节码转换器对所述应用程序在运行状态下产生的字节码进行处理;根据处理结果筛选出所述应用程序对应字节数据中包括的类对应的第一集合,以及所述应用程序对应字节数据中包括的方法对应的第二集合。4.根据权利要求1所述的方法,其特征在于,将所述第一数据与预设关系规则库进行匹配,并根据匹配结果确定所述应用程序包括的多个技术栈对应的清单,包括:在所述第一数据至少包括类数据的情况下,将所述第一集合与所述第三集合进行第一特征匹配,得到第一匹配结果;在所述第一数据至少包括方法数据的情况下,将所述第二集合与所述第四集合进行第二特征匹配,得到第二匹配结果;根据所述第一匹配结果和/或所述第二匹配结果确定所述应用程序包括的多个技术栈对应的清单。5.根据权利要求4所述的方法,其特征在于,将所述第一集合与所述第三集合进行第一特征匹配,得到第一匹配结果,包括:将所述第一集合对应的n个第一类与所述第三集合对应的m个第二类进行类特征的匹配,得到n个第一匹配度,其中,m、n为正整数;比较所述n个第一匹配度与预设第一阈值的大小;根据比较结果确定至少1个目标第一匹配度,以根据所述至少1个目标第一匹配度生成第一匹配结果,其中,所述目标第一匹配度用于指示大于或等于预设第一阈值的第一匹配度。
6.根据权利要求4所述的方法,其特征在于,将所述第二集合与所述第四集合进行第二特征匹配,得到第二匹配结果,包括:将所述第二集合对应的p个第一方法与所述第四集合对应的q个第二方法进行方法特征的匹配,得到p个第一匹配度,其中,p、q为正整数;比较所述p个第二匹配度与预设第二阈值的大小;根据比较结果确定至少1个目标第二匹配度,以根据所述至少1个目标第二匹配度生成第二匹配结果,其中,所述目标第二匹配度用于指示大于或等于预设第二阈值的第二匹配度。7.根据权利要求1所述的方法,其特征在于,所述方法还包括:在确定出所述应用程序对应的清单的情况下,将所述清单发送至目标对象;接收所述目标对象对所述清单执行的编辑操作;使用所述编辑操作对所述清单进行调整,以生成所述应用程序对应的类和方法与技术栈对应的目标关系规则库。8.一种技术栈的检测装置,其特征在于,包括:提取模块,用于提取应用程序对应的第一数据,其中,所述应用程序在目标虚拟机中处于运行状态,所述第一数据至少包括以下之一:所述应用程序中不同类对应的第一集合、所述应用程序中不同方法对应的第二集合;确定模块,用于将所述第一数据与预设关系规则库进行匹配,并根据匹配结果确定所述应用程序包括的多个技术栈对应的清单,其中,所述预设关系规则库中包括:预设技术栈对应的不同类组成的第三集合,以及所述预设技术栈对应的不同方法组成的第四集合。9.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至7中任意一项所述的技术栈的检测方法。10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的技术栈的检测方法。

技术总结
本申请公开了一种技术栈的检测方法和装置、处理器及电子设备。涉及人工智能领域,该方法包括:提取应用程序对应的第一数据,其中,应用程序在目标虚拟机中处于运行状态,第一数据至少包括以下之一:应用程序中不同类对应的第一集合、应用程序中不同方法对应的第二集合;将第一数据与预设关系规则库进行匹配,并根据匹配结果确定应用程序包括的多个技术栈对应的清单,其中,预设关系规则库中包括:预设技术栈对应的不同类组成的第三集合,以及预设技术栈对应的不同方法组成的第四集合;通过本申请,解决了相关技术中现有的技术栈的检测容易出现误报且覆盖度不够,无法对未用内容进行精确识别以及对应用中包含的技术栈进行全面检测的问题。测的问题。测的问题。


技术研发人员:李麦琪 谢林洁 勾志营 江皓臻
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:2023.06.19
技术公布日:2023/9/13
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐