本发明涉及抽象语法树,尤其涉及一种基于抽象语法树的代码检测方法、装置、设备及存储介质。
背景技术:
1、随着网络技术的飞速发展,网络技术不断成熟,网上冲浪已经成为人们日常生活中的一个重要组成部分。在享受互联网带来的各种方便之处的同时,安全问题也变得越来越重要,例如,恶意代码的入侵,通过潜伏在计算机系统中实施破坏或者盗取信息,给计算机的使用带来较大的危害,例如,通过攻击系统造成系统瘫痪或者操作异常、危害数据文件的安全存储和使用、肆意占用资源影响系统网络的性能以及泄露文件、配置以及隐私等,因此,在将代码程序在计算机上运行之前,对代码程序的检测就显得尤其重要,而目前检测代码程序的常用方式是通过动态沙箱在运行过程动态行为特征监测和分析代码以实现对代码程序的检测,但是通过上述方式检测代码程序的准确性较低。
2、上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
技术实现思路
1、本发明的主要目的在于提供一种基于抽象语法树的代码检测方法、装置、设备及存储介质,旨在解决现有技术无法有效检测程序代码的准确性的技术问题。
2、为实现上述目的,本发明提供了一种基于抽象语法树的代码检测方法,所述方法包括以下步骤:
3、获取待检测程序代码和目标虚拟机架构;
4、根据所述目标虚拟机架构得到当前环境作用域和当前节点执行动作;
5、根据所述当前环境作用域通过所述当前节点执行动作对所述待检测程序代码进行检测。
6、可选地,所述根据所述目标虚拟机架构得到当前环境作用域和当前节点执行动作,包括:
7、根据所述目标虚拟机架构得到对应的执行功能;
8、根据所述执行功能对所述目标虚拟机架构进行划分,得到当前环境作用域和当前节点执行动作。
9、可选地,所述根据所述当前环境作用域通过所述当前节点执行动作对所述待检测程序代码进行检测,包括:
10、根据所述当前环境作用域得到目标维护成员变量;
11、根据所述当前节点执行动作得到对应的执行器子类;
12、根据所述目标维护成员变量通过所述执行器子类对所述待检测程序代码进行检测。
13、可选地,所述根据所述目标维护成员变量通过所述执行器子类对所述待检测程序代码进行检测,包括:
14、根据所述目标维护成员变量对所述待检测程序代码进行提取,得到变量参数、实例体、定义函数以及作用域指针;
15、对所述变量参数、实例体、定义函数以及作用域指针进行设置,得到待检测节点集合;
16、通过所述执行器子类对所述待检测节点集合进行检测。
17、可选地,所述根据所述目标维护成员变量对所述待检测程序代码进行提取,得到变量参数、实例体、定义函数以及作用域指针,包括:
18、根据所述目标维护成员变量得到stack成员变量、memory成员变量、function成员变量以及scope成员变量;
19、通过所述stack成员变量对所述待检测程序代码进行提取,得到变量参数;
20、通过所述memory成员变量对所述待检测程序代码进行提取,得到实例体;
21、通过所述function成员变量对所述待检测程序代码进行提取,得到定义函数;
22、通过所述scope成员变量对所述待检测程序代码进行提取,得到作用域指针。
23、可选地,所述对所述变量参数、实例体、定义函数以及作用域指针进行设置,得到待检测节点集合,包括:
24、通过预设变量定义策略对所述变量参数进行解析,得到当前常量参数、当前变量参数、类对象名称以及数组变量名称;
25、对所述实例体进行识别,得到数组体和类实例体;
26、根据所述数组体和类实例体构建与当前常量参数、当前变量参数、类对象名称以及数组变量名称之间的位置索引;
27、按照所述位置索引对所述当前常量参数、当前变量参数、类对象名称、数组变量名称、数组体、类实例体、定义函数以及作用域指针进行设置,得到待检测节点集合。
28、可选地,所述按照所述位置索引对所述当前常量参数、当前变量参数、类对象名称、数组变量名称、数组体、类实例体、定义函数以及作用域指针进行设置,得到待检测节点集合,包括:
29、按照所述位置索引对所述当前常量参数当前变量参数、类对象名称、数组变量名称、数组体、类实例体、定义函数以及作用域指针进行设置,得到目标嵌套关系;
30、根据所述目标嵌套关系得到待检测节点集合。
31、此外,为实现上述目的,本发明还提出一种基于抽象语法树的代码检测设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于抽象语法树的代码检测程序,所述基于抽象语法树的代码检测程序配置为实现如上文所述的基于抽象语法树的代码检测方法的步骤。
32、此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有基于抽象语法树的代码检测程序,所述基于抽象语法树的代码检测程序被处理器执行时实现如上文所述的基于抽象语法树的代码检测方法的步骤。
33、本发明通过获取待检测程序代码和目标虚拟机架构;根据所述目标虚拟机架构得到当前环境作用域和当前节点执行动作;根据所述当前环境作用域通过所述当前节点执行动作对所述待检测程序代码进行检测;由于本发明是通过目标虚拟机架构得到当前环境作用域和当前节点执行动作,然后在当前环境作用域下,通过述当前节点执行动作对待检测程序代码进行检测,相较于现有技术动态沙箱检测程序代码,能够有效提高检测程序代码的准确性。
1.一种基于抽象语法树的代码检测方法,其特征在于,所述基于抽象语法树的代码检测方法包括以下步骤:
2.如权利要求1所述的基于抽象语法树的代码检测方法,其特征在于,所述根据所述目标虚拟机架构得到当前环境作用域和当前节点执行动作,包括:
3.如权利要求1所述的基于抽象语法树的代码检测方法,其特征在于,所述根据所述当前环境作用域通过所述当前节点执行动作对所述待检测程序代码进行检测,包括:
4.如权利要求3所述的基于抽象语法树的代码检测方法,其特征在于,所述根据所述目标维护成员变量通过所述执行器子类对所述待检测程序进行检测,包括:
5.如权利要求4所述的基于抽象语法树的代码检测方法,其特征在于,所述根据所述目标维护成员变量对所述待检测程序代码进行提取,得到变量参数、实例体、定义函数以及作用域指针,包括:
6.如权利要求4所述的基于抽象语法树的代码检测方法,其特征在于,所述对所述变量参数、实例体、定义函数以及作用域指针进行设置,得到待检测节点集合,包括:
7.如权利要求6所述的基于抽象语法树的代码检测方法,其特征在于,所述按照所述位置索引对所述当前常量参数、当前变量参数、类对象名称、数组变量名称、数组体、类实例体、定义函数以及作用域指针进行设置,得到待检测节点集合,包括:
8.一种基于抽象语法树的代码检测装置,其特征在于,所述基于抽象语法树的代码检测装置包括:
9.一种基于抽象语法树的代码检测设备,其特征在于,所述基于抽象语法树的代码检测设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于抽象语法树的代码检测程序,所述基于抽象语法树的代码检测程序配置有实现如权利要求1至7中任一项所述的基于抽象语法树的代码检测方法。
10.一种存储介质,其特征在于,所述存储介质上存储有基于抽象语法树的代码检测程序,所述基于抽象语法树的代码检测程序被处理器执行时实现如权利要求1至7中任一项所述的基于抽象语法树的代码检测方法。