程序执行路径中程序变量的约束条件提取方法及设备技术

技术编号:39844583 阅读:21 留言:0更新日期:2023-12-29 16:35
本发明专利技术公开了一种程序执行路径中程序变量的约束条件提取方法及设备,包括:获取函数控制流图和起始基本块;将每个基本块对应一个状态,构建基本块

【技术实现步骤摘要】
程序执行路径中程序变量的约束条件提取方法及设备


[0001]本专利技术属于软件检测
,本专利技术涉及一种程序执行路径中程序变量的约束条件提取方法及设备


技术介绍

[0002]控制流图(
Control Flow Graph, CFG
)是程序的抽象表现,反映了程序中基本块所有可能的执行路径,是二进制程序分析的重要部分

在控制流图中,将基本块中包含条件语句,且具有多条跳转分支的基本块称为谓词基本块

在程序执行过程中,当执行到一个谓词基本块时,程序会根据条件语句具体选择相应的分支连接的基本块继续执行

这种分支执行结构的存在,会使得程序的执行流程变得复杂,将增加程序分析的难度

[0003]约束条件(
Constraints
)是对变量之间关系的限制条件,通常以方程组或不等式组的形式表示

这些条件可以限制变量的取值范围和描述变量之间的依赖关系

约束条件提取是程序高级别检测分析的基础,其本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.
一种程序执行路径中程序变量的约束条件提取方法,其特征在于,包括以下步骤:
S01
:获取函数控制流图和起始基本块;
S02
:将每个基本块对应一个状态,构建基本块

状态字典;
S03
:根据控制流图的控制流关系,采用广度优先的策略进行状态步进,顺序执行对应基本块中的代码,维护基本块

状态字典;
S04
:如果当前状态对应的基本块为谓词基本块,跟踪其每个分支的跳转,并在跳转到达后继基本块时,生成对应状态,并提取跳转的约束条件
。2.
根据权利要求1所述的程序执行路径中程序变量的约束条件提取方法,其特征在于,所述步骤
S02
中状态包括基本块被执行时的内存

寄存器

堆栈

各种标志位信息及注入的符号变量
。3.
根据权利要求1所述的程序执行路径中程序变量的约束条件提取方法,其特征在于,所述步骤
S02
中还包括,构建状态队列,所述状态队列用于存储将要访问的基本块的状态,并采用先进先出的方式进行队列访问
。4.
根据权利要求3所述的程序执行路径中程序变量的约束条件提取方法,其特征在于,在状态队列为空时,停止状态步进,并进行基本块覆盖率检测,检查是否存在未被访问的基本块;如果存在未被访问的基本块,以选取的未访问基本块为起始基本块,生成对应状态并加入状态队列,继续进行状态步进
。5.
根据权利要求1所述的程序执行路径中程序变量的约束条件提取方法,其特征在于,所述步骤
S04
中谓词基本块的识别方法包括:对用户代码基本块集合中的基本块进行判断,如果基本块在控制流图中存在多个后继基本块并且该基本块中包含有条件跳转指令,且在控制流图上的出度大于...

【专利技术属性】
技术研发人员:乐德广董琴平牛传军李亚杰阚志刚
申请(专利权)人:常熟理工学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1