CN114065197A - 调用序列生成方法、装置、电子设备、存储介质及产品 - Google Patents
调用序列生成方法、装置、电子设备、存储介质及产品 Download PDFInfo
- Publication number
- CN114065197A CN114065197A CN202111165509.8A CN202111165509A CN114065197A CN 114065197 A CN114065197 A CN 114065197A CN 202111165509 A CN202111165509 A CN 202111165509A CN 114065197 A CN114065197 A CN 114065197A
- Authority
- CN
- China
- Prior art keywords
- calling
- methods
- sequence
- target program
- call
- 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
- G06F21/563—Static detection by source code analysis
-
- 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
技术领域
本发明涉及安全防护技术领域,尤其涉及调用序列生成方法、装置、电子设备、存储介质及产品。
背景技术
随着移动互联网的快速发展,人们对应用程序的安全防护的要求越来越高。现有的智能终端设备在日常生活中的应用越来越广泛,同时也存在很大的信息安全隐患。
目前,一般是根据生成的调用序列来构建用于安全防护的白名单。但现有技术中往往需要程序运行起来以后,根据程序内部输出的堆栈信息来得到程序的调用序列。这种处理方式往往针对调用序列白规则防护的应用场景中,且运行起来后输出的堆栈信息可能已经包含攻击的调用序列,如内存马,导致构建的白名单不可信,存在安全隐患。
发明内容
本发明提供一种调用序列生成方法、装置、电子设备、存储介质及产品,用以解决现有技术中需要目标程序运行时才能获取调用序列,且运行中可能含有攻击的调用序列存在安全隐患的技术问题,以实现静态获取调用序列,提高安全防护的可靠性的目的。
第一方面,本发明提供一种调用序列生成方法,包括:
获取目标程序的字节码文件;
对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息;
根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合;其中,目标程序的任意一条调用序列是以所述目标程序中的一个方法作为开始节点,以原生方法或再次被调用的方法或不再调用其他方法的方法作为结束节点的节点序列,且所述调用序列中的前一节点所对应的方法调用所述调用序列中的后一节点所对应的方法。
进一步,根据本发明提供的调用序列生成方法,所述对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,包括:
对标准方法调用指令进行过滤,得到第一方法内调用其他方法的指针;其中,所述第一方法为第一类所包含方法中的任意一个;
根据所述指针在字节码文件常量池中寻找调用方法的定义,得到所述第一方法对其他方法的调用关系信息。
进一步,根据本发明提供的调用序列生成方法,所述根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合,包括:
以第一类中的任意一个方法作为调用序列的开始节点,根据所述方法与其他方法之间的调用关系信息,依次确定调用序列的下一个节点,直至当前节点所对应的方法为原生方法或再次被调用的方法或不再调用其他方法的方法,结束调用序列的生成过程,得到所述第一类中的一个调用序列;其中,所述第一类为所述目标程序中的任意一个类;
对第一类所包含的所有方法进行遍历,得到所述第一类的调用序列集合;
根据所述目标程序中的各个类分别得到的调用序列集合,生成所述目标程序的调用序列集合。
进一步,根据本发明提供的调用序列生成方法,所述以第一类中的任意一个方法作为调用序列的开始节点,根据所述方法与其他方法之间的调用关系信息,依次确定调用序列的下一个节点,直至当前节点所对应的方法为原生方法或再次被调用的方法或不再调用其他方法的方法,结束调用序列的生成过程,得到所述第一类中的一个调用序列,包括:
将第二方法作为当前方法;其中,所述第二方法为第一类所包含方法中的任意一个;
判断当前方法是否调用其他方法、是否是原生方法以及是否是再次被调用的方法;
在当前方法不是原生方法、且当前方法不是再次被调用的方法、且当前方法调用其他方法的情况下,记录当前方法与当前方法所调用的方法之间的调用关系信息,然后将当前方法所调用的方法作为当前方法,重新执行判断当前方法是否调用其他方法、是否是原生方法以及是否是再次被调用的方法的步骤;
在当前方法是原生方法、或当前方法是再次被调用的方法、或当前方法不再调用其他方法的情况下,根据所记录的当前方法与当前方法所调用的方法之间的调用关系信息,得到以所述第一方法为开始节点、以所述原生方法或再次被调用的方法或不再调用其他方法的方法为结束节点的调用序列。
进一步,根据本发明提供的调用序列生成方法,所述根据所述目标程序中的各个类分别得到的调用序列集合,生成所述目标程序的调用序列集合,包括:
判断第一调用序列是否为其他调用序列的子集;其中,所述第一调用序列是所述目标程序中的各个类分别得到的调用序列集合中的任意一个调用序列;
在所述第一调用序列是其他调用序列的子集的情况下,合并所述第一调用序列。
进一步,根据本发明提供的调用序列生成方法,所述生成目标程序的调用序列之后,方法还包括:
根据所述目标程序的调用序列构建白名单规则。
第二方面,本发明提供一种调用序列生成装置,包括:
获取模块,用于获取目标程序的字节码文件;
解析模块,用于对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息;
生成模块,用于根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合;其中,目标程序的任意一条调用序列是以所述目标程序中的一个方法作为开始节点,以原生方法或再次被调用的方法或不再调用其他方法的方法作为结束节点的节点序列,且所述调用序列中的前一节点所对应的方法调用所述调用序列中的后一节点所对应的方法。
第三方面,本发明还提供一种电子设备,包括:
处理器、存储器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如上任一项中所述调用序列生成方法的步骤。
第四方面,本发明还提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上所述调用序列生成方法的步骤。
第五方面,本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上任一项所述调用序列生成方法的步骤。
本发明提供一种调用序列生成方法、装置、电子设备、存储介质及产品,所述方法包括:获取目标程序的字节码文件;对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息;根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合。本发明能够在不运行目标程序的情况下生成调用序列,为后续根据调用序列构建可信的白名单提供了基础,有助于提高安全防护的可靠性。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种调用序列生成方法的流程示意图;
图2是本发明提供的一种调用序列生成装置的结构示意图;
图3是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的调用序列生成方法的流程示意图,如图1所示,本发明提供的调用序列生成方法,包括以下步骤:
步骤101:获取目标程序的字节码文件;
步骤102:对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息;
步骤103:根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合;其中,目标程序的任意一条调用序列是以所述目标程序中的一个方法作为开始节点,以原生方法或再次被调用的方法或不再调用其他方法的方法作为结束节点的节点序列,且所述调用序列中的前一节点所对应的方法调用所述调用序列中的后一节点所对应的方法。
具体地,字节码(Byte-code)是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,是一种中间码。
其中,目标程序,又称为“目的程序”,为源程序经编译可直接被计算机运行的机器码集合。
在步骤101中,目标程序是要为其生成字节码文件的程序,在本发明实施例中目标程序是指Java程序,得到的是Java程序的字节码文件,该字节码文件是通过Java程序编译后的字节码文件。需要说明的是,在本发明实施例中目标程序是指Java程序,在其他实施例中,目标程序可以是其他类型的程序,在此不作具体限定。
在步骤102中,利用字节码解析工具对目标程序的字节码文件进行解析处理,得到目标程序的各个类名、父类名、接口信息,各个类中的方法及方法与其他方法之间的调用关系信息,其中,方法与其他方法之间的调用关系信息可以包含该方法与其他类的方法之间的调用关系,也可以包含该方法与同一类中其他方法的调用关系。例如,类A中包含方法a,类B中包含方法b和方法c。通过解析可以知道,方法a调用方法b,该调用关系即为方法与其他类的方法之间的调用关系;方法b调用方法c,则该调用关系为方法与同一类中其他方法的调用关系。
在步骤103中,根据目标程序中包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合。调用序列集合中包含了多个调用序列,如一个目标程序中包含多个类,一个类中可能包含多个调用序列,最终根据调用关系信息得到的目标程序的调用序列集合中包含多个调用序列。
需要说明的是,任意一条调用序列以目标程序中的一个方法作为开始节点,以原生方法或再次被调用的方法或不再调用其他方法的方法作为结束节点。
例如,将类A中包含的方法a作为开始节点,方法a中包含了调用类B中的方法b,且方法b中调用方法c,方法c中调用方法a,方法a中调用类B中的方法b,当发现出现上述的循环调用链时,则将再次被调用的方法a作为结束节点,确定出一个调用序列。
又如,将类E中包含的方法e作为开始节点,方法e调用了类F中的方法f,且方法f调用方法g,当检测到方法g为原生方法时,则将方法g作为结束节点,从而得到一个调用序列。需要说明的是,原生方法是指直接调用其他语言代码的接口。
对于不再调用其他方法的方法作为调用序列结束节点的情况,在此不作举例说明。
本发明实施例中,获取目标程序的字节码文件;对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息;根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合。本发明能够在不运行目标程序的情况下生成调用序列,为后续根据调用序列构建可信的白名单提供了基础,有助于提高安全防护的可靠性。
在本发明的一个实施例中,所述对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,包括:
对标准方法调用指令进行过滤,得到第一方法内调用其他方法的指针;其中,所述第一方法为第一类所包含方法中的任意一个;
根据所述指针在字节码文件常量池中寻找调用方法的定义,得到所述第一方法对其他方法的调用关系信息。
具体地,调用指令是指调用方法时的指令,格式为操作码和目的地址,当需要调用其他方法时,则发送调用指令。
其中,指针是指内存地址,指针变量是用来存放内存地址的变量,不同类型的指针变量所占用的存储单元长度是相同的,而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同,也就是说不同的调用方法所对应的指针是不同的。
在本发明实施例中,对获取的Java标准方法调用指令进行过滤处理,得到该系统中的第一类的其中任意一个方法调用其他方法的指针,然后根据指针在字节码文件的常量池中确定出第一方法的调用方法的定义,得到第一方法对其他方法的调用关系信息,同样,根据上述的操作步骤可以确定出系统中各个类中的方法对其他方法的调用关系信息。需要说明的是,在本实施例中,字节码的常量池是指class文件的资源仓库,包含了Java类中定义的方法,Java类中定义的很多信息都是由常量池来维护和描述的。
本发明实施例中,通过对标准方法调用指令进行过滤处理,得到第一方法调用其他方法的指针,根据指针在字节码文件的常量池中寻找到调用方法的定义,得到第一方法对其他方法的调用关系信息。本发明中应用字节码文件的常量池能够迅速确定出第一方法对其他方法的调用关系信息,操作简单方便,提高处理速度。
在本发明的另一个实施例中,所述根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合,包括:
以第一类中的任意一个方法作为调用序列的开始节点,根据所述方法与其他方法之间的调用关系信息,依次确定调用序列的下一个节点,直至当前节点所对应的方法为原生方法或再次被调用的方法或不再调用其他方法的方法,结束调用序列的生成过程,得到所述第一类中的一个调用序列;其中,所述第一类为所述目标程序中的任意一个类;
对第一类所包含的所有方法进行遍历,得到所述第一类的调用序列集合;
根据所述目标程序中的各个类分别得到的调用序列集合,生成所述目标程序的调用序列集合。
具体地,调用序列集合中包含了多个调用序列。
在本发明实施例中,若以第一类中的任意一个方法作为调用序列的开始节点时,根据上述解析的该方法与其他方法之间的调用关系信息,依次遍历确定下一个节点的方法,直到当前节点的对应的方法不再调用其他方法时,则将当前节点对应的方法作为结束节点,结束调用序列的生成过程,得到第一类中的一个调用序列。如第一类的类名为B,B中包含的方法b作为开始节点,方法b中包含了调用类A中的方法a,且方法a中调用方法c,当遍历到方法c时,遍历到方法c没有调用任何方法,结束调用序列的生成,得到第一类中的一个调用序列为:(B)b-(A)a-c。同样可以根据上述方法可以得的第一类中的其他调用序列,需要说明的是,结束节点对应的方法可以是原生方法或再次被调用的方法或不再调用其他方法的方法,可以根据实际需要进行设定,在此不作具体限定。
本发明实施例中,通过将第一类中的任意一个方法作为开始节点,并根据该方法与其他方法的调用关系信息依次确定下一个节点的方法,直到遍历到原生方法或再次被调用的方法或不再调用其他方法的方法时,结束调用序列的生成,得到第一类的一个调用序列,对目标程序中的各个类依次进行,得到目标程序的调用序列集合。本发明根据调用关系信息进行遍历,提高调用序列生成的准确性。
在本发明的一个实施例中,所述以第一类中的任意一个方法作为调用序列的开始节点,根据所述方法与其他方法之间的调用关系信息,依次确定调用序列的下一个节点,直至当前节点所对应的方法为原生方法或再次被调用的方法或不再调用其他方法的方法,结束调用序列的生成过程,得到所述第一类中的一个调用序列,包括:
将第二方法作为当前方法;其中,所述第二方法为第一类所包含方法中的任意一个;
判断当前方法是否调用其他方法、是否是原生方法以及是否是再次被调用的方法;
在当前方法不是原生方法、且当前方法不是再次被调用的方法、且当前方法调用其他方法的情况下,记录当前方法与当前方法所调用的方法之间的调用关系信息,然后将当前方法所调用的方法作为当前方法,重新执行判断当前方法是否调用其他方法、是否是原生方法以及是否是再次被调用的方法的步骤;
在当前方法是原生方法、或当前方法是再次被调用的方法、或当前方法不再调用其他方法的情况下,根据所记录的当前方法与当前方法所调用的方法之间的调用关系信息,得到以所述第一方法为开始节点、以所述原生方法或再次被调用的方法或不再调用其他方法的方法为结束节点的调用序列。
具体地,第二方法属于第一类所包含方法中的任意一个。
在本发明实施例中,调用序列的结束节点的确定方式主要分为:当前方法为原生方法,或当前方法为再次被调用的方法,或当前方法为不再调用其他方法的方法,当判断当前方法为其中任意一种情况时,则结束调用序列生成动作,得到一条调用序列;若当前方法既不是原生方法,又不是再次被调用的方法,也不是不再调用其他方法的方法,则继续遍历下一个节点的方法,直到满足上述三种情况中的任意一种时,停止调用序列生成动作。
本发明实施例中,通过判断当前方法为原生方法,或当前方法为再次被调用的方法,或当前方法为不再调用其他方法的方法,来确定是否结束调用序列的生成动作,保证了调用序列生成的准确性。
在本发明的另一个实施例中,所述根据所述目标程序中的各个类分别得到的调用序列集合,生成所述目标程序的调用序列集合,包括:
判断第一调用序列是否为其他调用序列的子集;其中,所述第一调用序列是所述目标程序中的各个类分别得到的调用序列集合中的任意一个调用序列;
在所述第一调用序列是其他调用序列的子集的情况下,合并所述第一调用序列。
在本实施例中,由于在生成调用序列时,调用序列开始节点所对应的方法可能被其他方法所调用,即该开始节点可能已经存在于其他调用序列中,因此,不同的调用序列可能存在重复的部分。
当得到的第一调用序列为目标程序中其他调用序列的子集时,将该调用序列合并到其他调用序列中。假如第一调用序列为b-c-d,而其他调用序列中有一个调用序列为a-b-c-d-f-g,直接将调用序列b-c-d合并到调用序列a-b-c-d-f-g中,可见,第一调用序列是其他调用序列的子集时,合并第一调用序列。若其他调用序列中也存在属于别的调用序列子集的情况,也对其进行合并处理。需要说明的是,在本发明实施例中需要对属于子集的调用序列进行合并处理,在其他实施例中,基于实际需要,如反射调用的需求,可以不对其进行合并处理。
本发明实施例中,通过对调用序列进行相应的合并处理,能够精简目标程序的调用序列集合,提高调用序列集合的准确性。
在本发明的另一个实施例中,所述生成目标程序的调用序列之后,方法还包括:
根据所述目标程序的调用序列构建白名单规则。
具体地,白名单的概念与“黑名单”相对应,若设立了白名单规则,则在白名单中的用户(或IP地址、IP包、邮件等)会优先通过,不会被拒,安全性和快捷性大大提高。
在本实施例中,根据得到的目标程序的调用序列构建白名单规则,如假设目标程序得到的一条调用序列为a-b-c-d-f-g,将该调用序列包含在白名单规则内。当一个程序在运行过程中得到的调用序列为b-c-d时,正好属于预设的白名单规则,系统则直接对该程序放行处理。本发明能够在不运行目标程序的情况下生成调用序列,构建可信的白名单用于白规则防护,提高安全防护的可靠性的同时提高了系统处理的速度。
图2为本发明实施例提供的一种调用序列生成装置,如图2所示,本发明实施例提供的调用序列生成装置,包括:
获取模块201,用于获取目标程序的字节码文件;
解析模块202,用于对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息;
生成模块203,用于根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合;其中,目标程序的任意一条调用序列是以所述目标程序中的一个方法作为开始节点,以原生方法或再次被调用的方法或不再调用其他方法的方法作为结束节点的节点序列,且所述调用序列中的前一节点所对应的方法调用所述调用序列中的后一节点所对应的方法。
本发明实施例提供的调用序列生成装置,能够在不运行目标程序的情况下生成调用序列,为后续根据调用序列构建可信的白名单提供基础,有助于提高安全防护的可靠性。
进一步,所述解析模块202还用于:
对标准方法调用指令进行过滤,得到第一方法内调用其他方法的指针;其中,所述第一方法为第一类所包含方法中的任意一个;
根据所述指针在字节码文件常量池中寻找调用方法的定义,得到所述第一方法对其他方法的调用关系信息。
本发明提供的调用序列生成装置,能够迅速确定出第一方法对其他方法的调用关系信息,操作简单方便,提高处理速度。
进一步,所述生成模块203还用于:
以第一类中的任意一个方法作为调用序列的开始节点,根据所述方法与其他方法之间的调用关系信息,依次确定调用序列的下一个节点,直至当前节点所对应的方法为原生方法或再次被调用的方法或不再调用其他方法的方法,结束调用序列的生成过程,得到所述第一类中的一个调用序列;其中,所述第一类为所述目标程序中的任意一个类;
对第一类所包含的所有方法进行遍历,得到所述第一类的调用序列集合;
根据所述目标程序中的各个类分别得到的调用序列集合,生成所述目标程序的调用序列集合。
本发明提供的调用序列生成装置,根据调用关系信息进行遍历,提高调用序列生成的准确性。
进一步,所述生成模块203还用于:
将第二方法作为当前方法;其中,所述第二方法为第一类所包含方法中的任意一个;
判断当前方法是否调用其他方法、是否是原生方法以及是否是再次被调用的方法;
在当前方法不是原生方法、且当前方法不是再次被调用的方法、且当前方法调用其他方法的情况下,记录当前方法与当前方法所调用的方法之间的调用关系信息,然后将当前方法所调用的方法作为当前方法,重新执行判断当前方法是否调用其他方法、是否是原生方法以及是否是再次被调用的方法的步骤;
在当前方法是原生方法、或当前方法是再次被调用的方法、或当前方法不再调用其他方法的情况下,根据所记录的当前方法与当前方法所调用的方法之间的调用关系信息,得到以所述第一方法为开始节点、以所述原生方法或再次被调用的方法或不再调用其他方法的方法为结束节点的调用序列。
本发明提供的调用序列生成装置,通过判断当前方法为原生方法,或当前方法为再次被调用的方法,或当前方法为不再调用其他方法的方法,来确定是否结束调用序列的生成动作,保证了调用序列生成的准确性。
进一步,所述生成模块203还用于:
判断第一调用序列是否为其他调用序列的子集;其中,所述第一调用序列是所述目标程序中的各个类分别得到的调用序列集合中的任意一个调用序列;
在所述第一调用序列是其他调用序列的子集的情况下,合并所述第一调用序列。
本发明提供的调用序列生成装置,通过对调用序列进行相应的合并处理,能够精简目标程序的调用序列集合,提高调用序列集合的准确性。
进一步,所述调用序列生成装置,还包括构建模块,所述构建模块用于:
根据所述目标程序的调用序列构建白名单规则。
本发明提供的调用序列生成装置,能够在不运行目标程序的情况下生成调用序列,根据调用序列构建可信的白名单用于白规则防护,提高安全防护的可靠性的同时提高了系统处理的速度。
由于本发明实施例所述装置与上述实施例所述方法的原理相同,对于更加详细的解释内容在此不再赘述。
图3为本发明实施例中提供的电子设备实体结构示意图,如图3所示,本发明提供一种电子设备,包括:处理器(processor)301、存储器(memory)302和总线303;
其中,处理器301、存储器302通过总线303完成相互间的通信;
处理器301用于调用存储器302中的程序指令,以执行上述各方法实施例中所提供的方法,例如包括:获取目标程序的字节码文件;对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息;根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合;其中,目标程序的任意一条调用序列是以所述目标程序中的一个方法作为开始节点,以原生方法或再次被调用的方法或不再调用其他方法的方法作为结束节点的节点序列,且所述调用序列中的前一节点所对应的方法调用所述调用序列中的后一节点所对应的方法。
本发明实施例中提供一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使所述计算机执行上述各方法实施例中所提供的方法,例如包括:获取目标程序的字节码文件;对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息;根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合;其中,目标程序的任意一条调用序列是以所述目标程序中的一个方法作为开始节点,以原生方法或再次被调用的方法或不再调用其他方法的方法作为结束节点的节点序列,且所述调用序列中的前一节点所对应的方法调用所述调用序列中的后一节点所对应的方法。
本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各实施例所提供的方法,该方法包括:获取目标程序的字节码文件;对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息;根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合;其中,目标程序的任意一条调用序列是以所述目标程序中的一个方法作为开始节点,以原生方法或再次被调用的方法或不再调用其他方法的方法作为结束节点的节点序列,且所述调用序列中的前一节点所对应的方法调用所述调用序列中的后一节点所对应的方法。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例中所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种调用序列生成方法,其特征在于,包括:
获取目标程序的字节码文件;
对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息;
根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合;其中,目标程序的任意一条调用序列是以所述目标程序中的一个方法作为开始节点,以原生方法或再次被调用的方法或不再调用其他方法的方法作为结束节点的节点序列,且所述调用序列中的前一节点所对应的方法调用所述调用序列中的后一节点所对应的方法。
2.根据权利要求1所述的调用序列生成方法,其特征在于,所述对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,包括:
对标准方法调用指令进行过滤,得到第一方法内调用其他方法的指针;其中,所述第一方法为第一类所包含方法中的任意一个;
根据所述指针在字节码文件常量池中寻找调用方法的定义,得到所述第一方法对其他方法的调用关系信息。
3.根据权利要求1所述的调用序列生成方法,其特征在于,所述根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合,包括:
以第一类中的任意一个方法作为调用序列的开始节点,根据所述方法与其他方法之间的调用关系信息,依次确定调用序列的下一个节点,直至当前节点所对应的方法为原生方法或再次被调用的方法或不再调用其他方法的方法,结束调用序列的生成过程,得到所述第一类中的一个调用序列;其中,所述第一类为所述目标程序中的任意一个类;
对第一类所包含的所有方法进行遍历,得到所述第一类的调用序列集合;
根据所述目标程序中的各个类分别得到的调用序列集合,生成所述目标程序的调用序列集合。
4.根据权利要求3所述的调用序列生成方法,其特征在于,所述以第一类中的任意一个方法作为调用序列的开始节点,根据所述方法与其他方法之间的调用关系信息,依次确定调用序列的下一个节点,直至当前节点所对应的方法为原生方法或再次被调用的方法或不再调用其他方法的方法,结束调用序列的生成过程,得到所述第一类中的一个调用序列,包括:
将第二方法作为当前方法;其中,所述第二方法为第一类所包含方法中的任意一个;
判断当前方法是否调用其他方法、是否是原生方法以及是否是再次被调用的方法;
在当前方法不是原生方法、且当前方法不是再次被调用的方法、且当前方法调用其他方法的情况下,记录当前方法与当前方法所调用的方法之间的调用关系信息,然后将当前方法所调用的方法作为当前方法,重新执行判断当前方法是否调用其他方法、是否是原生方法以及是否是再次被调用的方法的步骤;
在当前方法是原生方法、或当前方法是再次被调用的方法、或当前方法不再调用其他方法的情况下,根据所记录的当前方法与当前方法所调用的方法之间的调用关系信息,得到以所述第一方法为开始节点、以所述原生方法或再次被调用的方法或不再调用其他方法的方法为结束节点的调用序列。
5.根据权利要求3所述的调用序列生成方法,其特征在于,所述根据所述目标程序中的各个类分别得到的调用序列集合,生成所述目标程序的调用序列集合,包括:
判断第一调用序列是否为其他调用序列的子集;其中,所述第一调用序列是所述目标程序中的各个类分别得到的调用序列集合中的任意一个调用序列;
在所述第一调用序列是其他调用序列的子集的情况下,合并所述第一调用序列。
6.根据权利要求1至4任一项所述的调用序列生成方法,其特征在于,所述生成目标程序的调用序列之后,方法还包括:
根据所述目标程序的调用序列构建白名单规则。
7.一种调用序列生成装置,其特征在于,包括:
获取模块,用于获取目标程序的字节码文件;
解析模块,用于对所述目标程序的字节码文件进行解析,得到所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息;
生成模块,用于根据所述目标程序中所包含的各个类中的方法与其他方法之间的调用关系信息,生成目标程序的调用序列集合;其中,目标程序的任意一条调用序列是以所述目标程序中的一个方法作为开始节点,以原生方法或再次被调用的方法或不再调用其他方法的方法作为结束节点的节点序列,且所述调用序列中的前一节点所对应的方法调用所述调用序列中的后一节点所对应的方法。
8.一种电子设备,其特征在于,包括:处理器、存储器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至6中任一项所述调用序列生成方法的步骤。
9.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至6中任一项所述调用序列生成方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述调用序列生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111165509.8A CN114065197A (zh) | 2021-09-30 | 2021-09-30 | 调用序列生成方法、装置、电子设备、存储介质及产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111165509.8A CN114065197A (zh) | 2021-09-30 | 2021-09-30 | 调用序列生成方法、装置、电子设备、存储介质及产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114065197A true CN114065197A (zh) | 2022-02-18 |
Family
ID=80234137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111165509.8A Pending CN114065197A (zh) | 2021-09-30 | 2021-09-30 | 调用序列生成方法、装置、电子设备、存储介质及产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114065197A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117395071A (zh) * | 2023-11-16 | 2024-01-12 | 南方电网数字电网集团信息通信科技有限公司 | 一种异常检测方法、装置、设备及存储介质 |
-
2021
- 2021-09-30 CN CN202111165509.8A patent/CN114065197A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117395071A (zh) * | 2023-11-16 | 2024-01-12 | 南方电网数字电网集团信息通信科技有限公司 | 一种异常检测方法、装置、设备及存储介质 |
CN117395071B (zh) * | 2023-11-16 | 2024-05-14 | 南方电网数字电网集团信息通信科技有限公司 | 一种异常检测方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106547527B (zh) | 一种JavaScript文件构建方法及装置 | |
CN112394942B (zh) | 基于云计算的分布式软件开发编译方法及软件开发平台 | |
CN110442330B (zh) | 列表组件转换方法、装置、电子设备及存储介质 | |
CN110502227B (zh) | 代码补全的方法及装置、存储介质、电子设备 | |
CN106547520B (zh) | 一种代码路径分析方法及装置 | |
CN107885501B (zh) | 获取Android中组件相互引用关系的方法及装置 | |
CN111079408A (zh) | 一种语种识别方法、装置、设备及存储介质 | |
CN110795069A (zh) | 代码分析方法、智能终端及计算机可读存储介质 | |
EP4111302A1 (en) | Detection of runtime errors using machine learning | |
CN113703779B (zh) | 一种跨平台的多语言编译方法和超轻量物联网虚拟机 | |
CN113885880A (zh) | 一种多规则匹配方法、装置及设备 | |
CN114065197A (zh) | 调用序列生成方法、装置、电子设备、存储介质及产品 | |
CN115292203B (zh) | 一种源代码分析方法及装置 | |
CN113138913A (zh) | Java代码注入检测方法、装置、设备及存储介质 | |
CN116185391A (zh) | 应用程序编程接口生成方法、装置、设备及存储介质 | |
CN116069324A (zh) | 一种基于Vue的动态表单构建方法及装置 | |
CN111768767B (zh) | 用户标签提取方法和装置、服务器、计算机可读存储介质 | |
CN110489124B (zh) | 源代码执行方法、装置、存储介质及计算机设备 | |
CN111151008B (zh) | 游戏运营数据的校验方法、装置、配置后台及介质 | |
CN109284097B (zh) | 实现复杂数据分析的方法、设备、系统及存储介质 | |
CN113806331A (zh) | 数据处理方法及装置 | |
CN110990271A (zh) | 代码性能检测方法、装置、设备及存储介质 | |
CN116560665B (zh) | 数据生成和处理的方法和装置、信用卡营销规则引擎系统 | |
CN111399844B (zh) | 安全编译方法、装置、电子设备及计算机可读介质 | |
CN116974653B (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 |