【技术实现步骤摘要】
SSA结构解析方法、装置、电子设备和存储介质
本申请涉及程序语言
,具体而言,涉及一种SSA结构解析方法、装置、电子设备和存储介质。
技术介绍
随着网络技术的不断发展,通过不同类型的程序语言编写形成的应用程序也日益增多。为了保证应用程序的使用体验,在发布新的应用程序之前,通常会对该应用程序进行漏洞分析。白盒测试技术是一种常用的漏洞分析技术,白盒测试技术一般可被分为静态分析和动态分析两类技术。静态分析主要有:控制流分析技术、数据流分析技术、信息流分析技术。在使用数据流分析技术进行白盒测试时,需要先将源程序解析为数据流,再对数据流进行分析。目前,现有的白盒测试软件在测试golang语言时,无法将具体的代码内容与具体的包对应起来,导致在对数据流分析时,无法进行跨包数据流追踪,因此,只能在golang语言的单文件包中生效。
技术实现思路
有鉴于此,本申请的目的在于提供一种SSA结构解析方法、装置、电子设备和存储介质,实现源代码的跨包数据流检测。第一方面,本专利技术实施例提供一种程序语言的SSA结构解析方法,应用于电子设备,方法包括:根据数据流解析规则,划分出多个CFG节点;针对每一个CFG节点,从程序语言的源代码的数据类型中查找与各CFG节点对应的目标节点,并抽取目标节点中的信息写入与该目标节点对应的CFG节点中,获得解析后的CFG节点,其中,源代码的数据类型包括多个AST节点类型及多个SSA节点类型;将解析后的CFG节点进行关系的关联,以获得可用于数 ...
【技术保护点】
1.一种SSA结构解析方法,应用于电子设备,其特征在于,所述方法包括:/n根据数据流解析规则,划分出多个CFG节点;/n针对每一个CFG节点,从程序语言的源代码的数据类型中查找与各CFG节点对应的目标节点,并抽取所述目标节点中的信息写入与该目标节点对应的CFG节点中,获得解析后的CFG节点,其中,所述源代码的数据类型包括多个AST节点类型及多个SSA节点类型;/n将所述解析后的CFG节点进行关系的关联,以获得可用于数据流分析的CFG结构数据。/n
【技术特征摘要】
1.一种SSA结构解析方法,应用于电子设备,其特征在于,所述方法包括:
根据数据流解析规则,划分出多个CFG节点;
针对每一个CFG节点,从程序语言的源代码的数据类型中查找与各CFG节点对应的目标节点,并抽取所述目标节点中的信息写入与该目标节点对应的CFG节点中,获得解析后的CFG节点,其中,所述源代码的数据类型包括多个AST节点类型及多个SSA节点类型;
将所述解析后的CFG节点进行关系的关联,以获得可用于数据流分析的CFG结构数据。
2.根据权利要求1所述的方法,其特征在于,所述将所述解析后的CFG节点进行关系的关联,包括:
根据所述源代码解析所述CFG节点的对应关系,连接所述CFG节点;
根据所述源代码的上下文的执行逻辑连接CFG边;
根据所述CFG节点之间的包含关系连接AST边。
3.根据权利要求2所述的方法,其特征在于,所述根据所述源代码解析所述CFG节点的对应关系,连接所述CFG节点,包括:
循环遍历所述源代码中所有CFG节点的对应关系,并将所述CFG节点进行连接与对应。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据漏洞分析规则及数据流分析方法对所述CFG结构数据进行漏洞分析,获得漏洞检测结果。
5.根据权利要求1所述的方法,其特征在于,在针对每一个CFG节点,从程序语言的源代码的数据类型中查找与各CFG节点对应的目标节点之前,所述方法还包括:
对所述源代码进行分析,获得对应的程序语言类型,其中,所述程序语言类型包括go语言;
根据所述程序语言类型将所述源代码输入至对应的解析引擎中进行解析,其中,所述解析引擎包括go语言解析引擎。
6.根据权利要求5所述的方法,其特征在于,所述根据所述程序语言类型将所述源代码输入至对应的解析引擎中进行解析,包括:
对所述源代码进行词法分析及语法分析,获得该源代码的SSA结构数据。
7.根据权利要求6所述的方法,其特征在于,对所述源代码进行词法分析及语法分析,获得该源代码的SSA结构数据,包括:
对所述源代码进行词法解析,转换成对应的标记序列Token,其中,所述标记序列Token包括标识符、关键字、分隔符、操作符、文字和注释中的至少一种;
对所述标记序列Token进行语法分析,根据语法特征将标记序列Token构建为抽象语法树AST;
根据所述抽象语法树,结合源代码的语法特征,将所述抽象语法树AST转换为SSA结构数据。
8.一种SSA结构解析装置,应用于电子设备,其特征在于,所述装置包括:
CFG节点划分模块,用于根据数据流解析规则,划分出多个CFG节点;
解析模块,用于针对每一个C...
【专利技术属性】
技术研发人员:张煜昆,
申请(专利权)人:北京嘀嘀无限科技发展有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。